临时保存的本地变更,储藏位置在 Git 栈中,与分支无关,所有分支共用一个储藏栈。
-
临时保存工作目录中已跟踪文件和暂存区的修改,以供后续切换回当前分支继续使用:
git stash
-
同时保存工作目录未跟踪和已跟踪文件和暂存区的修改:
git stash -u # 完整命令参数写法: git stash --include-untracked
-
查看临时保存记录,保存了几次就显示几条数据:
$ git stash list # 执行结果: stash@{0}: WIP on master: d9b3b91 提交信息. stash@{1}: WIP on master: d9b3b91 提交信息.
-
临时保存并添加备注信息:
# 储藏工作目录中已跟踪文件和暂存区的修改 $ git stash save '修改的已跟踪文件' # 储藏工作目录中未跟踪的文件 $ git stash save '添加的未跟踪文件' -u # 查看临时保存记录 $ git stash list stash@{0}: On master: 添加的未跟踪文件 stash@{1}: On master: 修改的已跟踪文件
-
储藏时只保存工作目录中的变更,保持已暂存的变更在暂存区中不动:
git stash -k # 完整命令参数写法: git stash --keep-index
-
恢复上次临时保存的内容到工作目录,但在暂存区储藏的内容不会重新暂存,并在储藏栈中删除,
git stash list
显示几条记录就可以执行此命令恢复几次:# 倒序恢复:stash@{1} git stash pop # 最后一条:stash@{0} git stash pop
-
恢复上次临时保存的内容到工作目录和暂存区,不会在储藏栈中自动删除:
git stash apply --index
-
手动删除储藏栈中的无用内容,如通过
git stash apply
恢复后的遗留内容:# 多次执行逐条删除 stash@{0} git stash drop # 删除指定记录 git stash drop stash@{0}
-
交互式储藏,由 Git 询问对每个变更的处理方式:
$ git stash --patch # 执行效果: diff --git a/README.md b/README.md index b8f1529..d5c5175 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ 1 2 3 + git diff git diff2 git diff3 Stash this hunk [y,n,q,a,d,e,?]?
-
恢复临时存储的内容到一个新的分支,并在储藏栈中删除,以避免恢复时发生冲突:
$ stash branch StashBranch # 执行结果 Switched to a new branch 'StashBranch' On branch StashBranch Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: README.md no changes added to commit (use "git add" and/or "git commit -a") Dropped refs/stash@{0} (e869a51f180db78e3520811a94a1e672d8f7cb71)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于