您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: