Git拉取不了最新代码,因为你有未合并的文件。

10

当我尝试从git拉取时,出现以下错误

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'.

我尝试了储藏变更,但在执行“stash pull”后不起作用,要求合并。

如何在不提交/添加现有内容的情况下拉取变更?


1
强制使用 -f 标志(你会丢失本地更改)。 git stash 应该可行,你是如何使用它的? - Maroun
希望这个答案可以帮助你解决问题。https://dev59.com/Z18d5IYBdhLWcg3w1VI1#41929861 - Faisal
6个回答

12

首先备份冲突的文件!


然后执行:

git fetch origin
git reset --hard origin/master (or your branch name)

如果您想恢复冲突文件或比较它们,可以通过这种方式获取完整的Git仓库代码。


9

你当前正在进行代码合并,这不是导致问题的原因吗?你已经完成了吗?

$ git merge --abort 

这将取消正在进行的合并。之后,你应该能够pull。如果发现冲突,pull可能会引起新的合并。 请注意,“合并中止”将取消在合并上下文中所做的任何修改。


我不想在尝试拉取数据时从本地删除更改。这意味着,如果同一文件在本地和服务器上都被更改,则在拉取时它们将被合并并生成冲突,这正是我想要的。那么,这样做可以吗?还是它会忽略需要合并的文件? - Bhumi Shah

3
为了保留您的更改,首先需要提交或隐藏您的更改。有一些文件存在冲突。 从以下链接安装kdiff3作为合并工具:link 现在当您执行git pull时,控制台将显示更改,请键入git mergetool -y并手动合并更改。

1
我不确定您想要做什么,但如果您想撤销并删除您的更改,则需要使用git reset。

请参见:http://git-scm.com/docs/git-reset

您可能需要的是

git reset --hard

请注意,这将删除您对文件所做的任何更改!

之后,拉取操作应该可以正常工作。


我不想在尝试拉取数据时从本地删除更改。也就是说,如果同一文件在本地和服务器上都有更改,则将合并并在拉取时生成冲突,这正是我想要的。 - Bhumi Shah

0

你可以通过检出一个新分支并在那里提交你的更改来解决这个问题。然后,你可以强制更新远程的主分支,按照预期工作并合并本地代码。但是这就是为什么在自己的分支中进行新工作是理想的原因。


-1

请尝试以下命令:

git fetch origin
git reset --hard origin/master
git pull

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接