Akemi

git仓库使用cherry-pick进行单独代码合并

2025/02/26

现在有一个生产和一个预发环境,通过合并staging分支的代码到master分支来进行更新

但是出于方便回滚的目的,要一点一点代码进行合并测试

我应该如何精确让我提交的代码能够被合并,而不附带上别人的代码呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
1.提交已有的代码到staging

这个前缀是zsh的功能,不用管
git:(staging) sudo git commit -m 'add material to prod'
git:(staging) sudo git push

并且记录提交代码的摘要,这个摘要可以通过git logs查看
也可以在网页中查看
63cbc67a
d16ef0f7

2.切换到master分支并且先同步
git:(staging) sudo git checkout master
git:(master) sudo git pull

3.依据master分支创建一条本地分支
git:(master) sudo git checkout -b cherry-pick-63cbc67a

4.检入之前提交的代码
git:(cherry-pick-63cbc67a) sudo git cherry-pick 63cbc67a d16ef0f7

自动合并 xxx
[cherry-pick-63cbc67a 1c846d7] add material to prod
Date: Wed Feb 26 11:06:16 2025 +0800
1 file changed, 87 insertions(+)
自动合并 xxx
[cherry-pick-63cbc67a 736afb7] adjust rbac
Date: Wed Feb 26 11:03:43 2025 +0800
2 files changed, 5 insertions(+), 4 deletions(-)

5.(可选)如果有冲突,需要手动解决冲突
git:(cherry-pick-63cbc67a) sudo git add .
git:(cherry-pick-63cbc67a) sudo git cherry-pick --continue

6.生成远程临时分支,因为这个分支目前只在本地有,仓库是没有的
git push --set-upstream origin cherry-pick-63cbc67a

7.将临时分支与master分支合并
(不推荐)git:(master) git merge cherry-pick-63cbc67a
(推荐)使用网页端,进入临时分支,发起合并请求
CATALOG