合并来自同一个分支的先前被拒绝的想法如何在各种版本控制系统中工作?哪个提供支持?
这是我有根据的猜测——这个总结准确吗?
Git 和集中式 VCS:大概,您还原了要合并的提交。因此,您实际上是在尝试合并当前提交的祖先。我还没有尝试过,但我不认为它会得到很好的支持。我想您可以与要合并的提交的相关祖先(事后看来隐喻的“分支点”)进行三向合并(您必须识别它,因为没有记录) -但是VCS会支持这个还是你必须自己做呢?
Mercurial,使用书签(或以与书签类似的方式使用匿名分支):如果您努力使用此方法,您将“逆转路线”并在您之前拒绝的时间点从旧提交的祖先分支它。因此提交,即使它最初是在这个分支上完成的,现在不在这个分支上(因为书签是动态的,不是不可变的,而且因为你颠倒了路线),所以根本没有问题。合而为一!
Darcs,如果 head 和旧提交之间没有标签:虽然在 darcs 中,它看起来好像你有一条直线提交,但你实际上拥有的是第一个提交或最近的标签之间的依赖关系图, 和 head (这一点都不明显,AFAIK 仍然没有工具可以将其可视化!)。因此,如果 darcs 认为您的旧提交独立于当前头部(这很可能,因为您已经恢复了旧提交),它们是不可见的独立分支,并且可以非常愉快地合并。如果 darcs 认为旧的提交依赖于 head,那么这种情况大概就像 git 案例一样,尽管我认为除了 David Roundy 之外,没有人完全理解 darcs 补丁理论。
Darcs,如果同时有一个标签:我认为这就像 git,因为一个标签将所有不可见的头捆绑在一起并形成一个依赖于所有头的头(这可能是最容易- 了解 darcs 补丁理论的各个方面)
脚注:为简洁起见,我自始至终都提到了“旧提交”,尽管先前被拒绝的想法当然可能是一长串提交。