变基
整合分支最容易的方法是merge
命令,他会把两个分支的最新快照已经两者最近的共同祖先进行三方合并,将合并结果生成一个新的快照并提交。
变基的做法就是将其中一个分支上做的修改在另一个分支上应用,而不进行三方合并。可以使用rebase
命令将某个分支上的修改都转移到另一个分支上。
它会首先找到两个分支的最近共同祖先,然后对比当前分支和祖先的历次提交,将相应的修改提取出来,然后将当前分支指向目标分支,最后将之前提取的修改依次应用。
当有多个分支想要合并的时候,可以将两个分支的修改通过变基合并到第三个分支上,这个功能很棒,在多人合作开发时非常有用。
变基的风险
不要对在你的仓库外有副本的分支执行变基。
变基操作实质是丢弃一些现有的提交,然后相应的新建一些内容一样的提交。如果已经提交推送,其他人也已经从该仓库拉取并进行了后续操作。此时使用git rebase
命令重新整理提交并推送,其他人将不得不再次的与你的提交进行合并,而且我们还要拉取并合并其他人所做的修改。
原则
只对尚未推送的本地修改执行变基操作,不对已经推送的提交执行变基。