如何保证git历史的线性
那么,我们如何保证git 历史的线性,像下图这样呢?
非常简单,我们只需要使用rebase(变基)命令即可!在正式的介绍命令的使用前,我们先说说什么是变基!
rebase命令使用
rebase
的使用非常简单,我们只需要在git pull的时候,添加上额外命令即可!
git pull --rebase
rebase变基简介
简单来说,rebase的作用就是永远会让我们本地的代码处于最新状态。
比如,我们一开始是使用B节点开发代码的,开发到B2时,此时远程已经有人推送了C节点。
在B2节点使用rebase变基,会让我们的B1节点和B2节点位于C节点上。大概是这样:
因此,使用rebase变基后,git永远只有一条线性历史,非常直观。(感谢倔友abc_d_e指出文字错误)
自动变基
每次提交代码都使用git pull --rebase
命令繁琐而且容易出错,我们可以全局设置git pull默认使用变基的方式,一劳永逸!
// git pull默认使用变基操作
git config --global pull.rebase true
如果你还是执意喜欢merge,那么使用下面的命令
// git pull默认使用合并操作
git config --global pull.rebase false
自动变基的问题
自动变基会面临一个额外的问题:就是如果你本地文件有更改的话,变基会失败,因为变基前服务区必须是干净的。
有两种方法解决这个问题
- git pull前,先使用git commit暂存代码
- git pull前,先将使用 git stash将保存
冲突问题
如果使用git pull有冲突,则合并完冲突之后,执行一下 git rebase —continue 就好了,其它和原先的用法没有任何区别。
本篇文章我们介绍了git pull
的用法,明白了它有merge和rebase两种模式。默认情况下,它使用的是merge。使用merge的方式拉取代码会导致git历史变得复杂,不利于维护和溯源。
因此,建议使用rebase的方式拉取代码。我们只需要做如下设置即可
git config --global pull.rebase true
然后,我们就可以开开心心的使用git pull了!