git rebase用法详解
2019-08-10 本文已影响0人
Josephx
1. 利用git base来合并多次commit
git rebase -i HEAD~2 //合并最近俩次的commit
我是缩小后并居中的图.jpg
- pick 的意思是要会执行这个 commit
- squash 的意思是这个 commit 会被合并到前一个commit
- drop 代表合并提交中排除这个提交
git rebase --abort
2. 分支的操作
2.1.我们先从 master
分支切出一个 dev
分支,进行开发:
git:(master) git checkout -b feature1
这一次彻底搞懂 Git Rebase.jpg
)
2.2.这时候,你的同事完成了一次 hotfix
,并合并入了 master
分支,此时 master
已经领先于你的 feature1
分支了:
2.3.恰巧,我们想要同步 master
分支的改动,首先想到了 merge
,执行:
git:(feature1) git merge master
这一次彻底搞懂git2-5343555.jpg
图中绿色的点就是我们合并之后的结果,执行:
git:(feature1) git log
就会在记录里发现一些 merge
的信息,但是我们觉得这样污染了 commit
记录,想要保持一份干净的 commit
,怎么办呢?这时候, git rebase
就派上用场了。
2.4.让我们来试试 git rebase
,先回退到同事 hotfix
后合并 master
的步骤:
2.5.使用 rebase
后来看看结果:
git:(feature1) git rebase master
这里补充一点: rebase
做了什么操作呢?
首先, git
会把 feature1
分支里面的每个 commit
取消掉;
其次,把上面的操作临时保存成 patch
文件,存在 .git/rebase
目录下;
然后,把 feature1
分支更新到最新的 master
分支;
最后,把上面保存的 patch
文件应用到 feature1
分支上;
从 commit
记录我们可以看出来, feature1
分支是基于 hotfix
合并后的 master
,自然而然的成为了最领先的分支,而且没有 merge
的 commit
记录,是不是感觉很舒服了。