Git-8.cherry-pick的使用

各种业务需求的存在,经常会导致我们存在不同的项目分支来应对不同的实际业务场景,开发分支上的某些更新不能上线,导致我们只上线开发分支中的某几个commit。
这时候,我们就可以使用cherry-pick命令,将某个开发分支的commit提交到正式分支。或者将某个重复的更改同步到多个不同的业务分支上。

merge其他分支的某个commit

首先在开发分支上获取要合并commit的commitID,

1
git log --oneline

然后切换到目标分支进行merge

1
2
3
4
5
git checkout main # 切换到要进行修改的分支
git cherry-pick a1b2c3d4 # 合并 dev分支上的一个commit提交(-n 参数只合并变更不提交)
git cherry-pick <起始提交>^..<结束提交> # 合并dev分支上一个范围的连续commit提交
git cherry-pick <commit1> <commit2> <commit3> # 合并dev分支上多个独立的commit
git push origin main

常用的参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
git cherry-pick -h
用法:git cherry-pick [选项] <提交号>...
或:git cherry-pick <子命令>

--quit 终止反转或拣选操作
--continue 继续反转或拣选操作(基于当前合并的commit,继续合并下一个commit)
--abort 取消反转或拣选操作
-n, --no-commit 不要自动提交
-e, --edit 编辑提交说明
-s, --signoff 添加 Signed-off-by: 签名
-m, --mainline <n> 父编号
--rerere-autoupdate update the index with reused conflict resolution if possible
--strategy <策略> 合并策略
-X, --strategy-option <选项>
合并策略的选项
-x 追加提交名称
--ff 允许快进式
--allow-empty 保留初始化的空提交
--allow-empty-message
允许提交说明为空
--keep-redundant-commits
保持多余的、空的提交
-------------本文结束感谢您的阅读-------------