git stash 的两种应用场景

最近git用的比较多,因为是实验室多个人维护一个仓库,经常会有合并冲突的情况,就学习了一下git stash的用法,目前有两个场景非常常用:

1. 有人与我改动同一分支

  我在本地修改好后,发现远程分支已经被改动了,此时我本地也被改动了就造成了冲突,无法push或者pull。

  此时可以使用git stash:

1 git stash //把本地的改动暂存起来
2 git pull  //拉取远端分支(此时本地分支会回滚到上次commit的情况,新的改动都存在了stash中)
3 git stash pop // 将栈顶改动重新加回本地分支,就可以继续修改了,当然,如果改好了就是add,commit,push啥的。。

2. 不小心改动了其他分支,例如忘记切换,直接在master分支上做改动,这里假设我的分支是test分支

git stash          //把本地当前改动暂存起来,此时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 可以清空 stash list

就我个人而言,git stash pop就已经满足日常需要了,所以我的stash list里日常只有编号0 和空

猜你喜欢

转载自www.cnblogs.com/sorasing/p/11975748.html