git pull 和 git pull --rebase
2015-04-21 10:59
239 查看
git pull的默认行为是git fetch + git merge,
git pull --rebase则是git fetch + git rebase.
从目的来说,两者没差别,运行之后, 你能获得一样的code base。
但从版本管理角度,这两者有各自的使用意义。
git merge:
简单来说,它把两条不同分支历史的所有提交合并成一条线,并在“末端”打个结,即生成一次合并提交。最后形成一条单一的提交线。
git rebase:
根据参数的不同,行为有些差别。但总的来说,它相当于把分叉的两条历史提交线中的一条,每一次提交都捡选出来, 在另一条提交线上提交。最后也形成一条单一的提交线。
对比来看,git merge多了一次提交--“合并提交”。git rebase则没有。
不过,git merge保存了两条线的历史。而git rebase则会破坏历史。因为每一次rebase, 提交id会变化(因为父提交变了,而父提交Id是用来生成提交id的内容之一)。
还有一篇英文版文章:
http://stackoverflow.com/questions/16666089/whats-the-difference-between-git-merge-and-git-rebase/16666418#16666418
git pull --rebase则是git fetch + git rebase.
从目的来说,两者没差别,运行之后, 你能获得一样的code base。
但从版本管理角度,这两者有各自的使用意义。
git merge:
简单来说,它把两条不同分支历史的所有提交合并成一条线,并在“末端”打个结,即生成一次合并提交。最后形成一条单一的提交线。
git rebase:
根据参数的不同,行为有些差别。但总的来说,它相当于把分叉的两条历史提交线中的一条,每一次提交都捡选出来, 在另一条提交线上提交。最后也形成一条单一的提交线。
对比来看,git merge多了一次提交--“合并提交”。git rebase则没有。
不过,git merge保存了两条线的历史。而git rebase则会破坏历史。因为每一次rebase, 提交id会变化(因为父提交变了,而父提交Id是用来生成提交id的内容之一)。
还有一篇英文版文章:
http://stackoverflow.com/questions/16666089/whats-the-difference-between-git-merge-and-git-rebase/16666418#16666418
相关文章推荐
- git pull --rebase 做了什么? 以及 Cannot rebase: You have unstaged changes 解决办法
- git pull --rebase 做了什么? 以及 Cannot rebase: You have unstaged changes 解决办法
- 给git pull默认加上rebase功能
- Git rebase、pull、push 出现 conflict 后不能merge的解决方法
- git pull和git pull -- rebase
- git pull --rebase的使用
- git pull --rebase
- 聊下git pull --rebase
- git随笔四则 - pull v.s. fetch, stash, rebase, merge
- 简单对比git pull和git pull --rebase的使用
- Git push/pull/cherry-pick/merge/rebase
- git pull --rebase
- 聊下git pull --rebase
- git: fetch vs pull, merge vs rebase
- 聊下git pull --rebase
- 聊下git pull --rebase
- git fetch, rebase,pull,merge 区别
- git pull vs fetch/rebase/merge
- git pull和git pull --rebase的不同
- git fetch 、git pull 与 git pull --rebase