git fetch不会更新.git / refs / remotes / origin / master

时间:2017-09-20 22:45:07

标签: git

我有一个从中央服务器克隆的本地git存储库。我的本地主分支的最后一次提交是提交1

中央存储库在master分支中有一个新的 commit 2

我运行git fetch origin master来更新我的本地参考,我发现refs/remotes/origin/master没有更新。

然后我检查了.git/FETCH_HEAD。但是,这已经是提交2

我的fetch的本地配置:

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = #########

此外,我可以登录到中央并检查那里的裸存储库。 project.git/refs/heads/master 提交2

然后我尝试运行git pull origin master。令人惊讶的是, commit 2 被合并到我的本地存储库中。

git diff origin/master甚至向我展示了提交1 提交2 之间的差异。但是origin和我的本地存储库此时具有相同的内容。

我的问题是:

  1. 为什么git fetch无法从源下载最新更新?
  2. 为什么git pull在这种情况下仍然有效?
  3. 这是我本地配置还是中央配置的问题?

2 个答案:

答案 0 :(得分:2)

如果你跑

git fetch origin

然后refs/remotes/origin/master将会更新。

如果你指定一个引用git fetch origin,那么它假定你只想把它拉到FETCH_HEAD

你可以运行

git fetch origin master:refs/remotes/origin/master

并且还会更新

答案 1 :(得分:0)

当您运行git fetch origin master时 - 或者,如果您使用git pull,它可以为您执行此操作 - 应该更新您的origin/master

然而,这种更新首先在版本1。8。4(2013年8月发布)中加入Git。一些非常过时的发行版仍然使用Git版本1.7.x.如果您有这样一个古老的Git,git fetch origin master将无法更新origin/master