Scenario

做项目的时候,一开始是从别人哪儿copy的工程,我在上面修改且不能拉取代码。在拿到工程权限后,需要将部分本地commit merge到最新的工程中,以下是解决步骤

  • git branch branch_for_merging 首先新建一个分支,存放我所有的commit
  • git fetch 抓取远端的工程,不然从 branch_for_merging 这个分支跳转回当前分支后,会报错 branch_for_merging is ahead of '当前分支‘ <commitHash> commits
  • git reset --hard <commitHash> 将当前分支回退到XXXX次提交
  • git pull 将工程拉到最新的版本
  • 使用 git cherry-pick <commitHash>
  • git cherry-pick

    基本使用方法

    git cherry-pick 的使用场景就是将一个分支中的部分的提交合并到其他分支

    git checkout master 
    git cherry-pick <commitHash> 
    

    使用以上命令以后,这个提交将会处在master的最前面

    合并多个提交

    git cherry-pick <hashA> <hashB>     // 合并两个提交
    git cherry-pick <hashA>..<hashB>    // 合并从AB两个提交中到所有提交,但不包含A
    git cherry-pick <hashA>^..<hashB>   // 合并从AB两个提交中到所有提交,包含A
    

    pick以后产生了冲突

    当执行了cherry-pick 命令如果有冲突,就会报冲突错误,一下是解决方法:

    git cherry-pick --continue  // 1. 解决完冲突以后,继续下一个 cherry-pick
    git cherry-pick --abort   // 2. 如果不想解决冲突,要放弃合并,用此命令回到操作以前
    git cherry-pick --quit   // 3. 不想解决冲突,放弃合并,且保持现有情况,不回到操作以前
    

    将当前的提交合并到另一个工程

    没有用到,不太会,但有方法

    [学习资料来源于阮一峰大佬]

    分类:
    开发工具
    标签: