0

我有 2 个单独的分支和一个在这两个分支上都已更改的文件(在某一点之后的单独历史记录 - 让我们将这种对 git 的滥用归咎于匿名开发人员)。

我遇到的问题是,在合并这两个分支时,git 会自动修改文件。

它不认为该文件存在合并冲突(这很好,因为我可以自己修复它并从两者中选择我想要保留的部分)。

最后,似乎 git 更喜欢一个版本而不是另一个版本,因为每当我合并时,我都会从其中一个分支中丢失一些方法。

我应该做些什么来覆盖这个 git 功能并能够比较这两个文件版本并有选择地选择我想要的最终文件的样子?

或者关于我应该做什么的其他想法?

4

2 回答 2

1

合并两个文件时git,如果两个父分支上的改动区域不重叠,通常可以自动将两边的改动添加到新文件中,不会发生冲突。在这种情况下,您有几个选择:

  • 您可以git merge --no-commit,让您有机会查看所做的更改,并在您手动git commit完成合并之前进行任何必要的调整。
  • 如果您知道在另一端所做的更改是虚假的,并且您想完全忽略它们,您可以使用git merge -s ours来保留您的文件版本。

需要注意的另一件事是gitsrerere机制,我认为默认情况下通常不会启用它。但如果是,它会注意到手动冲突解决方案,并且,如果它再次看到特定冲突出现,将自动应用相同的解决方案。如果是这种情况,您可能希望使用git merge --no-commit,就像在第一种情况下一样,因此您可以在提交之前检查以确保您获得了预期的结果。

于 2013-06-18T16:58:06.443 回答
0

Git 执行拉取和推送,因此它通常对完整存储库而不是单个/选定文件执行此操作。因此,如果它不是合并冲突,它将简单地合并更改,或者如果您正在执行 PULL 操作,它将替换另一个。

所以可能的方法是从其他分支执行同步或比较并手动合并您的文件。

于 2013-06-18T16:28:46.707 回答