背景: 在工作中常常要从master 分支切到 dev 分支进行开发, 当将dev 分支push到长途提交 merger request 不时常会发生抵触,这时需要到本地IDE 中切到master 分支, 然后 git pull 更新到最新的代码, 再运用git merger 将 master 分支兼并到 dev分支(需要手动处理抵触),再commit, 最终将本地的 dev 分支push 到长途。这样 merger request 中的 dev分支就不再和 master 分支有抵触能够兼并了。但这样会发生一个十分丑恶的兼并分支时的commit。有没有一种办法, 使得自己的 dev 分支能够不时刻刻跟上长途的 master 分支的 commit 记载,这样 dev 最终兼并到 master 分支时相当于在 master 分支的最终一次 commit 基础上进行修正, 天然就不会发生抵触。 git rebase 刚好能够满意这个需求, 特此记载一贴, 在 Goland 图形化界面中运用git rebase 兼并分支。

更新一下 开发分支

在 Goland 中使用 git rebase 提前解决冲突
我在 show_git_rebase 分支下的 README.md 新增了两行并且 提交了。

更新一下 master 分支

在 Goland 中使用 git rebase 提前解决冲突
我在master 分支下的 README.md 也新增了两行, 并将这个提交push 到长途。这时候假如show_git_rebase 分支想要兼并到 master 分支一定会失利, 由于两个分支在第五行的内容不一样。

运用 Git Rebase 让开发分支跟上 master 分支

在 Goland 中使用 git rebase 提前解决冲突
鼠标右键 git -> git rebase 然后在右边的框框选择 origin/master, 这样会将长途的 master 分支上面的提交记载同步到当时分支, 这就如同当时分支是基于长途的master分支最新的提交记载进行修正的, git rebase 中的 “rebase” 精髓就体现在这里了

假如有抵触, Goland 会弹出 抵触处理窗口:

在 Goland 中使用 git rebase 提前解决冲突

Goland 很贴心地供给了三种处理抵触的办法,accept yours 便是以用自己的代码为准, accept theirs 便是以 rebase 的分支代码为准(也便是以master分支为准), merge 便是手动处理抵触。我这里直接运用 accept yours。

在 Goland 中使用 git rebase 提前解决冲突
这时再次打开 git 图形界面, 能够看到 master 分支上的”show git reabse resolve conflict, first commit” 也被同步到了开发分支, 也便是开发分支上的最新的提交记载是建立在 master 分支上的最新提交记载上的,这样再提 merge request 天然就不会发生抵触

在长途兼并开发分支

在 Goland 中使用 git rebase 提前解决冲突
能够看到 github 上 alble to merge, 这代表 开发分支与 master 分支没有抵触, 能够直接兼并。

参考资料

www.jetbrains.com/help/go/202…