欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Git pull时出错

程序员文章站 2022-06-19 10:57:22
...

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

转载于:https://my.oschina.net/dataRunner/blog/714029