在两个方向上合并两个分支 - 任何正当理由还是完全禁止?

时间:2015-09-04 16:30:30

标签: git merge mercurial dvcs branching-and-merging

我的同事最近要求我帮助他预先阻止推送到中央回购。这是着名的https://hg.python.org/hooks/file/tip/checkheads.py

checkheads.py的算法在分支中聚集头,忽略来自另一个分支的变化:

for x in xrange(p + 1, end):
    if repo[x].branch() != branch:
        continue

历史记录包含从默认 prod 的合并,然后从 prod 返回到默认

所以checkheads.py没有发现变更集合并在默认(在图中连接),因为来自 prod 分支的任何路径都被剥离并且脚本报告默认分支中的几个头(但hg heads报告单个原样)。

我的问题是什么有用的DVCS工作流需要以两种方式在两个分支之间进行合并?

着名的http://nvie.com/posts/a-successful-git-branching-model/并没有纵横交错。

可以防止来回合并吗?

1 个答案:

答案 0 :(得分:4)

  

我的问题是什么有用的DVCS工作流需要以两种方式在两个分支之间进行合并?

根据要素分支(gitflow,github-flow,...)进行每个工作流程,使用拉取请求进行合并(例如,请参阅github的单击合并)。

如果您正在处理某个功能,并且有人已经合并了修改相同文件的功能,并且您想要合并时会发生冲突。

如果要合并拉取请求,则必须先解决这些冲突。

您有两种可能性:

  • rebase,但这并不总是可能的(出于一些非常好的理由)
  • 从您的父分支合并到您的功能分支。

如果您以这种方式成功合并,您可以合并您的拉取请求/功能分支,最终会得到一个美丽的十字交叉;-)