git cherry-pick

前言

  前段时间,有位朋友在群里问了这样一个问题。他们开了两个分支在并行开发两个功能(以下记为A,B),但是产品突然说A分支上的功能不上线,但是A分支上有部分东西的修改是本次迭代必须的。也就是说出现了需要部分合并的情况,当时我的反应就是使用cherry-pick命令。

举个栗子

在A分支上开发功能

  我们在A分支上提交若干个commit。

1
2
3
4
5
6
$ vim a.txt
$ git add .
$ git commit -m "A分支提交"
$ vim b.txt
$ git add .
$ git commit -m "A分支提交"

在B分支上开发功能

  我们在B分支上提交若干个commit。

1
2
3
4
5
6
$ vim c.txt
$ git add.
$ git commit -m "B分支提交"
$ vim d.txt
$ git add .
$ git commit -m "B分支提交"

  这个时候git仓库的commit记录是这样的。003

部分合并

  这个时候产品说A分支上的功能这个版本不上线。但是实际上A分支上的第一次commit是本次迭代所必须的。我们需要将其部分合并到B分支,我们需要找到这个commit的唯一标识。

1
2
3
4
5
$ git checkout A
$ git log

$ git checkout B
$ git cherry-pick d3088c71de2

  这里的d3088c71de2是在A分支上通过git log命令查找的commit的唯一标识。这个时候我们就完成了将A分支上的功能部分合并到B分支,是不是很神奇呢?我们就可以继续B功能的开发了。
  cherry-pick实际上做的事情是将指定的commit复制后拼接在当前分支的commit记录后。004
  
  
  
  余生没那么长,不要一味的付出去惯那些得寸进尺的人,请忠于自己,活得像最初的模样!

本文标题:git cherry-pick

文章作者:严方雄

发布时间:2018-04-27

最后更新:2018-09-13

原始链接:http://yanfangxiong.com/2018/04/27/git-cherry-pick/

0%