前言
对于Git的实战补充推荐阅读:Git 实战场景过程(工作总结篇)
1. 基本知识
git stash 是 Git 中用于临时保存工作目录和暂存区修改的命令
允许开发人员在不提交当前更改的情况下切换分支或进行其他工作,然后稍后恢复这些修改
基本的命令如下:
- 保存当前修改:(将会保存当前工作目录和暂存区的修改,并将工作目录恢复到上一次提交的状态)
git stash
- 查看已保存的修改:
列出所有已保存的stash
每个stash都有一个唯一的标识符(类似于 stash@{0})
git stash list
- 恢复已保存的修改:
将应用指定的stash
默认情况下,它会应用最近一次的stash(即 stash@{0})
git stash apply [<stash>]
- 恢复并删除已保存的修改:(应用最近一次的stash,并将其从stash列表中删除)
git stash pop
截图如下:
- 删除一个已保存的stash:
删除指定的stash
如果没有指定,将删除最近一次的stash
git stash drop [<stash>]
- 删除所有已保存的stash:
清空所有已保存的stash
git stash clear
大致截图如下:
如果是删除,则会删除最近的一次:
2. 延伸拓展
-
保存部分修改
仅保存工作目录的修改(不包括暂存区的修改):git stash push -k
仅保存暂存区的修改(不包括工作目录的修改):git stash push -m
-
带有消息的stash
为每个stash添加一个描述性的消息,以便于记忆:git stash push -m "description"
-
应用特定的stash
多个stash,并且想应用特定的一个:git stash apply stash@{2}
-
创建分支并应用stash
创建一个新的分支,并在这个分支上应用一个stash:git stash branch <branchname> [<stash>]
-
查看stash的内容
查看某个stash中的具体修改:git stash show [<stash>]
查看详细的diff信息,可以加上 -p 参数:git stash show -p [<stash>]
-
stash应用到不同的工作目录
将一个stash应用到不同的分支或工作目录:
git checkout <other_branch>
git stash apply [<stash>]
3. 总结
- 冲突处理:在应用stash时,如果与当前工作目录的内容有冲突,Git 会提示冲突,需要手动解决冲突
- 数据安全:虽然 git stash 是一种方便的临时保存方式,但不应该长期依赖于它来保存重要的修改
建议定期提交代码,以确保数据安全