在我们的 git 工作流程(使用 GitHub Enterprise)中,我们的功能分支必须 merge 到两个不同且独立的分支(dev 和 master)。只要不存在 merge 冲突,这种方法就可以正常工作。
例如, merge 到 dev 的两个功能分支对文件 F 的更改存在冲突。这两个更改都应该在 dev 中结束,但我不希望 dev 中的数十个不相关的更改 merge 到我的功能分支中,因为它们最终会后来在 master 中,那是不行的。
我们尝试过的:
- GitHub 的编辑器可以让您轻松修复问题,但同时它也会悄悄地将目标分支 (dev) merge 到源分支 (feature 分支) 中。我还没有找到阻止它这样做的方法。
- 似乎无法在单个文件上使用
git merge
。 git checkout dev --patch -- F
给你一个基于 vim 的可怕界面,我不敢向我的团队提出。git checkout
中还有一个--merge
选项,它似乎只是覆盖更改。git checkout --conflict=diff3
得到了完全相同的结果。
到目前为止,我们想出的最好办法是在 GitHub 中进行更改,然后在功能分支中恢复 merge ,但这对我来说看起来并不是一个干净可靠的解决方案。
最佳答案
问题是,你没有在 git 中 merge 文件。您 merge 提交。因此,无论提交包含什么,它都应该包含在 merge 中,除非您可以手动选择和编辑 merge 的最终内容。但这应该是用来解决冲突和那种工作人员的。
也许您可以将功能分支中的提交拆分为两个提交,以便第一个提交仅包含对相关文件的更改,第二个提交将添加其余内容。并且您只能 merge 到该提交。
关于git - 如何在 git 中 merge 单个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68920521/