【发布时间】:2011-07-01 18:15:13
【问题描述】:
我们维护的 Web 应用程序具有通用的 master 分支和许多并行分支,每个安装一个,每个都有一些特定的更改。源代码在 git 中管理,当我们需要将功能和错误修复从主分支转移到并行分支时,它是一个了不起的工具。但是很少有敏感的文件和自动合并通常会产生不好的结果。因此,如果可以以某种方式标记它们,合并会容易得多,并且每次合并都会导致需要手动合并的冲突。
我搜索了一个答案:
- 我正在使用 --no-commit 和 --no-ff 合并选项,但不一样。
- Here 和 here 有人问同样的问题,但没有解决方案。
- 类似的情况似乎是 how to prevent file being merged 使用 .gitattributes 包含: somefile.php merge=ours 。我试图找到一些会产生冲突或强制手动合并的合并选项,但到目前为止没有找到。
- .gitattributes 包含: somefile.php -merge 永远不会自动合并,因此会强制手动合并。这是 90% 的解决方案,但我寻求的是尝试自动合并并将其标记为冲突,无论它是否成功。 但这是迄今为止最接近解决方案的方法。 (...感谢 Charles Bailey 的澄清...)
- 有人建议编写自定义合并驱动程序(1,2),但我还不清楚如何去做。
编辑:变体 4. 描述
【问题讨论】:
-
这不是您要寻找的确切答案,但出于同样的原因,我先使用
git fetch,然后使用git difftool <file> FETCH_HEAD,因此我可以手动将远程分支中的更改应用到当地人。 -
MHC:这是一个很好的技巧(特别是如果为每个并行分支保存在脚本中 + 并结合防止文件自动合并)。主要缺点是,在团队工作流程中,有人可能会忘记这一步,而只是进行正常的合并。
-
设置
-merge不会阻止您合并文件,它只会强制您手动进行,例如使用合并工具。这不是你需要的吗? -
这是我想要的 90%。我希望自动完成合并,但是对于这个敏感文件,即使没有合并也被认为是冲突的,因此每次都强制进行手动检查。
-
@Stepan 我处于类似情况,所以我想澄清一些事情。你在说
-merge在.gitatttributesgit merge什么都不做,所有的工作都必须用合并工具来完成?所以没有 >>> 供合并工具使用,对吧? Dan 的解决方案确实提供了这一点?
标签: git merge branch conflict manual