git入门(4)-Git rebase

每一次,当我们埋头苦干的时候,好像时空都静止了。一转头才发现,天已经渐渐亮起。想把今天的工作提交,却发现服务器的HEAD已不是昨天的它。这时候是不是倍感凄凉?还好有

git rebase master

使用git rebase master可以做到一些事情:
1.首先,它定位你当前检出分支和master之间的共同祖先节点(common ancestor)。
2.然后,它将当前检出的分支重置到祖先节点(ancestor),并将后来所有的提交都暂存起来。
3.最后,它将当前检出分支推进至master末尾,同时在master最后一次提交之后,再次提交那些在暂存区的变更。

此命令可以将本地的提交更新到上游的头位置。Git 在执行任何其它操作之前将会自动执行git checkout master

git rebase master topic

这条命令实际上是执行了以下两条命令:

git checkout topic

git rebase master

另外,在开发过程中,如果需要完成某个功能,需要创建并切换到某个分支,并且在这个分支上完成开发。如果项目比较大,并且经常被打断的情况下,就需要在本地进行多次的commit。这样在最终提交的时候,需要把所有的提交归纳为一次提交,这时就需要进行rebase操作。

git checkout -b branch_name

完成相应的操作。
在提交之前执行rebase。

git rebase -i HEAD~3

并且修改pick为squash,例如:

Pick commit1
Pick commit2
Pick commit3

修改为:

Pick commit1
squash commit2
squash commit3

当然也可以批量修改,在命令行里使用%s/pick/suash/g。

注意:第一个pick不要做修改。

你可能感兴趣的:(git)