foxtrot合并是一种合并,其中'origin/master'作为第二个(或更晚的)父级合并,如下所示:
提交'D'是foxtrot合并,因为'origin/master'是它的第二个父级.注意此时来自"origin/master"的第一父历史如何包含提交"B".
但是在我的git repo中,我需要所有涉及'origin/master'的合并来保持'origin/master'作为第一个父级.不幸的是,git在评估提交是否符合快进条件时并不关心父级.这会导致我的主分支上的第一个父历史记录有时会丢失曾经存在的提交(例如,输出"git log --first-parent").
以下是推送前面图表中提交"D"时发生的情况:
我怎样才能防止这种推动?推送foxtrot合并后,'origin/master'的第一父历史不再包含提交'B'!
显然没有提交或工作实际上丢失,只是在我的环境中我真的需要"git log --first-parent"作为一个稳定的提交累积记录 - 如果你愿意,一种"一次写入读 - 许多"(WORM)数据库.我有脚本和进程使用"git log --first-parent"来生成更改日志和发行说明,以及管理我的票证系统(JIRA)中的票证转换.Foxtrot合并破坏了我的脚本!
是否有某种预接收挂钩我可以安装在我的git存储库中以防止foxtrot合并被推送?
ps使用http://bit-booster.com/graph.html生成此stackoverflow问题中的提交图.
我正在尝试使用 JGit 执行有冲突的项目中的所有合并场景。
是否有可能在实际合并之前获得冲突?换句话说,是否可以模拟与 JGit 的合并?
我的目标是为项目的所有合并场景访问每个文件的冲突行。