Git Pull vs Git Rebase

时间:2016-03-22 07:38:22

标签: git

我是Git中的菜鸟,并尝试了解git pullgit rebase之间的区别。有人可以提供一个示例何时使用哪个选项,因为我觉得两者都有相同的用途。

4 个答案:

答案 0 :(得分:59)

git pullgit rebase不可互换,但它们紧密相连。

git pull从远程获取当前分支的最新更改,并将这些更改应用于分支的本地副本。通常,这是通过合并完成的,即将本地更改合并到远程更改中。因此git pullgit fetch & git merge类似。

重新定位是合并的替代方案。它不是创建一个组合了两个分支的新提交,而是将其中一个分支的提交移到另一个分支的顶部。

您可以使用rebase而不是merge(git pull --rebase)。您所做的本地更改将在远程更改之上进行重新定位,而不是与远程更改合并。

Atlassian有一些很棒的documentation on merging vs. rebasing

答案 1 :(得分:34)

  

git-pull - 从另一个存储库或本地分支获取并集成   GIT PULL

基本上你将远程分支拉到你的本地,例如:

git pull origin master

将master分支拉入本地存储库

  

git-rebase - 转发端口本地提交到更新的上游头   GIT REBASE

这个是将您的本地更改置于其他用户远程完成的更改之上。 例如:

  • 您已在本地分支上进行了一些更改,例如名为SOME-FEATURE
  • 与此同时,你的朋友正在研究其他功能,并将他的分支合并为主人

现在您想在本地分支上查看他和您的更改。 那么你结账master分支:

git checkout master

然后你可以拉:

git pull origin master

然后你去你的分店:

git checkout SOME-FEATURE

并且您可以执行rebase master以从中获取最新更改并将您的分支提交放在最前面:

git rebase master

我希望现在对你来说更清楚了。

答案 2 :(得分:2)

简而言之:

-> Git合并:它将简单地合并您的更改和远程更改,这将创建另一个提交历史记录

-> Git Rebase:它将您的更改放在所有新的远程更改之上,并重写提交历史记录,因此您的提交历史记录将比git merge更清晰。变基是一种破坏性操作。这意味着,如果未正确应用它,则可能会丢失已完成的工作和/或破坏其他开发人员存储库的一致性。

答案 3 :(得分:0)

我做了git stash,这对我有用。

git pullgit pull --rebase对我不起作用。