今天与同事研究讨论了一下 git rebase 这个命令,总结了一些心得体会,想简单的分享一下.
首先我们需要明确一些概念
- base: 在一个分支上,前一个commit就是相邻的后一个commit的base
- commitId:每一个commit都有一个commitId,是在整个git项目中对这个commit的唯一标识
所以我们再来看看rebase这个命令,顾名思义,就是改变了commit的base,来达到合并代码的目的,我们通过一个例子来直观说明.
现在我和我的同事在同一个分支(develop)上开发,开始开发前,分支上最新的几笔提交是这样的A1→A2→A3.在这个基础上呢,我自己本地也加了几笔提交,现在我本地的分支是这样的A1→A2→A3→B1→B2→B3,与此同时同事在自己的电脑上也有了几笔提交,所以他的电脑上是这样的,A1→A2→A3→C1→C2→C3,然后同事先向远程push了代码,现在远程是A1→A2→A3→C1→C2→C3,现在呢,我也打算向远程提交代码,所以我首先git fetch,从远程拉取下来同事的提交,然后git rebase,这里我重点讲一讲rebase的时候会发生什么,本来我的B1这个提交是基于A3的,rebase的时候,进行了重新组合,将拉取下来的commit接到了A3后面,然后把我的commit接到了最后,所以现在本地变成了A1→A2→A3→C1→C2→C3→B1→B2→B3,需要注意的是,B1,B2,B3这三笔提交由于他们的base由A3变成了C3,他们的commitId也跟着发生了变化
网友评论