代码之家  ›  专栏  ›  技术社区  ›  Frank

如何撤消合并(不提交)?

  •  43
  • Frank  · 技术社区  · 15 年前

    我刚做了一个 svn merge 要将从主干更改合并到分支,请执行以下操作:

    $ svn merge -r328:HEAD file:///home/user/svn/repos/proj/trunk .
    --- Merging r388 through r500 into '.':
    A    foo
    A    bar
       C baz1
       C baz2
    U    duh
    [...]
    

    但是冲突太多了,所以我想撤销它。

    一种方法是提交然后合并回来。但因为冲突我不能承诺。在这种情况下,最好的撤销方法是什么?

    4 回复  |  直到 6 年前
        1
  •  112
  •   richq luc    15 年前

    从工作副本的顶部递归还原:

    svn revert -R .

    您需要手动删除添加的文件。在还原后,添加的文件将保留在磁盘上,但它们将处于非跟踪状态(“?foo“)

        2
  •  7
  •   tangens    15 年前

    只要您还没有提交,就可以始终执行还原来撤消所有更改。

        3
  •  2
  •   Amit Thawait    11 年前

    我面对同样的情况,我也有一些其他的变化,我不想失去。 所以,不是完全递归还原 svn revert 因为矛盾的东西对我有好处

    svn revert baz1 baz2
    
        4
  •  -11
  •   Frank    15 年前

    就这么做 svn resolve 在所有冲突中提交:

    $ svn resolved baz1
    $ svn resolved baz2
    $ svn ci -m "oops. bad merge. will revert."
    Transmitting file data ......
    Committed revision 501.
    

    然后,通过合并回到原来的位置来正式撤销它:

    $ svn merge -r501:500
    --- Reverse-merging r319 into '.':
    [...]
    

    就这样,合并在目录中被撤销了。现在也要承诺:

    $ svn ci -m "bad merge has been undone"
    Transmitting file data ......
    Committed revision 502.
    

    相对于 svn revert -R . 方法是正确删除所有添加的文件。

    推荐文章