我们正在使用SVN进行版本控制系统,如果我们从" 1"的存储库修订开始和人A,B,C,D和E提交代码更改(修订版6是E提交后的最新修订版)。假设程序员C的更改必须退出,但我们希望保留A,B,D,E人员的更改。我们如何做到这一点?
希望它在某种程度上得到解释。
百万先谢谢 MB Chand
答案 0 :(得分:1)
您需要反向合并。
如果你使用TortoiseSVN客户端,那很简单(http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html):
如果要将更改合并回工作副本,请还原 已经提交的更改,请选择修订 恢复并确保选中“反向合并”框。
如果使用命令行,则会更复杂(http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html):
svn merge的一个非常常见的用途是回滚更改 已经承诺了。假设你正在愉快地工作 / calc / trunk的工作副本,你发现改变了 回到版本303,改变了integer.c,是完全错误的。它 永远不应该承诺。您可以使用svn merge来“撤消” 更改工作副本,然后提交本地修改 存储库。您需要做的就是指定反向差异。 (您可以通过指定--revision 303:302或等效项来完成此操作 - 改变-303。)
$ svn merge -c -303 ^/calc/trunk
--- Reverse-merging r303 into 'integer.c':
U integer.c
--- Recording mergeinfo for reverse merge of r303 into 'integer.c':
U A-branch
$ svn status
M .
M integer.c
$ svn diff
…
# verify that the change is removed
…
$ svn commit -m "Undoing change committed in r303."
Sending integer.c
Transmitting file data .
Committed revision 350.
当我们谈论“删除”变更时,我们真的在谈论 从HEAD修订版中删除它。原始变化仍然存在 在存储库的历史中。