如果在一个代码变更里面充斥着大量无用且不清晰的提交历史,会存在以下问题:
1. 不利于代码的code review;
2. 不利于代码回滚,面对海量的commit很难清晰的判断出应该回滚到那个commit。
此时git rebase就派上用场了,git rebase的使用场景之一就是合并多次提交记录。如下图连续修改a.js的内容两次,产生了两个commit记录,此时为了提交历史的简洁性可以考虑将其合并成一次提交。
假如现在有这样一个场景,你基于master分支的2f2d8c5切出来一个feature分支进行开发,并进行了两次提交27dbad3和2f2d8c5:
此时master分支有一次新的提交e749bea:
如果此时进行的功能依赖e749bea这个commit,那么此时就需要同步master分支的代码到feature分支,此时有两种做法,先介绍下最常用的merge:
git checkout master
git pull
git ck feature/xxx
git merge master
可以看出提交记录分叉了,多了一个merge的commit信息,显然这个commit的意义不大,那如何解决呢,此时再看下git rebase(feature/add-file-2)分支基于e749beacommit切出)
git checkout master
git pull --rebase
git checkout feature/add-file-2
git rebase master
可见代码记录没有出现分叉,也没有类似merge这种没有意义的commit点。看上去feature/add-file-2这个分支就像以2add7bc这个基点切出来的一样。
我们应该保持总是在自己的分支上执行git rebase命令来同步master 分支上的代码。 而不要反向操作。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。