Git合并递归不做我想要的

时间:2009-11-25 21:29:06

标签: git merge

当在两个分支中编辑文件时,有没有办法让Git强制手动解析文件?

我的问题是我想要从一个分支进行一些更改,而从另一个分支进行一些更改。事实证明,这些变化并不总是相互衔接,但算法并不总是选择正确的变化。

我注意到的一点是,3向合并中的基本文件并不是我所期望的。 是否可以让Git使用一个分支中的选定文件作为基础?

1 个答案:

答案 0 :(得分:2)

如果git检测到文件中的冲突,它将始终要求您编辑(或使用合并工具)来修复冲突。在这种情况下,您可以在分阶段之前修复它。

如果git没有检测到特定文件中的冲突但在其他地方检测到冲突,那么您可以在进行合并提交之前始终修复该特定文件并添加修订(git add)。

在这种情况下,您可以通过git show HEAD:path/to/filegit show MERGE_HEAD:path/to/file访问该文件的两个不同父版本。如果要在编辑器中打开它们,可以将git show输出重定向到临时值。

修复文件并解决任何其他冲突后,您可以暂停修复(git add)并进行合并提交(git commit)。

如果git没有检测到任何提交,它将使合并提交没有进一步的提示。

在这种情况下,您仍然可以修复您的文件。可以通过git show HEAD:path/to/filegit show HEAD^2:path/to/file访问这两个父版本。

修复文件后,您可以暂存(git add)并使用git commit --amend重做合并提交。