Git pull时出错

我们两清 提交于 2019-12-05 02:44:38

在使用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后形成的引用。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!