运用场景:
git上有3条代码线,master用于发版生产,bug用于生产bug修复,dev用于开发。假定bug是7月28日发现的,一共有5个bug。
这时我们会在bug线修复bug,预定7月30日发版生产。由于某个同事的疏忽,第5个bug在预定发版日期未修复完。另外4个bug是一定要上生产的,那我们只能合并前4次提交的记录。
上面这种场景,那可以用git cherry-pick命令了,只合并前4次提交的记录。
git cherry-pick命令格式:
git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] [-S[<keyid>]] <commit>…
git cherry-pick --continue
git cherry-pick --quit
git cherry-pick --abort
命令解读:
<commit>…:
需要合并的已发生的提交记录,多个用空格隔开,例如:git cherry-pick c1 c2 c3 c4;
--edit:
在合并前,git会要求你先填备注,就是每次提交前要填的提交备注;
-n:
默认情况下,cherry-pick命令执行成功后会自动提交合并的代码到本地仓库。如果使用该参数,cherry-pick执行成功后不会自动提交代码。当要合并多个提交记录的场景下,该参数特别有用处。例如:git cherry-pick -n c1 c2 c3 c4;
-m: parent-number
默认情况只会合并当前提交记录(例如c1)的代码,如果想要合并该次合并代码上一次或以前提交的(合并)的记录,则需要指定parent-number,例如:git cherry-pick -m c1 c2,意思就是合并c2,并且合并c2上一次提交的代码c1。这样就会将c1提交的文件也合并到当前分支;
git cherry-pick --continue
用于在cherry-pick失败或者revert(回退)失败,处理完冲突后继续执行;
git cherry-pick --quit
忽略当前正在执行的cherry-pick操作。在cherry-pick失败或者revert(回退)失败后,可以用来清除sequencer(序列器)的当前状态;
git cherry-pick --abort
取消操作并且返回上一个sequencer的状态。