git cherry-pick
目的
在一个分支上进行了一个或多个提交时,将来某一天突然发现在另外一个分支上也需要进行相同改动,此种情况下如何尽快达到目标。 举例场景: 在 在维护branch1上修改了bug,而修改该bug commit了一个或者多个提交 将来某天在 在维护branch2上也需要进行该bug的修改 此时可以使用cherry-pick将修改bug的一个或者多个commit同步过来。
方法演示
pick一个commit
# branch1 be17f7f (branch1) 1 cb86ba1 (HEAD -> branch2, master) bak a a119a6c (tag: v1.0) backup
# branc: branch2 cb86ba1 (HEAD -> branch2, master) bak a a119a6c (tag: v1.0) backup
观看log记录可知branch1比branch2多一个提交,将branch1的最后一个提交添加到branch2中,可使用命令
git cherry-pick commit_id
$ git cherry-pick be17f7f [branch2 974d4e9] 1 Date: Tue Apr 26 11:38:17 2022 +0800 1 file changed, 1 insertion(+), 1 deletion(-)
此时branch2中存在commit(be17f7f)
974d4e9 (HEAD -> branch2) 1 cb86ba1 (master) bak a a119a6c (tag: v1.0) backup
pick多个commit
$ git log branch1 --oneline 2e443af (branch1) 4 79941fe 3 5008ccd 2 be17f7f 1 cb86ba1 (master) bak a a119a6c (tag: v1.0) backup $ git log branch2 --oneline 974d4e9 (HEAD -> branch2) 1 cb86ba1 (master) bak a a119a6c (tag: v1.0) backup
此时branch1比branch2多三个commit,2,3,4,将多个commit pick过来的方法为git cherry-pick commit_id1..commit_id2,获取得到的commit为(commit_id1, commit_id2],即commit_id1后直到commit_id2之间的提交
$ git cherry-pick 5008ccd..2e443af Auto-merging a [branch2 81d11b2] 3 Date: Tue Apr 26 13:39:07 2022 +0800 1 file changed, 1 insertion(+) Auto-merging a [branch2 bb2e941] 4 Date: Tue Apr 26 13:39:14 2022 +0800 1 file changed, 1 insertion(+) $ git log branch2 --oneline bb2e941 (HEAD -> branch2) 4 81d11b2 3 974d4e9 1 cb86ba1 (master) bak a a119a6c (tag: v1.0) backup
可看到此时是没有commid_id1的,也就是没有commit(5008ccd)。
将多个commit pick过来的方法为git cherry-pick commit_id1^..commit_id2,获取得到的commit为[commit_id1, commit_id2],即commit_id1开始到commit_id2之间的提交
$ git cherry-pick 5008ccd^..2e443af [branch2 6cbfd17] 2 Date: Tue Apr 26 13:38:59 2022 +0800 1 file changed, 1 insertion(+) [branch2 8916981] 3 Date: Tue Apr 26 13:39:07 2022 +0800 1 file changed, 1 insertion(+) [branch2 a5947a7] 4 Date: Tue Apr 26 13:39:14 2022 +0800 1 file changed, 1 insertion(+) $ git log branch2 --oneline a5947a7 (HEAD -> branch2) 4 8916981 3 6cbfd17 2 974d4e9 1 cb86ba1 (master) bak a a119a6c (tag: v1.0) backup
如上所示可达到目的将commit_id, (commit_id1, commit_id2],[commit_id2]一个或者多个提交pick到指定分支,可避免手动再改动一遍的辛苦,更能避免修改的不完成造成的隐患。
总结
git cherry-pick commit_id git cherry-pick commit_id1..commit_id2 git cherry-pick commit_id1^..commit_id2
本文来自博客园,作者:flxx,转载请注明原文链接:https://www.cnblogs.com/faithlocus/p/16194525.html
分类:
VCS
标签:
git
, cherry-pick
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?