git之rebase

用一句话解释git rebase branch_name的意思,那就是
在当前分支和branch_name共有的代码基础上,把branch_name(基于共有代码)新增的修改应用到当前分支上

git基本操作

1.创建一个本地分支,并使这个分支和远程分支同步。
git checkout -b dev origin/dev
或者git checkout -b dev remotes/origin/dev

2.add,commit之后,push到远程分支:
git push origin HEAD:dev

git config –list
列出所有配置

为什么会有rebase

http://gitbook.liuhui998.com/4_2.html
主要用途,就是远端的主分支更新了,而本地却基于旧的主分支进行了更新,
需要把远端的主分支拉下来和本地的更改进行合并。
但是git rebase不用合并,而是通过把之前的commit做成patch,
然后把本地的代码更新到origin的新版本,然后再把patch打到新版本的主分支代码上。
用远程next分支更新本地当前分支:
Merge into the current branch the remote branch next:
$ git pull origin next

使用分支去跟踪远程分支的原因就是,
如果用远程分支更新本地的master分支,八成会conflict
所以用跟踪分支的办法,提交到一个远程分支
等待远程分支合并到主分支之后,代码就进入master中了。
这样不会有冲突,不会显得一团乱麻,而是比较有条理。

好的,到这里大概已经掌握rebase的用途了。
也会快速有条理地去思考,比较各分支之间的变化, 知道自己要做什么了。
参考https://www.cnblogs.com/hydah/archive/2012/04/10/2440220.html

如何使用rebase

如果我要让test分支从test0到test2之间所有的改变都添加到master分支来,使得master分支包含test分支的所有修改。
如下图:

master0(初始化后的版本)
||
v
master1===test0==>test1===>test2
||
v
master2===>master3

我们切换到master分支,然后运行下面的命令,即可实现我们的要求:
git rebase test
这个时候,git做了些什么呢?

先将test分支的代码checkout出来,作为工作目录
然后将master分支从test分支创建起的所有改变的补丁,依次打上。如果打补丁的过程没问题,rebase就搞定了
如果打补丁的时候出现了问题,就会提示你处理冲突,去修改代码。处理好了,可以运行git rebase –continue继续直到完成
如果你不想处理,你还是有两个选择,一个是放弃rebase过程(运行git rebase –abort),另一个是直接用test分支的取代当前分支的(git rebase –skip)。

猜你喜欢

转载自blog.csdn.net/njnujuly/article/details/80423644