Subversion:如何合并特定的提交

51

我有一些提交记录在我的分支上。我想要将这些分支合并到主干上,但是我的分支上有一些提交记录我不想合并到主干上。应该怎么做呢?


2
你的意思是说你有一些提交记录不想合并到主干分支,还是在尝试合并代码时遇到了一些冲突? - Yannick Blondeau
我有七个提交在我的分支上,但我只想合并三个提交。 - Clown
所以,您只需要合并指定的修订版本。https://dev59.com/ZXRC5IYBdhLWcg3wVvnL - tostao
4个回答

54

你想实现的通常在版本控制系统中被称为挑选

假设你想要将你的分支上的修订版本345、364和377合并到主干(trunk)上,那么你需要在一个干净的工作副本(trunk)的顶层目录下执行以下操作:

svn merge -c345,364,377 ^/_your_branch_

在Windows中使用cmd命令时,在分支名称周围添加引号:

svn merge -c345,364,377 "^/_your_branch_"

你可以在SVN书的相应章节中找到更多信息。


1
在链接中,看起来 ^/trunk 是源分支。所以我认为在检出 trunk 的同时,示例应该是 svn merge -c345,364,377 ^/yourbranch,对吗? - Mark
@Mark 是的,绝对没问题,我刚刚更新了示例。谢谢! - Yannick Blondeau

46

仅仅是为了扩展Yannick的回答。
当你需要将一个或几个特定的提交从一个分支合并到另一个分支时(例如需要合并分支“from”中的提交r13和r666到分支“to”中),你需要:

  1. 检查提交的可用性(只是为了确保):

svn diff -c 13,666 https://fullpathtoyourproject/branches/_from_
  • 切换到分支 to

    svn sw https://fullpathtoyourproject/branches/_to_
    
  • 合并提交

  • svn merge -c 13,666 https://fullpathtoyourproject/branches/_from_
    
    如果您需要获取“fullpathtoyourproject”,只需输入以下内容:

    svn info
    
    在 URL 部分,您将看到这个路径。
    我更喜欢使用完整的 URL/路径,因为在一些项目中个人经验是相对路径无法正常工作。

    这是一个好答案,因为它解释了合并的源和目标。 - natersoz

    8
    如果已经安装了TortoiseSVN,以下是将一个分支的一系列版本合并到另一分支的步骤:
    1. 本地检出要从源分支合并一系列修订版本的目标分支。
    2. 在根文件夹内右键单击-->TortoiseSVN-->合并。
    3. 默认情况下,点击“合并一系列修订版本”。
    4. 点击下一步
    5. 输入要从中合并的URL
    6. 输入要合并的特定修订版本范围
    7. 还可以点击“显示日志”并选择所需的修订版本或修订版本范围
    8. 点击“测试合并”以检查是否合并了所需的修订版本/文件。
    9. 点击合并

    -9

    您可以使用修订号将所需的提交合并。


    是的,但是,怎么做呢? - osullic

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接