使用 git 制作工作目录的快照

Ryo*_*oka 7 git git-stash git-merge git-branch

我有时需要制作当前(可能是脏的)工作目录的快照。git stash save -u与我需要的非常相似,但有两个问题:

  1. 我希望我的工作目录保持相同的状态(保持未跟踪的文件不被跟踪)
  2. 如果我需要回到保存的状态(也许一个月后),这并不容易,git stash apply因为我首先需要找到git stash.

我目前有以下适用于我的命令序列,但我想知道是否有更优雅的方法。

# on branch master
git add .
git commit -m "Temporary commit on the original branch"
git checkout -b snapshot_of_master_yyyy-mm-dd-hh-mm-ss HEAD~
git merge master
git checkout master
git reset HEAD^
Run Code Online (Sandbox Code Playgroud)

谢谢大家的回答和解释!我将主要基于@XavierGuihot 的回答来做这样的事情

git stash -u # -u to include untracked files
git checkout -b snapshot_of_master_yyyy-mm-dd-hh-mm-ss
git stash apply
git add --all
git commit -m "Snapshot"
git checkout master
git stash pop --index # --index to recover the state of indexed files
Run Code Online (Sandbox Code Playgroud)

Xav*_*hot 5

您可以存储更改、创建新分支、应用更改、仅在新分支上执行提交,然后再次签出 master,最后再次应用更改。

git stash
git checkout -b snapshot_of_master_yyyy-mm-dd-hh-mm-ss
git stash apply
git add --all
git commit -m "Snapshot"
git checkout master
git stash pop
Run Code Online (Sandbox Code Playgroud)