Git冲突,pull内容与本地已经有的内容冲突
$ git pull origin master
Username for 'https://git.oschina.net': xxx
From https://git.oschina.net/xxx/gittest
* branch master -> FETCH_HEAD
error: Your local changes to the following files would be overwritten by merge: fff.txt
Please commit your changes or stash them before you merge.
Aborting
Updating 5581e8f..b9123fc
问题解决思路
上面pull 拉下来的东西跟我们本地的内容是有了冲突了,这个时候我们要先暂存,再pull,再恢复暂存的内容,恢复后会把pull下来和本地的同时存在,然后我们自己手动去解决冲突就好了。手动解决完了冲突再正常add,commit,push到远程端就好了。
下面开始解决冲突
1.把本地已有的内容单独压入栈
我们先暂存,用stash命令暂存,注意这个stash和add到的暂存不是同一概念。git stash将会把当前目录和index中的所有改动(但不包括未track的文件)压入一个栈,然后留给你一个clean的工作状态,即处于上一次最新提交处。所以我们执行了stash后才能正常pull,然后恢复stash的栈里的内容,手动解决冲突,再add,commit,最后push。
执行git stash
执行暂存后
用 git stash list 查看暂存的 stash@{0}就是我们刚刚暂存的内容句柄。
2.pull远程端内容
执行完内容的压栈,正常去pull。我把用户名打了马赛克
3.恢复压入栈暂存的本地内容
接着去恢复刚刚压入栈的内容
git stash pop stash@{0},注意这里stash@{0}就是入栈的那个句柄。
4.恢复后,手动解决冲突
打开冲突文件中,冲突内容
<<<<<<< Updated upstream
fsefsef
============
1111111111
<<<<<<< Stashed upstream
============横杠上面是pull下来的,横杠下面是本地已经有的内容,这个时候要自己手动来解决冲突,看自己要保留那一部分。
解决了上面的冲突后,重新add 到暂存区,再commit,再push到远程端就可以了。
特殊说明,本文版权归 ning个人博客 所有带原创标签请勿转载,转载请注明出处.
本文标题: Git冲突,pull内容与本地已经有的内容冲突