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



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

希望它能在一定程度上解释。

百万感谢MB Chand

您需要反向合并

如果你使用TortoiseSVN客户端,它很容易(http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html):

如果要将更改合并回工作副本,则要还原已提交的更改,请选择对的修订revert并确保已选中"反向合并"框。

如果使用命令行,则会有点复杂(http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html):

svn合并的一个非常常见的用途是回滚一个更改已提交。假设你正在愉快地工作正在使用/cacc/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修订版中删除。原始更改仍然存在在存储库的历史中。

最新更新