likes
comments
collection
share

你必须要知道的git命令cherry-pick

作者站长头像
站长
· 阅读数 19

你必须要知道的git命令cherry-pick

在工作中你有没有遇到过以下情况:

  1. 从master新拉的分支,由于需求量大工期长,期间不知道有多少个新分支合入到master了,当自己要上线的时候要重新合入master时,发现出现了冲突,并且解决起来又很麻烦
  2. 不同需求上线时间不同时,分支切着切着就乱了,把本部署a分支的需求却在a分支上开发了,此时改怎么办呢?

针对以上两种情况,不知道大家有没有什么好的办法呢?在不知道git cherry-pick的时候,我可能真的是需要重新开发吧,真是费时又费力😭。 可是自从知道了git cherry-pick,简直是遇上了救星😁,再也不用苦恼了

cherry-pick的作用

将指定的commit提交到其他分支。

现在有两个分支master,branchA

  • master commit记录

你必须要知道的git命令cherry-pick

  • branchA commit记录

你必须要知道的git命令cherry-pick 此时如果想要把branchA的最后一次commit合入到master时,我们常用的方法有:

  1. 使用 git merge
git checkout master
git merge barnchA

你必须要知道的git命令cherry-pick 2. 使用 git rebase

git checkout master
git rebase barnchA

你必须要知道的git命令cherry-pick 还有一种不常用的是git cherry-pick

git checkout master
// 069dd85是在branchA分支的提交的commit id
git cherry-pick 069dd85

你必须要知道的git命令cherry-pick

虽然以上方法都可以将branchA的commit合入到master,但是还会有不同: 在上面的简单的例子中git rebasegit merge是没有区别的(实际在工作中这两者是不一样的,暂不叙述),产生的commitId和原分支的是一样的,而git cherry-pick会在提交到新的分支时,commitId会改变,与原分支不一样。

用法

如上实例我们已经知道了如果转移一个提交要怎么用

转移一个提交

git cherry-pick A

转移多个提交

// 转移AB
git cherry-pick A B

// 不包含A的连续转移
git cherry-pick A..B

// 包含A连续转移
git cherry-pick A^..B

转移某个分支的提交

// 转移某个分支的最新提交
git cherry-pick feature

其他一些转移(git cherry-pick)

你必须要知道的git命令cherry-pick

冲突

应用cherry-pick也会遇见冲突,当遇见冲突时,cherry-pick会停下来,需要让我们来决定如何继续操作。

  1. --continue:解决冲突后,将修改的文件重新加入暂存区git add .,然后使用命令,以此来继续
git cherry-pick --continue
  1. --skip:跳过当前的提交,继续进行队列中其余的命令。
git cherry-pick --skip
  1. --quit:发生代码冲突后,退出cherry-pick,但是不回到操作前的样子
git cherry-pick --quit
  1. --abort:当需要放弃合并是,可以使用如下命令回退到操作前的样子
git cherry-pick --abort

结束

以上就是cherry-pick的常用方法,别看很简单,实际上已经够用了,并且非常非常有用,快快用起来吧~

转载自:https://juejin.cn/post/7249163421692723257
评论
请登录