临时保存的本地变更,储藏位置在 Git 栈中,与分支无关,所有分支共用一个储藏栈。
临时保存工作目录中已跟踪文件和暂存区的修改,以供后续切换回当前分支继续使用:
1git stash
同时保存工作目录未跟踪和已跟踪文件和暂存区的修改:
1git stash -u
2
3# 完整命令参数写法:
4git stash --include-untracked
查看临时保存记录,保存了几次就显示几条数据:
1$ git stash list
2
3# 执行结果:
4stash@{0}: WIP on master: d9b3b91 提交信息.
5stash@{1}: WIP on master: d9b3b91 提交信息.
临时保存并添加备注信息:
1# 储藏工作目录中已跟踪文件和暂存区的修改
2$ git stash save '修改的已跟踪文件'
3
4# 储藏工作目录中未跟踪的文件
5$ git stash save '添加的未跟踪文件' -u
6
7# 查看临时保存记录
8$ git stash list
9stash@{0}: On master: 添加的未跟踪文件
10stash@{1}: On master: 修改的已跟踪文件
储藏时只保存工作目录中的变更,保持已暂存的变更在暂存区中不动:
1git stash -k
2
3# 完整命令参数写法:
4git stash --keep-index
恢复上次临时保存的内容到工作目录,但在暂存区储藏的内容不会重新暂存,并在储藏栈中删除,git stash list
显示几条记录就可以执行此命令恢复几次:
1# 倒序恢复:stash@{1}
2git stash pop
3
4# 最后一条:stash@{0}
5git stash pop
恢复上次临时保存的内容到工作目录和暂存区,不会在储藏栈中自动删除:
1git stash apply --index
手动删除储藏栈中的无用内容,如通过 git stash apply
恢复后的遗留内容:
1# 多次执行逐条删除 stash@{0}
2git stash drop
3
4# 删除指定记录
5git stash drop stash@{0}
交互式储藏,由 Git 询问对每个变更的处理方式:
1$ git stash --patch
2
3# 执行效果:
4diff --git a/README.md b/README.md
5index b8f1529..d5c5175 100644
6--- a/README.md
7+++ b/README.md
8@@ -8,6 +8,7 @@
9 1
10 2
11 3
12+
13 git diff
14 git diff2
15 git diff3
16Stash this hunk [y,n,q,a,d,e,?]?
恢复临时存储的内容到一个新的分支,并在储藏栈中删除,以避免恢复时发生冲突:
1$ stash branch StashBranch
2
3# 执行结果
4Switched to a new branch 'StashBranch'
5On branch StashBranch
6Changes not staged for commit:
7 (use "git add <file>..." to update what will be committed)
8 (use "git restore <file>..." to discard changes in working directory)
9 modified: README.md
10
11no changes added to commit (use "git add" and/or "git commit -a")
12Dropped refs/stash@{0} (e869a51f180db78e3520811a94a1e672d8f7cb71)
内容声明 | |
---|---|
标题: Git 临时储藏本地变更的 stash 命令常见用法 | |
链接: https://zixizixi.cn/git-bash-stash-usage | 来源: iTanken |
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可,转载请保留此声明。
|