git cherry-pick commit	// 合并 commit 提交到当前分支

git cherry-pick 后加一个分支名,则表示将该分支顶端 commit 提交进行 cherry-pick 合并

git cherry-pick <branchname>
  • 多条 commit 提及合并
  • git cherry-pick commit1..commit2	// 合并commit1和commit2之间的所有分支 (commit1, commit2]
    git cherry-pick commit1^..commit2	// 合并commit1和commit2之间的所有分支 [commit1, commit2]
    
    常用options:
      --quit                退出当前的 cherry-pick 序列
      --continue            继续当前的 cherry-pick 序列
      --abort               取消当前的 cherry-pick 序列,恢复当前分支
      -n, --no-commit       不自动提交
      -e, --edit            编辑提交信息
    

    查看当前分支下的前 n 次提交记录并以一行展示

    git log —oneline -n
    

    当没有成功自动提交时,则说明存在冲突

  • 在编辑器中手动解决冲突,解决冲突后。
  • 使用 git commit 手动进行提交 或者 git add . 后直接 git cherry-pick —continue 继续
  • 当没有出现代码冲突的话,该命令则会自动提交

    解决冲突后使用 git add . 后使用该命令会继续 cherry-pick

    git cherry-pick --continue
    

    取消某次 cherry-pick 合并,当前分支会恢复到 cherry-pick 前的状态

    git cherry-pick --abort
    

    中断某次 cherry-pick 合并,当前分支中未冲突的内容状态将为 modified 状态

    git cherry-pick --quit
    

    合并时不进行自动合并提交

    git cherry-pick -n
    

    合并时重新编辑提交的 commit 信息

    git cherry-pick -e 
    

    fatal: You are in the middle of a cherry-pick – cannot amend.

    cherry-pick 时出现冲突,没有解决冲突就执行 git commit --amend命令,从而会提示该信息。

    解决方案:

    首先在 git commit --amend 之前解决冲突,并完成这次 cherry-pick:

    $ git add .
    $ git cherry-pick --continue
    

    The previous cherry-pick is now empty, possibly due to conflict resolution.

    cherry-pick 时出现冲突,解决冲突后本地分支中内容和 cherry-pick 之前相比没有改变,因此当在以后的步骤中继续 git cherry-pick 或执行其他命令时,由于此时还处于上次 cherry-pick,都会提示该信息,表示可能是由于解决冲突造成上一次 cherry-pick 内容是空的。

    解决方案:

  • 执行 git cherry-pick --abort 取消上次操作。
  • 执行 git commit --allow-empty 表示允许空提交。
  • 清香的orange 121.1k
    粉丝