0

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

我使用了 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”,我得到一个错误“合并是不可能的,因为你有未合并的文件”。这太令人困惑了..有人知道问题是什么吗?我想要的只是从回购中提取。

4

2 回答 2

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
  • 尝试调和差异,这样您就不会笨拙地覆盖其他人的更改。
  • 提交新的更改。
于 2013-03-27T06:19:47.407 回答
0

您应该隐藏您的更改并在之后弹出它们

git stash
git pull
git stash pop

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

另一种选择是,如果创建提交有意义(即您完成了所做的更改),您可以简单地提交更改并在此之后拉取。

于 2013-03-27T06:15:00.333 回答