我们从主干创建了一个分支,在主干上进行了重大的重构。同时,主干进行了一些修改,并进行了一些修复。我们不希望在分支上进行这些更改,因此我们不希望“赶上”将主干合并到分支,因为我们不希望混合旧代码和新代码。但如果没有这个,我就无法将分支重新整合回主干。
有没有办法将树枝“按原样”强行放在树干上?
(我考虑的一个想法是将主干撤消(“反向合并”)回到分支开始的修订版,然后将它合并到分支上是安全的 - 什么都不应该发生。然后我可以重新集成。你觉得吗?)
答案 0 :(得分:6)
假设您丢失了这些更改,那么这是一个可以接受的解决方案,尽管您可能只想考虑将当前中继重命名为分支并将分支重命名为trunk:
svn move https://path/to/repo/trunk https://path/repo/branches/newbranchname
svn move https://path/to/repo/branches/refactoring https://path/to/repo/trunk
虽然,你真的确定你不想从主干引入变化吗?您可能需要非常仔细地考虑这一点。即使您已经进行了大量的重构,如果在主干上进行了可用的工作,您仍然可能需要非常仔细地查看它,以便所取得的进展不会浪费。
答案 1 :(得分:3)
您可以使用,正如您所提到的反向合并。检查主干
svn merge -rHEAD:RevisionTheBranchWasCreated ^/trunk
这将撤消创建分支后所做的所有更改。之后,合并应该没有任何问题。
更新:^/trunk
仅适用于Linux。在Windows上,您需要^^/trunk
代替。