我一直在使用各种源代码控制系统,但是当涉及到还原变更时,我还不是专家。在这种情况下,有人可以提供帮助:
我希望必须有一种方法可以比较两个文件的修订版#4和#5,并生成一个补丁来撤消版本#5中的更改,然后可以将其应用于HEAD修订版以回滚缺陷
答案 0 :(得分:15)
通常reverse merge足以回滚已提交的更改......
答案 1 :(得分:7)
要阅读详细信息,请参阅: svn manual - Undoing Changes
正如马克所描述的那样,你想做:
svn merge -r 5:4 file1 file2
这意味着合并从4到5的变化,即。撤消更改
您也可以输入:
svn merge -c -5 file1 file2
这意味着应用在向后提交修订版5时发生的更改。
接下来,您应该手动查看更改。
最后,您必须提交更改(上面的合并只更改了您的工作副本)。
答案 2 :(得分:6)
这是一本link to svn书,解释了所有关于还原和历史的内容。
要做差异你会做类似svn diff -r 4:5 somefile.txt
答案 3 :(得分:2)
我假设你在我的回答中使用了TortoiseSVN。
我认为您的方案不会导致文件回滚,因为您仍希望保留每个文件的历史记录。大多数情况下,您要做的只是查找并修复错误并对此文件进行新的更改。
如果你想比较两个版本,在tortoiseSvn中很容易,右击文件,然后进入TortoiseSvn-> Show Log。然后选择要比较的修订,右键单击,然后选择比较修订。
如果你想找到谁对这个bug负责,你可以使用TortoiseSVN中的菜单项Blame ...这将告诉你谁修改了每一行以及修改了哪个版本。
哦,如果你想将文件还原回以前的版本,可以在TortoiseSvn->显示日志中执行,然后选择要恢复的版本,右键单击并选择还原到此版本。
答案 4 :(得分:2)
我会选择EtienneT的回答。但在“还原到此修订版”下方,还有“从此修订版还原更改”选项。该选项完全符合罗伯特沃克的需求,以撤消修订版#5的变更。不要忘记提交更改。
答案 5 :(得分:1)
检查当前版本,然后 svn merge -r 5:4 file1 file2 (那是来自记忆,可能不完全正确)
答案 6 :(得分:1)
我认为您需要先在5:4之间反向合并,然后还原正确的文件
svn merge -r 5:5 http://svn.example.com/repos/calc/trunk
svn revert correctfile
你可能最终会在2buggy文件上处于奇怪的状态 希望你可以手动解决。
答案 7 :(得分:0)
如果您使用的是http://tortoisesvn.tigris.org/,那么这是一个相当简单的过程。只需右键单击一个文件并选择“日志”即可获得现在和所选返回之间的更改列表。然后,将两个文件恢复为修订版#4并提交更改:)