首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >git fetch与git fetch origin master对跟踪分支的影响不同

git fetch与git fetch origin master对跟踪分支的影响不同
EN

Stack Overflow用户
提问于 2012-08-10 05:52:53
回答 2查看 68.5K关注 0票数 31

这在很大程度上是出于好奇心,因为我想要熟悉Git。我已经看过“git fetch”的文档,但我没有看到一个明显的解释如下。提前感谢,如果这是显而易见的,请道歉。

1)从一个中央存储库,例如GitHub,我在两台机器HostAHostB中的每台机器上克隆了一个名为website的存储库。

2)在HostA上,我更改了一个文件,比如README.txt,然后提交它。

HostA上,分支masterorigin/master的提交与预期的不同,因为我还没有推送

代码语言:javascript
复制
git show master
git show origin/master

报告不同的散列(因为master有更改,而origin/master没有更改)

3)一旦我推了,他们也是一样的。

4)现在,在HostB上,如果我执行以下操作:

代码语言:javascript
复制
git fetch
git merge FETCH_HEAD

之后,在使用git show查询时,HostB上的masterorigin/master会报告相同的哈希值

如果我这样做了,在HostB

代码语言:javascript
复制
git fetch origin master
git merge FETCH_HEAD

在这一点上,散列仍然不同。

代码语言:javascript
复制
git show origin
git show origin/master

报告不同的哈希值

直到我执行一个普通的git fetch,跟踪分支origin/master才会更新

为什么会这样呢?

EN

回答 2

Stack Overflow用户

发布于 2013-06-13 04:14:32

如果你想快进,合并你自己,或者使用git pull。您似乎不理解git fetch的目的不是更新您的工作树。Fetch用于更新您的跟踪分支。

票数 1
EN

Stack Overflow用户

发布于 2012-08-10 08:11:55

答案就在你从git fetch得到的消息中。在第一种情况下,当您在未提供refspec的情况下获取时,您将看到远程跟踪分支已更新:

代码语言:javascript
复制
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /depot
   c67d1c8..1941673  master     -> origin/master

请注意,该消息如何显示源/主文件是使用源文件中的主文件更新的。

现在,在第二种情况下,您指定refspec,您将得到完全不同的结果:

代码语言:javascript
复制
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /depot
 * branch            master     -> FETCH_HEAD

因此,当您指定refspec时,远程跟踪分支(源/主)不会更新,只会更新FETCH_HEAD。

最终的结果是,当你不是真正的时候,你会看起来领先于origin/master。我不能想象为什么这种行为是可取的,但这绝对是fetch命令的一个有趣的小怪癖。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11892517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档