3

我想讨论的场景是我有一个合并存储库,它是共享存储库,开发人员将 cd 进入其中以解决合并冲突。

  1. 单个文件中有 2 个或多个合并冲突。
  2. 每个冲突都必须解决不同的用户。
  3. 每个开发人员 cd 进入这个存储库以解决合并冲突。
  4. 假设 foo.c 有 3 个合并冲突
  5. 一位用户解决了 foo.c 中的单个冲突并保存在图形合并工具中

现在 GIT 将其识别为“git add”,尽管文件的其他部分仍然存在冲突。然后,如果另一个开发人员执行“git mergetool foo.c”,它不会因为冲突而弹出 foo.c。

是否有解决此问题的图形工具。允许多个用户在同一个文件中解决和保存冲突。

4

1 回答 1

1

这个剧情真的没意思……

首先,如果存在冲突,那么该冲突仅存在于一个合并提交上,而该合并提交尚不存在!(它仍然在用户的机器上,可能在索引中,但肯定不在他们的本地树中)。

其他用户根本没有冲突,直到他们进行合并或变基。

假设您确实有三个用户执行完全相同的合并,无论出于何种原因,因此他们有相同的冲突。

让我们进一步假设,正如您所建议的,他们每个人都有一个只有他们才能协调的冲突,那么他们应该每个人都将他们的工作重新建立在最新版本的代码上,并协调过程中的任何冲突。

换句话说,您似乎描述的情况如下:(如果我错了,请纠正我):

  1. 我们有三个开发人员,Charlie、John 和 Matt,他们都在 master 分支上工作,即提交 aaaaaaa。
  2. 他们也都在一个“不稳定”的分支上工作,该分支位于提交 bbbbbbbb,它与“master”不同。
  3. 同时,他们都决定将“不稳定”分支单独合并到“主”分支中。
  4. 同时,他们都意识到他们有无法协调的承诺。

理想情况下,在这种情况下应该做的是,任何知道如何进行合并的开发人员都应该合并“不稳定”。也许他们会选择一次合并几个提交,而不是直接合并两个头,或者他们可能选择重新定位整个事情——无论如何,但只有一个开发人员需要这样做。

The more frequently this is done, the easier the merge/rebase operation will be.

其余的开发人员将能够使用合并提交。

于 2010-12-01T10:21:08.890 回答