跨分支提交代码怎么做

需要单独把多次提交中的某一次提交从你的分支迁移到另外一个分支上,即跨分支

git cherry-pick <commit_id>

比如:我想把以下分支


A-B  master
   \
    C-D-E-F-G develop

中的D,F 两次提交移动到master分支,而保持其他commit不变,结果就像这样


A-B-D-F  master
       \
        C-E-G develop

那么,思路是将D,F 用cherry-pick应用到master分支上,然后将develop分支对master分支变基。


$ git checkout master  
$ git cherry-pick D  
$ git cherry-pick F  
$ git checkout develop  
$ git rebase master


注意有些情况下使用cherry-pick会存在冲突,解决方法和我们平时合并分支遇到冲突一样

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7522559
  • 这篇博客你也可以参考下:将本地代码提交到远程仓库时新建一个分支
  • 除此之外, 这篇博客: 请输入提交消息以解释为何需要此合并,特别是如果它将更新的上游合并到主题分支中中的 #4楼 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 相反,您可以git Ctrl Z并重试提交,但这次添加“-m”并在其后添加引号中的消息,然后它将提交而不会提示您使用该页面。


  • 您还可以看一下 吴刚老师的【吴刚大讲堂】电商品牌分类标识系统设计课程中的 电商品牌分类标识系统设计的作用和意义小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    具体步骤:

    1. 首先需要将本地分支中某次提交打上标签(tag),方便后续操作。
    git tag <tag名称> <提交id>
    

    例如:

    git tag feature-A-commit2 a1b2c3d4
    
    1. 切换到需要合并提交的目标分支。
    git checkout <目标分支>
    

    例如:

    git checkout release
    
    1. 将打好标签的提交合并到目标分支。
    git cherry-pick <标签名称>
    

    例如:

    git cherry-pick feature-A-commit2
    
    1. 如果合并过程中出现冲突,需要手动解决冲突并提交。

    2. 最后将目标分支推送到远程仓库。

    git push origin <目标分支>
    

    完整操作示例:

    # 打上标签
    git tag feature-A-commit2 a1b2c3d4
    
    # 切换到目标分支
    git checkout release
    
    # 将标签提交合并到目标分支
    git cherry-pick feature-A-commit2
    
    # 解决冲突并提交
    
    # 推送目标分支到远程仓库
    git push origin release