如何同步代码到目标分支

记录一次项目中Bitbucket 开启 cascading merge 后极大的简化同步代码的重复工作

相信大家在做自己的项目开发的时候都会遇到一个问题。在项目上线前都会从master分支切出一个release分支,继续做一些功能的实现或bug修复。但这时就会难免遇到一个问题 - 新的修改需要同步到master分支上。

如何同步release的代码到master呢?下面我就来说说我的常用做法:

Git Stash

在做完完整的code change 后,我们可以在命令行输入

git bash 复制代码
git stash

git 会帮我们本次的修改存在本地,接着我们切到我们的release branch

git bash 复制代码
git checkout release/1.0

再将我们缓存的代码应用到release分支

git bash 复制代码
git stash apply

这样我们所有的修改就同步到release 分支了。

Git Cherry-Pick

cherry-pick的使用稍微繁琐一点,需要我们提供期望的commitHash
首先切到目标分支

git bash 复制代码
git checkout release/1.0

然后应用单次提交

git bash 复制代码
git cherry-pick abc  # abc 是你想应用的提交哈希

应用多个不连续的提交

git bash 复制代码
git cherry-pick abc def  # abc def 是你想应用的提交哈希

应用连续的提交

git bash 复制代码
git cherry-pick <commitHash1>..<commitHash2>

Bitbucket 提供的 cascading merge

在Bitbucket 中打开我们的项目,点击Setting, 将cascading merge 配置项开启。一旦开启了cascading merge 后我们就再也不需要在master创建新的分支同步代码了,Bitbucket 可以帮我们完成。

当我们在release分支修改完代码创建PR后, 当我们点击merge时,Bitbucket 自动的帮我们创建一个合并到master。可以说非常的方便。如果遇到冲突解决一下冲突就好了。