git merge git pull时候遇到冲突解决办法git stash

Posted NAVYSUMMER

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git merge git pull时候遇到冲突解决办法git stash相关的知识,希望对你有一定的参考价值。

在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息:

error: Your local changes to ‘c/environ.c‘ would be overwritten by merge.  Aborting.
Please, commit your changes or stash them before you can merge.

这个意思是说更新下来的内容和本地修改的内容有冲突,先提交你的改变或者先将本地修改暂时存储起来。

处理的方式非常简单,主要是使用git stash命令进行处理,分成以下几个步骤进行处理。

1、先将本地修改存储起来

$ git stash

这样本地的所有修改就都被暂时存储起来 。

 $ git stash list                 可以看到保存的信息:

技术分享图片

git stash暂存修改

其中[email protected]{0}就是刚才保存的标记。

2、pull内容

暂存了本地修改之后,就可以pull了。

$ git pull

3、还原暂存的内容

$ git stash pop [email protected]{0}

系统提示如下类似的信息:

Auto-merging c/environ.c
CONFLICT (content): Merge conflict in c/environ.c

意思就是系统自动合并修改的内容,但是其中有冲突,需要解决其中的冲突。

4、解决文件中冲突的的部分

打开冲突的文件,会看到类似如下的内容:

 

技术分享图片

git冲突内容


其中Updated upstream 和=====之间的内容就是pull下来的内容,====和stashed changes之间的内容就是本地修改的内容。碰到这种情况,git也不知道哪行内容是需要的,所以要自行确定需要的内容。

 

解决完成之后,就可以正常的提交了。

 

5 删除stashgit stash drop <[email protected]{id}>  如果不加stash编号,默认的就是删除最新的,也就是编号为0的那个,加编号就是删除指定编号的stash。git  stash clear 是清除所有stash,整个世界一下子清净了!

 

6 git stash pop  与 git stash apply <[email protected]{id}> 的区别。

当我使用git stash pop 和 git stash apply 几次以后,我发现stash  list 好像比我预计的多了几个stash。于是我便上网去了解了一下这两个命令的区别。原来git stash pop [email protected]{id}命令会在执行后将对应的stash id 从stash list里删除,而 git stash apply [email protected]{id} 命令则会继续保存stash id。对于有点强迫症的我来说,是容不下越来越多的陈旧stash id 仍然存在的,所以我更习惯于用git stash pop 命令。


以上是关于git merge git pull时候遇到冲突解决办法git stash的主要内容,如果未能解决你的问题,请参考以下文章

git 常见冲突—— git pull遇到报错Your local changes to the following files would be overwritten by merge

idea处理pull冲突

git pull的时候发生冲突的解决方法之“error Your local changes to the following files would be overwritten by merge”

git 要commit之前先pull, 这样做法合理吗?

在Git的PR(Pull Request)提示冲突无法merge合并的解决方案

git pull 冲突怎么修改冲突