Git Pull与Git Rebase


123

我是Git的菜鸟,正在尝试了解git pullvs与之间的区别git rebase。有人可以提供一个示例说明何时使用哪个选项,因为我认为两者都具有相同的目的。


是的,我做到了。pull和rebase之间的区别在于pull会合并。因此,您所提问题的答案是我粘贴的链接。
Thibault D.

1
@ user4943236 1)您甚至都不知道是谁拒绝了您的问题,不要无缘无故地指责人们2)如果是我的拒绝,我不会删除它,因为这很容易通过阅读找到答案文档
2016年


这回答了你的问题了吗?git pull VS git fetch VS git rebase
Shiwangini

Answers:


129

git pull并且git rebase不可互换,但它们紧密相连。

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

重定基础是合并的替代方法。与其创建一个合并两个分支的新提交,不如将一个分支的提交移到另一个分支的提交上。

您可以使用rebase而不是merge(git pull --rebase)拉取。您所做的本地更改将基于远程更改重新建立,而不是与远程更改合并。

Atlassian 在合并与重新定基础方面有一些出色的文档


51

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

基本上,您是将远程分支拉到本地,例如:

git pull origin master

将主分支拉到您的本地存储库

git-rebase-将本地本地提交到更新的上游头 GIT REBASE

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

  • 您已经在本地分支上进行了一些更改,例如 SOME-FEATURE
  • 同时,您的朋友正在开发其他功能,他将自己的分支合并为master

现在,您想在本地分支上查看他和您的更改。因此,您可以结帐master分支:

git checkout master

那么您可以拉:

git pull origin master

然后转到分支:

git checkout SOME-FEATURE

您可以重新设置基准master以从中获取最新更改,并将分支提交放在最前面:

git rebase master

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


15
您不需要结帐母版。留在您的分支上并执行:git fetch然后git rebase origin/master
安托万·马丁

通过签出本地主机,然后拉出原始主机也将更新您的本地主机。这是应该使用的最佳实践之一
Ashwani

20

简而言之 :

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.