rebase和merge两种合并分支的方式
git merge origin/master
把远程下载下来的代码合并到本地仓库,远程的和本地的合并
可以看到,merge操作会生成一个新的节点,之前的提交分开显示。而rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。
如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase 如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge
解释一下 $ git rebase origin 过程
这些命令会把你的"master"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),
然后把"master"分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到"master"分支上。
rebase也需要解决冲突
在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;
在解决完冲突后,用"git -add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:
$ git rebase --continue
这样git会继续应用(apply)余下的补丁。
在任何时候,你可以用--abort参数来终止rebase的行动,并且本地"master" 分支会回到rebase开始前的状态。
$ git rebase --abort
git pull 对比 git pull --rebase
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase