git cherry-pick适用场景详解
前提条件:有2个分支,分别是release,hotfix,其中release是用于生产环境的发布分支。
场景1:生产环境hotfix。
T1时刻,使用release分支发布生产。当时的HEAD的commit记为C1.
T2时刻,开发完成下一个迭代周期的代码,并且merge到release准备提测,此时release的HEAD记为C2,注意:C1和C2已经不同了。
T3时刻,生产环境发现了bug,开发基于C1创建一个hotfix分支,代码紧急修复并签入hotfix,用C3表示这个commit,发布生产。
问题:由于hotfix不能基于C2创建(T2时release已污染,存在下一周期待提测代码),如何确保C3被正确merge到release呢?
答案:使用git cherry-pick命令。
git checkout dev // 每个开发人员有自己的dev分支,这个分支基于release创建,时刻和release同步
git cherry-pick -n C3 //C3是hotfix的提交sha-1
git commit -am "把hotfix(C3)的代码cherry-pick到release"
git push origin dev
最后,去gitlab里发起一个MergeRequest吧,dev->release
场景2:上一次发布生产环境时,有