在使用Git pull命令将远程代码拉取到本地的时候,出现错误,无法拉取。错误如下:
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
as appropriate to mark resolution, or use 'git commit -a'.
原因:
实际上,git pull命令是将git fetch和git merge两个命令合并起来的一个“综合”命令。
它的作用是:将远程的代码和更新,拉取到本地并且更新本地的代码。其中的一个弊端是,你的本地工作目录在未经确认的情况下就会被远程分支更新,这里我们暂且不提。
正是git merge命令导致出现了上边使用git pull出现的问题。所以这就需要将本地与远程的代码之间的冲突解决掉,才可以进行正常的git pull。下面介绍2个方面的办法:
(1)如果想保留本地的修改,使用下面的命令,将文件add,然后commit。
git add -u
git commit -m "描述"
git pull
(2)想保留本地的修改,但是还不想新加一次commit,可以使用git stash命令。
git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug, 先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。
git stash
git pull
git stash pop
这种方法是一种比较普遍的做法,我在开发的时候经常采用这种方法。
(3)放弃本地的修改,可以使用下面的语句。
git reset --hard FETCH_HEAD
git pull
FETCH_HEAD表示上一次成功git pull之后形成的commit点。
注意:git merge会形成MERGE-HEAD(FETCH-HEAD) 。git push会形成HEAD这样的引用。HEAD代表本地最近成功push后形成的引用。
来源:oschina
链接:https://my.oschina.net/u/1866370/blog/714029