摘樱桃

摘樱桃(Cherry Pick)是Git中的一种高级操作,它和分支合并的用途有些类似,但摘樱桃允许从一个分支中选择特定的若干提交并将其应用到当前分支。这在你只想引入某些提交而不是合并整个分支时特别有用。

摘取提交

下面例子中,假设dev分支比master分支领先2个提交,我们现在要从dev分支向master分支摘取这2个提交,我们先切换到master分支,然后执行以下命令。

git cherry-pick 95627f2088b3d18ea4ef937f4680b57bd312d2d4 58fd7bcc50f268b9a91545f5bcc488a5f5ef96f1

如果一切正常,输出结果如下。

可以看到Cherry Pick为我们将这2个提交从dev分支摘取了过来,不过在master分支中,它被设置了新的commitID,提交时间和提交说明则默认沿用了原提交的时间和说明信息。

如果你想顺序的摘取多个提交,可以使用git cherry-pick <起始commitID>..<结束commitID>的写法。

摘取时的冲突处理

和分支合并类似,摘樱桃本质也涉及合并操作,因此存在冲突的可能。当冲突发生时,Git会暂停摘樱桃操作,并提示你手动解决冲突。下面例子中,我们从dev分支摘取1个提交到master分支,但这个提交和master分支中的内容存在冲突。

git cherry-pick 547a22a0d1367a16e5e44484d9ade4d5c6c5820b

查看冲突文件,可以看到Git已经标记出了冲突的部分,现在我们需要手动解决冲突。

解决完成后,将文件添加到暂存区,然后使用git cherry-pick --continue命令继续摘樱桃操作。

git add README.md && git cherry-pick --continue

可以看到冲突处理完成,目标提交被成功摘取到了当前分支。

此外,如果想要放弃本次摘樱桃操作,也可以使用git cherry-pick --abort命令。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap