首先理解什么是偏离分支:
当本地的分支落后于远程分支时,本地分支又自行修改项目文件生成了新的提交,这时本地分支再执行git pull命令就不能快进合并,并且还容易发生冲突。这时的本地分支便称为偏离分支,因为这时的本地分支的最新提交跟远程分支的最新提交不同,产生了偏离。
这三个配置项的区别如下:
git config pull.rebase false
:这个配置将git pull命令的默认行为设置为合并(merge)。当你执行git pull时,Git会将远程分支的最新提交合并到你当前的分支上。合并操作会创建一个新的合并提交,将两个分支的修改合并在一起。
git config pull.rebase true
:这个配置将git pull命令的默认行为设置为变基(rebase)。当你执行git pull时,Git会将你当前分支上的所有本地提交保存下来,然后将远程分支的最新提交应用到你的当前分支上。变基操作会将你的本地提交放在远程提交之后,使得提交历史更加线性。
git config pull.ff only
:这个配置将git pull命令的默认行为设置为仅快进(fast-forward)。当你执行git pull时,Git只会在当前分支可以直接快进到远程分支的情况下才执行合并操作,否则会报错。快进操作是指将当前分支指针直接移动到远程分支指针所在的位置,不会创建新的提交。
总结来说,git config pull.rebase false 使用合并操作,git config pull.rebase true 使用变基操作,git config pull.ff only 仅使用快进操作。选择哪种方式取决于你对提交历史的偏好和项目的需求。
git config --global pull.rebase true //配置拉取自动变基