在 Goland 中使用 git rebase 合并代码
背景: 在工作中经常要从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 合并分支。
更新一下 开发分支
我在 show_git_rebase 分支下的 README.md 新增了两行并且 提交了。
更新一下 master 分支
我在master 分支下的 README.md 也新增了两行, 并将这个提交push 到远程。这时候如果show_git_rebase 分支想要合并到 master 分支一定会失败, 因为两个分支在第五行的内容不一样。
使用 Git Rebase 让开发分支跟上 master 分支
鼠标右键 git -> git rebase 然后在右边的框框选择 origin/master, 这样会将远程的 master 分支上面的提交记录同步到当前分支, 这就好像当前分支是基于远程的master分支最新的提交记录进行修改的, git rebase 中的 "rebase" 精髓就体现在这里了。
如果有冲突, Goland 会弹出 冲突解决窗口:
Goland 很贴心地提供了三种解决冲突的方法,accept yours 就是以用自己的代码为准, accept theirs 就是以 rebase 的分支代码为准(也就是以master分支为准), merge 就是手动解决冲突。我这里直接使用 accept yours。
这时再次打开 git 图形界面, 可以看到 master 分支上的"show git reabse resolve conflict, first commit" 也被同步到了开发分支, 也就是开发分支上的最新的提交记录是建立在 master 分支上的最新提交记录上的,这样再提 merge request 自然就不会产生冲突。
在远程合并开发分支
可以看到 github 上 alble to merge, 这代表 开发分支与 master 分支没有冲突, 可以直接合并。
参考资料
转载自:https://juejin.cn/post/7168078346373300232