【问题标题】:Subversion: How to merge a specific commitSubversion:如何合并特定的提交
【发布时间】:2012-07-18 09:21:42
【问题描述】:

我的分支上有一些提交。我想将分支合并到主干,但是有一些提交我没有合并到我的分支上的主干。我该怎么办?

【问题讨论】:

  • 您的意思是您有一些提交不想合并到您的主干中,或者您在尝试合并更改时遇到了一些冲突?
  • 例如,我的分支上有七个提交,但我只想合并三个提交。
  • 所以你必须合并只指定修订。 stackoverflow.com/questions/326937/…

标签: svn merge


【解决方案1】:

你想要完成的事情在版本控制系统中通常被称为 cherrypicking

假设您要将修订版 345、364 和 377 从您的分支合并到主干,您将在 trunk 的干净工作副本的顶级目录中执行以下操作:

svn merge -c345,364,377 ^/_your_branch_

在 Windows 上 cmd 在分支名称周围添加引号:

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

您可以在相应的section of the SVN Book找到更多信息。

【讨论】:

  • 在链接中,看起来^/trunk 是源分支。所以我认为这个例子应该是svn merge -c345,364,377 ^/yourbranch,同时检查了主干,对吧?
  • @Mark 是的,当然,我刚刚更新了示例。谢谢!
【解决方案2】:

如果一个人安装了 TortoiseSVN,下面是合并从一个分支到另一个分支的一系列修订的步骤。

  1. 对要合并来自源分支的一系列修订的分支进行本地签出。
  2. 在根文件夹内右键--> TortoiseSVN --> 合并
  3. 默认情况下,单击“合并一系列修订”。
  4. 点击下一步
  5. 输入要合并的 URL
  6. 输入要合并的特定修订范围
  7. 也可以单击显示日志并选择所需的修订或修订范围
  8. 单击测试合并以检查它是否合并所需的修订/文件。
  9. 点击合并

【讨论】:

    【解决方案3】:

    只是为了扩展 Yannick 的答案。
    当您可以将一个/几个特定提交从一个分支合并到您需要的另一个分支时(例如,需要将分支 'from' 中的 r13 和 r666 合并到分支 'to') :

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

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

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

      svn merge -c 13,666 https://fullpathtoyourproject/branches/_from_
      

    如果您需要获取 'fullpathtoyourproject',只需输入:

    svn info
    

    在部分 URL 中,您将看到此路径。

    我更喜欢使用完整的 url/路径,因为个人相对路径在某些项目中不适合我。

    【讨论】:

    • 这是一个很好的答案,因为它解释了合并的来源和目的地。
    【解决方案4】:

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

    【讨论】:

    • 是的,但是,怎么做??
    猜你喜欢
    • 2011-03-28
    • 2018-10-17
    • 2019-04-28
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    相关资源
    最近更新 更多