0

我创建了一个文件 file.txt,然后使用默认文本向主分支添加了一行

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

存储库中的另一位开发人员 MrA 克隆了源代码并编辑了他的作品,如下所示:

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

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

同时MrB也像这样修改了同一个文件

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

当 MrA 提交时没有问题,因为在他之前没有其他更改。

但是当 MrB 想要提交时,它会出现一条消息错误,指出存在冲突。当 MrB 尝试拉取时,他会收到一条错误消息,提示您移动 file.txt 或将其存储以合并内容。

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

4

1 回答 1

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 使用一种特殊的语法来表示冲突的位置。请参阅我关于分支和合并的链接。
  4. git add档案。
  5. git commit,现在你已经完成了合并。

参考资料


至于git stash,这将保存所有修改过的跟踪文件和分阶段的更改。它本质上使您的文本文件副本未经修改。它存储您在内部所做的更改,但不提交。所以当你拉的时候,没有冲突。但是,正如@nneonneo 指出的那样,当您尝试使用 恢复更改时git stash pop,您会遇到冲突。我不推荐这种方法。

于 2013-08-26T03:42:14.600 回答