【git命令】git cherry-pick

git cherry-pick 

git cherry-pick命令的作用,就是将指定的提交(commit)应用于其他分支。

$ git cherry-pick [ommitHash]

上面命令就会将指定的提交commitHash,应用于当前分支。这会在当前分支产生一个新的提交,当然它们的哈希值会不一样。

 

举例说明:代码仓库有masterfeature两个分支。

a - b - c - d   Master
         \
           e - f - g Feature

现在将提交f应用到master分支。

# 切换到 master 分支
$ git checkout master

# Cherry pick 操作
$ git cherry-pick f

上面的操作完成以后,代码库就变成如下所示:

a - b - c - d - f   Master
         \
           e - f - g Feature

从上面可以看到,master分支的末尾增加了一个提交f

git cherry-pick命令的参数,不一定是提交的哈希值,分支名也是可以的,表示转移该分支的最新提交。

$ git cherry-pick feature

上面代码表示将feature分支的最近一次提交,转移到当前分支。

 

合并多个提交

git cherry-pick <hashA> <hashB>     // 合并两个提交
git cherry-pick <hashA>..<hashB>    // 合并从A到B两个提交中到所有提交,但不包含A
git cherry-pick <hashA>^..<hashB>   // 合并从A到B两个提交中到所有提交,包含A

 

冲突:如果操作过程中发生代码冲突,cherry pick 会停下来,让用户决定如何继续操作。用户解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .),第二步使用下面的命令,让 Cherry pick 过程继续执行。

git cherry-pick --continue

发生代码冲突后,放弃合并,回到操作前,使用如下命令:

git cherry-pick --abort

发生代码冲突后,退出 Cherry pick,但是不回到操作前,使用如下命令:

git cherry-pick --quit
git cherry-pick --continue  // 1. 解决完冲突以后,继续下一个 cherry-pick
git cherry-pick --abort     // 2. 如果不想解决冲突,要放弃合并,用此命令回到操作以前
git cherry-pick --quit      // 3. 不想解决冲突,放弃合并,且保持现有情况,不回到操作以前

 

参考资料

1. 深入理解 git cherry-pick 操作

2. git cherry-pick 教程

3. git 合并分支,解决冲突,git cherry-pick使用方法

posted @ 2022-05-12 11:42  苏格拉底的落泪  阅读(109)  评论(0编辑  收藏  举报