赞
踩
git rebase 用来合并提交 commit 的提交历史。这个命令应该在合并到master分支之前触发,保证 master 分支上没有那么杂乱的提交明细。
适用场景是:在需求开发过程中,我们有多次 commit 提交操作,在合并到 master 之前,我们可以将这些 commit 操作合并成一个 commit 操作,这样 master 分支就会显得比较干净。
git rebase -i commitID
我对这个命令字面的理解是:将 commitID 作为 base 重新提交一次 commit 操作。实际工作中,使用这个命令确实也不多。但身边曾经有一个同事确实经常使用这个命令。
特别注意的点:
rebase 变基,名字起的就有些困惑,我们通过下面的图解来理解变基的要实现的目的:
这个图示对于完全不熟悉变基操作的人而言,差点意思。但表达的意思确实已经足够了,含义就是将 C4 变基到 master 分支上,搞清楚谁变基谁非常重要。
这里是 sourcetree 解释变基所用的图式, 变基允许我们将feature 分支中的修改,重新选择一个变更的位置。在变基过程中,还允许将 feature 分支中的多次修改提交合并成单次。
最好的解释,还应该归属于 goland git 工具,可视化的变基功能,做的要比 sourcetree 好。而且,动手使用了一下,也觉得 goland git 工具确实不错。
我们为什么要使用 rebase,肯定是要因为 rebase 和 merge 存在区别,而我们恰恰想使用这些区别。下图就是默认的变基行为,之前的变更(分支1-2-3)是基于 D 做的变更,在 rebase 之后,变基成为是基于 F 的做的变更。在 log 历史上,还是存在 3 次提交记录(1、2、3)。
我个人使用变基,主要是想清理一下 git log 的历史提交记录。在开发功能的过程中,需要经常 commit 代码,而不是所有功能都完善了之后整体提交一次 commit。如果每次提交都是一个有意义的变更节点,那也不需要 rebase 操作,关键有些提交非常没意义,可能是因为要做任务切换,或者记录一行调试日志,就提交了一次。删除一行调试日志,就又提交了一次,整个分支的提交历史非常多,看起来很没有技术素养。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。