我在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
为什么会这样?我想念什么?
答案 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 merge
或git rebase
中的哪一个。然后,根据检查结果执行我想执行的第二个命令,或者完全根据检查结果推迟执行。
如果您确定要使用第二条命令,则可以使用git pull
(运行git fetch
),然后运行另外两个Git命令之一。在查看git fetch
带来的好处之前,您先选择要运行哪个其他Git命令。默认的第二个命令是git merge
,因此,如果您事先确定要先git fetch
然后再git merge
,则可以运行git pull
。如果您绝对事先确定要运行git rebase
,则可以运行git pull --rebase
。
请注意,git merge
和git rebase
都可能失败,并使您一团糟进行清理。如果您运行git pull
并且第二条命令失败,则您仍然处于选择运行git pull
的第二条命令的中间。您仍然需要清理烂摊子。您可以等到这实际上发生时,再学习如何进行清理,但是请记住,清理方法 取决于第二个命令你选择了!我喜欢避免使用git pull
,以便通过 I 输入它来了解我使用的第二个命令。:-)