Git Stash实践操作

不知道大家有没有遇到这样的情况:为了本地部署测试环境,修改了某些文件,然后去git pull的时候,发现仓库里的代码和本地修改的文件有冲突。这时大家会怎么做?

  • 方法一:把本地修改的git add,push到仓库去。
  • 方法二:把本地修改的git checkout,放弃本地修改。

上面两种常规做法都是可行的。但是如果既不想把这些修改放到仓库,又不想每次拉代码前放弃本地修改呢?这时候当当当当~~~git stash可以帮上忙!

我们先来看看git stash有哪些命令吧:

stash的意思是: 存放; 贮藏; 隐藏。那么我们可以理解了:这个命令就是要执行一个存储相关的操作。

接下来我们一步步通过实践来看看git stash是如果工作的吧。

一、准备实践环境,制造文件merge冲突

  • 在本地修改了两个文件“a.txt”和“c.txt”。还新加了一个文件“b.txt”,删除了“d.txt”.
  • 同时在仓库里直接修改了"a.txt"

二、执行git stash save操作

  • 执行了git stash save之后,可以看到将修改的文件存储到了堆栈里。
  • 再次git status,发现之前本地修改的内容已经没有了。(这里也可以看出git stash不会把本地新增的文件存储进去,而只是存储修改的和删除的文件

三、拉新代码后将存储的本地文件覆盖回来

  • 拉新代码:git pull
  • 再将上一步存储的文件pop出来 (git stash pop
  • 发现冲突,按照常规的冲突解决办法解决冲突即可。(这种情况下stash的备份还是存在,需要执行git stash drop stash@{0}即可

完成!

 

温馨提示:

git stash pop:执行完成后没有冲突的情况下,stash栈里会清空;

git stash apply stash@{n}: 会拿取指定的栈内备份而不删除栈内数据。

根据需求用即可。

posted @ 2020-08-13 20:47  遗忘的大脑  阅读(331)  评论(0编辑  收藏  举报