git pull之后得到错误

时间:2013-03-27 06:13:03

标签: git

我试图从回购中“git pull”,然后我得到一个错误说,拉不可能,因为你有未合并的文件,但我在网上做了一些搜索,“git pull = git fetch + git合并“,不是吗?

我使用git pull,然后我收到以下消息

    U   Assembly-CSharp.pidb
    U   Assembly-UnityScript.pidb
    M   Assets/testing.unity
    U   Library/assetDatabase3
    U   Temp/Undo55e9beda8401848509d9e3bb5d5fe513
    U   Temp/Undof0c17c0ba33904b16a1698563ff5302c
    U   Temp/__EditModeScene
    U   wiisummoner-csharp.sln
    U   wiisummoner.sln
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 merge”,我收到错误“由于你有未合并的文件,因此无法合并”。这是如此令人困惑。任何人都知道问题是什么?我想要的只是从回购中拉出来。

2 个答案:

答案 0 :(得分:2)

正如您所说,“git pull”相当于“git fetch + git merge”。

如果你不能进行“git merge”,那么逻辑上就是你不能做“git pull”,因为它会在这个过程中进行“git merge”。

您可能在Temp中拥有自己的文件,或者您的本地* .pidb文件可能已经存在并与上游分支冲突。

将这些文件放入版本控制只是要求麻烦,除非你想版本和协调这些文件的差异(你真的不...),我建议你拒绝上游的变化并告诉他们修复它

顺便提一下,为了记录,这就是git pull的完整输出,我已经制作了一个简单的测试库来演示:

$ git --version
git version 1.7.12.4 (Apple Git-37)
$ git pull
Updating e78f298..3067a12
error: The following untracked working tree files would be overwritten by merge:
    three.txt
Please move or remove them before you can merge.
Aborting

在这种情况下,答案很简单:

  • 将three.txt移到其他地方。 (也许这样做git stash
  • 执行git pull

然后,如果你的'three.txt'版本很重要,另外执行:

  • 移回three.txt。 (如果你做过git stash,也许你可以做git stash pop
  • 尝试协调差异,这样你就不会笨拙地覆盖其他人的变化。
  • 提交新的更改。

答案 1 :(得分:0)

您应该隐藏更改并在

之后弹出它们
git stash
git pull
git stash pop

之后您可能会遇到冲突,您可以手动修复。

另一种选择,如果创建一个提交是有意义的(即你完成了你正在进行的更改),你可以简单地提交你的更改并在那之后拉。