文章目录
一、git stash
能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。
总的来说,git stash
命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash
中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git stash
作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。
1.1 git stash 两种应用场景
对于多人并行开发,维护同一仓库工作场景,经常会出现文件合并冲突的情况,常见场景如下:
1.1.1 改动同一分支
我在本地修改好后,发现远程分支已经被改动了,此时我本地也被改动了就造成了冲突,无法push
或者pull
。
此时可以使用git stash
:
git stash save "本地缓存内容标识" //把本地的改动暂存起来
;git pull //拉取远端分支(此时本地分支会回滚到上次
commit的情况,新的改动都已保存在了
stash中)
;git stash pop // 将栈顶改动内容重新加回本地分支,就可以继续修改了,当然,如果改好了就是
add,commit,push操作。
1.1.2 不小心改动其他分支
当正在dev
分支上开发某个项目,这时项目中出现一个bug
,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash
命令将修改的内容保存至堆栈区,然后顺利切换到hotfix
分支进行bug
修复,修复完成后,再次切回到dev
分支,从堆栈中恢复刚刚保存的内容。
或者由于疏忽,本应该在dev
分支开发的内容,却在master
上进行了开发,需要重新切回到dev
分支上进行开发,可以用git stash
将内容保存至堆栈中,切回到dev
分支后,再次恢复内容即可。
例如忘记切换分支,直接在master
分支上做改动,这里假设我的分支是test分支。
git stash save "本地缓存内容标识" // 把本地当前改动暂存起来,此时master分支就恢复到了上次拉取时的状态
git checkout test // 切换到需要改动的分支
git stash pop // 将改动pop到自己当前的分支
顾名思义,stash
就是一个栈,把需要暂存的文件存到栈中,把代码恢复到上次拉取的状态以进行操作,而git stash pop
就是让栈顶元素出栈并删除。
git stash apply
则是只取栈顶元素,但是不删除。
这样会有一个显而易见后果,如果我再次执行git stash
,新的改动将会出现在栈顶,栈中元素会越来越多,此时可以使用 git stash list
命令查看栈中元素,此时每个栈中元素会有自己对应的编号。
使用git stash apply stash@{0}
(0可以换成对应编号),来添加不同改动。同样,也可以 git stash drop stash@{0}
来删除对应改动。
git stash clear
可以清空。
最后
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
最后
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】