我一直在使用 TortoiseSVN、svn 和 subclipse,并且我认为我了解基础知识,但是有一件事一直困扰着我一段时间:合并引入了不需要的代码。这是步骤。
trunk/test.txt@r2
. 使用“A”创建了一个测试文件并返回:
A
[EOF]
branches/TRY-XX-Foo/test.txt@r3
. 扩展trunk
到TRY-XX-Foo
:
A
[EOF]
branches/TRY-XX-Foo/test.txt@r4
. 进行了不必要的更改TRY-XX-Foo
并提交了它:
A
B (unwanted change)
[EOF]
branches/TRY-XX-Foo/test.txt@r5
. 修复了一个重要的错误TRY-XX-Foo
并提交了它:
A
B (unwanted change)
C (important bug fix)
[EOF]
现在,我只想将重要的错误修复合并回主干。所以,我运行 merge for revision 4:5
。我最终在我的工作目录中是一个冲突。
trunk/test.txt
:
A
<<<<<<< .working
=======
B (unwanted change)
C (important bug fix)
>>>>>>> .merge-right.r5
[EOF]
违背我的意愿,Subversion 现在已经在主干代码中包含了“不需要的更改”,我需要手动清除它们。当在分支中进行多次连续更改时,有没有办法只合并指定的修订?
问题的一部分是 B (未更改的更改)包含在 .merge-right 中,我无法区分它来自哪个修订版。我通常使用 TortoiseMerge,它的外观如下。