Git cherry-pick
三国演义中的赤壁之战花了80%的篇幅讲战前的准备和酝酿,因为在战争打响的那一刻起,成败就已经分晓了,在战争的进程中双方都没有后退的余地,只有被时间推着像那个注定的结局前进。- -饺子
作用:将某个分支的某一次commit的修改merge到另一个分支,因为有时没有必要将合并所有分支! 仅仅pick一个樱桃!
用法:
将y分支的某次commit(需要commit id) 合并到另一个x分支。 需要先将y分支拉到本地(Nian),然后,切换到本地的x分支并将其与远程同步,然后,git cherry-pick commitId
commitID自带分支信息吧。
commit id可以通过git log来查看,例如下图,很长:
遇到过的一个使用场景:
将本地master分支与远程的master分支同步,然后以本地的master分支为蓝本,创建一个分支y,进行新功能开发,但是在y分支进行开发时,由于一些原因进行了多次commit,其中一些commit是没有用的,这时,如果将y分支推到远端,
然后,用远端的这个y分支create merge request的话,会导致你请求的requeset包含一些没有用的commit,这会导致管理员将你的请求merger到master后,在master的历史记录中有你的commit历史(包括你的哪些没有用的历史commit)。
方法:
以master为蓝本,在本地创建一个y2分支,然后,将y分支中的有用的commit,通过cherry-pick来merger到y2分支,然后将y2分支推送到远端,创建merger request。
(通过git log查看y分支的commit记录,挑出有用的commit的id,可能不连续。 然后,切到y2分支,通过多次cherry-pick把y分支的有用commit合并到y分支)