同福

TortoiseGet使用Cherry Pick合并一个commit到分支上面【20210822】

介绍

介绍

有的时候我们在合并Git分支的时候会发现两个分支的差异特别大,这种情况多发生在多人开发一个项目的时候。

如果只是差异大还好,如果还伴随着一堆冲突,那简直不要太恶心~~

原因

这个原因大家应该比较容易想明白,就是在你commit修改的时候,也许其他人已经commit过很多很多次了。

这里面不乏一些公共库大家都会往里面添油加醋,这时候后面提交的人就会遇到突出问题了。

解决

福哥模拟了一次需要用到Cherry Pick的场景,利用这个场景给大家演示如何通过Cherry Pick解决问题。

master

福哥在master分支上面改一个文件PYMySQL.py,增加了demo方法。

home/topic/2021/0823/17/3ea563a334be94ce6442f726f13197ce.png

testA

福哥从master分支的久远的历史里面切出了一个分支testA,这个时候项目里面还没有PYMySQL.py文件。

福哥在testA分支下面创建了PYMySQL.py文件,并且增加了demo方法,定义与master分支的不太一样。

home/topic/2021/0823/17/fe5007a8d495b360115d287227287ef9.png

福哥又在testA分支下面创建了CherryPick.py文件,里面打印了一句话。

home/topic/2021/0823/17/143aa77fb38e67406c96653c2035dbac.png

合并testA到master

果不其然,合并失败,遇到冲突了~~

home/topic/2021/0823/17/2f6c149d139a678b821e5da5dc982595.png

home/topic/2021/0823/17/53ef36e1c5c727bad7ab115fad7383a6.png

这个时候如果福哥只是想将CherryPick.py的修改合并到master,又不想处理PYMySQL.py的冲突(也许实际情况会有几十个上百个冲突也说不定),该怎么办呢?

打开log

首先打开master分支的日志。

home/topic/2021/0823/17/bac596e16975b0fa6612b773de7dfb7e.png

切换testA的log

切换到testA分支的日志。

home/topic/2021/0823/17/5203e86d9ffc51714cd516230eb27349.png

Cherry Pick

使用Cherry Pick合并单次修改提交。

home/topic/2021/0823/17/2d1d1a0e3e576c2d7567f6329d49ef83.png

合并

点击“Continue”按钮合并单词提交。

home/topic/2021/0823/17/fd054e61f924b1b55bf66b6d68f76510.pnghome/topic/2021/0823/17/77a3928d8551b700f6fc377468f61af0.png

推送

再次推送到服务器,成功了!

home/topic/2021/0823/17/d98ee8cde6b16e8f8e5e58f3004b90fe.png

注意事项

  • Cherry Pick也会遇到冲突情况,但是只需要解决本次提交的冲突就可以合并了。

  • 如果源分支有多次提交,需要逐个进行Cherry Pick,按照提交的顺序来。

总结

这个Cherry Pick在实际的工作当中是非常实用的,大家可以灵活运用这个功能避免不必要的操作,浪费时间不说,还增加项目风险。