阅读 82

在 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 合并分支。

更新一下 开发分支

1668947009054.png我在 show_git_rebase 分支下的 README.md 新增了两行并且 提交了。

更新一下 master 分支

c8c074fe29b584e04fc4a5d677ae3de.png我在master 分支下的 README.md 也新增了两行, 并将这个提交push 到远程。这时候如果show_git_rebase 分支想要合并到 master 分支一定会失败, 因为两个分支在第五行的内容不一样。

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

cd0e12da6fa6f38f5a3160cff742e46.png鼠标右键 git -> git rebase 然后在右边的框框选择 origin/master, 这样会将远程的 master 分支上面的提交记录同步到当前分支, 这就好像当前分支是基于远程的master分支最新的提交记录进行修改的, git rebase 中的 "rebase" 精髓就体现在这里了

如果有冲突, Goland 会弹出 冲突解决窗口:

34eedbdd08b90b56b80a86b5f0dab0d.jpg

Goland 很贴心地提供了三种解决冲突的方法,accept yours 就是以用自己的代码为准, accept theirs 就是以 rebase 的分支代码为准(也就是以master分支为准), merge 就是手动解决冲突。我这里直接使用 accept yours。

ecd7b0ab42bcd47c434c2953febd491.jpg这时再次打开 git 图形界面, 可以看到 master  分支上的"show git reabse resolve conflict, first commit" 也被同步到了开发分支, 也就是开发分支上的最新的提交记录是建立在 master 分支上的最新提交记录上的,这样再提 merge request 自然就不会产生冲突

在远程合并开发分支

bdfaaeea09c304b032d168f20a30b21.png可以看到 github 上 alble to merge, 这代表 开发分支与 master 分支没有冲突, 可以直接合并。


作者:焗猪扒饭
链接:https://juejin.cn/post/7168078346373300232


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐