2019-11-11 git rebase和git merge

git merge 是合并命令,顾名思义,将两个或多个分支合并到一起,只需解决一次冲突,易于理解,但是历史记录看起来会比较乱。

git rebase 是一个我在工作中不怎么常用的命令,rebase为重演的意思,这个命令要比merge 相对复杂一些,例如当前分支为a,另有一分支b,这两个分支上面分别有a1,a2和b1,b2两个提交,如果此时使用git rebase b,那么相当于把本地的a分支变化分解为如下两步:

  1. 先变成带有b1b2的b状态
  2. 再此基础上重演a分支的状态,即添加a1,添加a2
    当然,如果在添加a1时出现冲突,那么就要先解决a1提交的冲突,之后使用git rebase --continue继续在b分支的基础上重演a分支,即继续添加a2 ,如果a2提交仍存在冲突,那么就要再次解决,所以说git rebase 的使用要更加复杂,因为可能面临着多次的冲突解决;但是好处也很明显,即历史清晰简洁,为一条直线,没有分叉。同时,由于历史无分叉,那么本地的分支推到远程时必然会失败,因为远程分支并不是本地分支的祖先,他们在rebase那一刻就已经产生分叉了,所以这也是很多人拒绝使用rebase指令的原因,因为如果使用git push --force来覆盖远程代码的话,如果覆盖了主分支,那么团队中其他人的代码可能会被你搞坏掉,所以在使用git rebase的时候一定不要在主分支上进行!!

你可能感兴趣的:(2019-11-11 git rebase和git merge)