谈谈对git rebase的理解

gIt rebase 的三种作用

1.拉代码rebase

2.合并分支rebase

3.处理commit提交记录

1.拉取代码rebase

正常我们在拉取远程代码时使用 git pull

git pull === git fetch + giet merge 是使用fast-forwad模式,如果出现冲突后,解决冲突且重新提交记录,则会出现分支错乱的问题,

输入命令查看log记录  git log --graph --pretty=oneline --abbrev-commit

强迫症的同学一定会受不了,因此出现git pull --rebase

git pull --rebase === get fetch + git rebase

如上图,当使用git pull --rebase 出现冲突

 

则先解决冲突后 再

git add .

git rebase --continue

此刻,当前commit提交记录就变成一条线了。注意之后若重新提交则需要 git push -f  即为强制提交替换远程commit记录。

2.合并分支rebase

当你接到需求后从master分支切出dev分支,然后dev分支开发完成后需要先切回master分支,git pull --rebase 拉取最新的代码,再切回dev分支,这时候你需要先合并master的最新代码,正常git merge 后会出现commit提交错乱,如下图

这样就会让人感觉强迫症犯了。

因此,我们可以是用git rebase来合并,如上述,不使用git merge master, 使用git rebase master 后记录如下图

可以看到,master和dev将基线以后的commit进行了排序,变基的dev分支在前面,合并的master修改commit再后。 最后提交git push -f。 注意需要需要强制提交,因为变基后的dev和远程的dev commit记录顺序不一致。

3.处理commit提交记录

当我们需要处理commit记录时, 可以使用git rebase -i对分支记录操作, 常见的如删除,合并多个commit

执行git rebase -i head~3, 即前三次提交记录,如下图,执行后进入vim编辑器,将对应的commit前面的pick改为drop即为删除,squash为合并。

当使用git rebase -i修改后发现修改内容有误,想恢复修改之前的可以 执行 git rebase --abort 来恢复

原文地址:https://www.cnblogs.com/lyjfight/p/15748821.html