我们使用SVN进行版本控制系统,如何忽略某些中间版本并使用svn接受其他修订?

时间:2015-02-06 06:59:20

标签: svn

我们正在使用SVN进行版本控制系统,如果我们从" 1"的存储库修订开始和人A,B,C,D和E提交代码更改(修订版6是E提交后的最新修订版)。假设程序员C的更改必须退出,但我们希望保留A,B,D,E人员的更改。我们如何做到这一点?

希望它在某种程度上得到解释。

百万先谢谢 MB Chand

1 个答案:

答案 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修订版中删除它。原始变化仍然存在   在存储库的历史中。