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
粉丝