git之 cherry-pick的使用

cherry-pick 是 Git 中一个非常有用的命令,它允许你选择性地将某个(或多个)提交应用到当前分支,而不是合并整个分支。

比如你从master分支拉取了一个dev分支,然后大家开始在dev分支疯狂写代码提交N次,然后你再从这个提交过多次的dev分支拉了feature分支。此时你在feature分支写了一些代码后 ->做了提交,然后你提了一个pr(feature分支合入到dev分支)正常合入了你的代码,此时没有任何问题。

但是你此时想把feature分支代码提交一个pr合入到master分支。随后你会发现:这个pr不仅有你在feature分支中修改的代码,还有很多其他人在dev分支中提交的跟master分支的差异化代码也跟着一起合入到这pr当中了(因为你的dev分支是从master拉取分支而来的,git为了代码对齐,会把dev分支中的其他所有提交也一起合入你的这个pr中,而不是仅仅提交你在feature分支中的改动)。那么 如果你只想 合入你的feature分支中的那几个被你修改的文件,如何解决呢。此时cherry-pick就是专门为解决这个难题而生的。

步骤:

git checkout feature #1.进入到你的feature分支,查看你想合入master的一次或者多次提交的hash值

git log  #2.查看提交记录: commit_hash_value_1,  commit_hash_value_2,  commit_hash_value_3 ...

git checkout master #3.切换到master分支,然后拉取master最近代码后,以master为基准拉一个新的分支出来

git chekcout -b master_sub_branch  

4.使用cherry-pick选择提交记录:

如何你想选择 单次提交使用

git cherry-pick  commit_hash_value1 

如何你想选择多次提交使用:

git cherry-pick  commit_hash_value1 git cherry-pick  commit_hash_value2 git cherry-pick  commit_hash_value3

或者

git cherry-pick commit_hash_value_1^..commit_hash_value_3

或者

git cherry-pick commit_hash_value_1..commit_hash_value_3

image

 5.如果有代码冲突,需要手动解决冲突,解决后执行:

git add xxxfilenamexxx

git commit -m "xxx"

6.在master_sub_branch分支提交代码

git push

7.提交一个pr: 从master_sub_branch分支到master分支的pr

9.review代码,没问题后,直接合入master即可。

到这里,你本次pr合入的代码就仅仅是你的feature分支中,你对应改动的几次提交记录的代码。不会包含其他人提交的代码,

image

 

posted @ 2025-11-06 14:07  苹果芒  阅读(41)  评论(0)    收藏  举报