尽管执行git fetch,为什么我的本地分支仍然显示(本地过时)?

时间:2019-10-04 14:39:54

标签: git git-pull git-fetch

我在feature1上工作时,我的队友在远程更新了他的分支机构feature2

现在,当我执行$ git remote show origin时,它显示-

Local refs configured for 'git push':

feature1 pushes to feature1 (local out of date)

我目前已在分支feature2上签出,并且尝试了以下所有命令,但是feature1的状态未更改为(up to date)。 (所有命令执行无任何错误)

$ git fetch origin

$ git fetch --all

$ git fetch origin feature2

为什么会这样?我想念什么?

2 个答案:

答案 0 :(得分:1)

git fetch只是从另一个存储库下载对象和引用。要将更改带入分支,您必须执行git merge

要同时完成两项操作,可以使用git pull

在您的情况下:

git merge origin/feature2

答案 1 :(得分:1)

使用git fetch从其他Git获取新提交后,您必须选择如何将这些新提交与您自己的任何现有提交组合在一起。

主要有两种合并提交的方法:

  • git merge
  • git rebase

在某些情况下,这些动作是非常不同的。在其他情况下-特别是其中您现有提交的 all 首先只是来自另一个Git的情况,而您从不进行任何自己的提交,并且管理另一个Git的人的行为好吧,它们的作用完全相同,因此无论您执行哪个操作都无关紧要(除非第二个命令失败;请参见下文)。

我自己的过程通常是:运行git fetch,检查发生了什么,然后选择是否要执行git mergegit rebase中的哪一个。然后,根据检查结果执行我想执行的第二个命令,或者完全根据检查结果推迟执行。

如果您确定要使用第二条命令,则可以使用git pull(运行git fetch),然后运行另外两个Git命令之一。在查看git fetch带来的好处之前,您先选择要运行哪个其他Git命令。默认的第二个命令是git merge,因此,如果您事先确定要先git fetch然后再git merge,则可以运行git pull。如果您绝对事先确定要运行git rebase,则可以运行git pull --rebase

请注意,git mergegit rebase都可能失败,并使您一团糟进行清理。如果您运行git pull并且第二条命令失败,则您仍然处于选择运行git pull的第二条命令的中间。您仍然需要清理烂摊子。您可以等到这实际上发生时,再学习如何进行清理,但是请记住,清理方法 取决于第二个命令你选择了!我喜欢避免使用git pull,以便通过 I 输入它来了解我使用的第二个命令。:-)