目录
- 1. git stash的应用场景
- 2. 常用git stash命令
- 2.1 git stash
- 2.2 git stash save "message"
- 2.3 git stash list
- 2.4 git stash show
- 2.5 git stash show -p
- 2.6 git stash apply
- 2.7 git stash pop
- 2.8 git stash drop stash@{num}
- 2.9 git stash clear
- 3. stash只会保存已存在文件的内容
1. git stash的应用场景
当你正在开发当前项目,并且修改了许多代码,突然这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用 git stash
命令将修改的内容保存至堆栈区,然后进行bug修复,修复完成后,使用 git stash apply
命令从堆栈中恢复刚刚保存的内容。
2. 常用git stash命令
2.1 git stash
将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录
2.2 git stash save “message”
保存时,添加备注信息,方便查找
2.3 git stash list
显示之前stash过的所有列表
2.4 git stash show
显示哪些文件被修改;默认show第一个stash,等价于git stash show stash@{0};如果想要看之前stash的哪些文件被修改,可以使用命令git stash show stash@{num},num是git stash list中显示的数字,例如显示第二个stash中哪些文件做了改变: git stash show stash@{1}
2.5 git stash show -p
显示文件中具体代码的改动;默认show第一个stash,等价于git stash show stash@{0} -p;如果想要看其他stash的改动,可以使用命令git stash show stash@{num} -p,例如第二个:git stash show stash@{1} -p
2.6 git stash apply
将stash保存的内容应用到当前目录,但不会把stash从存储列表中删除(在stash list中会一直存在),默认使用第一个保存,即stash@{0};如果要还原其他的stash,可以使用命令git stash apply stash@{num}, 比如第二个:git stash apply stash@{1}
2.7 git stash pop
将stash保存的内容应用到当前目录,恢复之前缓存的工作目录,会将缓存堆栈中的对应stash删除(即在stash list中删除此stash),默认为第一个stash,即stash@{0};如果要应用并删除其他stash,可以使用命令:git stash pop stash@{num} ,比如应用并删除第二个:git stash pop stash@{1}
git stash apply 和 git stash pop的区别:
共同点:都会应用stash,恢复之前暂存的代码
不同点:apply之后其git stash list中之前的stash记录会一直存在,不会删除;pop之后其git stash list中之前的stash会被删除(pop的意思很简单,就是先弹出,再应用)
2.8 git stash drop stash@{num}
从列表中删除这个stash(num是git stash list中的数字)
2.9 git stash clear
删除所有缓存的stash(即删除git stash list中的列表的所有内容)
3. stash只会保存已存在文件的内容
如果在项目中你新添加了.h或.cpp或其他文件,当你 git stash 的时候,新添加的文件并不会保存,此时你需要先执行 git add . ,然后再去执行 git stash