当pull告诉我存储更改时,解决Git提交冲突

时间:2013-08-26 02:30:09

标签: git git-commit

我创建了一个文件file.txt,然后使用默认文本将我的提交添加到主分支

"-----Text--------"

存储库中的另一位开发人员MrA克隆了源代码并编辑了他的工作:

"-----Text--------"
Line added by MrA;

MrA提交到服务器中的远程存储库。

与此同时,MrB也修改了同样的文件

"-----Text--------"
Line added by MrB;

当MrA承诺没有问题,因为他之前没有其他变化。

但是当MrB想要提交时,它有一条消息错误,说有冲突。当MrB试图拉动时,他会收到一条错误消息,提示您移动file.txt或存储它以合并内容。

我该怎么做才能解决这个冲突?

1 个答案:

答案 0 :(得分:2)

MrA和MrB都编辑了文件的相同部分,因此合并冲突。

我猜你在拉动时收到了这条消息:

error: Your local changes to the following files would be overwritten by merge:
        file.txt
Please, commit your changes or stash them before you can merge.
Aborting

解决方案(步骤MrB应该做)

  1. git commit。这一步不应该失败。虽然他可以藏匿,但我不推荐它。
  2. 做一个git pull。这将导致合并冲突,如预期的那样。
  3. 使用git mergetool调出GUI以帮助合并。或者,只需打开文件并手动编辑它即可。 Git使用特殊语法来表示冲突的位置。请参阅branching and merging上的我的链接。
  4. 对文件执行git add
  5. 执行git commit,现在您已完成解析合并。
  6. 参考资料


    对于git stash,这将保存所有已修改的跟踪文件和暂存的更改。它实质上使您的文本文件的副本不被修改。它存储您在内部进行的更改,但不提交。所以当你拉,没有冲突。但是,正如@nneonneo指出的那样,当您尝试使用git stash pop恢复更改时,您将收到冲突。我不推荐这种方法。