我有一个从中央服务器克隆的本地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和我的本地存储库此时具有相同的内容。
我的问题是:
git fetch
无法从源下载最新更新?git pull
在这种情况下仍然有效? 答案 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
。