重置 - 硬起源/主人不带我到原点/主人~HEAD?

时间:2015-02-10 08:41:01

标签: git github

我在主分支上没有本地更改。

git remote -v列出了抓取和推送的正确网址。

git branch -avv(在git fetch之后)显示远程/ origin / master处于旧的过时提交状态,而实际上 如果你看看GitHub上的回购    git reset --hard origin/master让我想到了那个过时的提交 git diff --name-only origin/master然后清理干净。

此时我手动检查文件浏览器中的文件时,它们确实非常落后......在几个月前的状态。完全没有关于origin / master在GitHub上的位置。

git pull --rebase带我进入真正的最新提交,这是origin / master 实际所在的位置,如果我在GitHub上查看它,但是然后git diff --name-only origin/master显示每个文件都已更改,因为它似乎与旧的过时提交进行比较。

所以困惑。

1 个答案:

答案 0 :(得分:2)

git fetch无效的原因是缺少fetch下的remote.origin.fetch设置。 (怎么这样,我不知道。)

当您运行git fetch时,您的git会联系他们的git(在本例中为GitHub)并要求提供所有引用(分支,标签等)的列表 - 您可以通过运行{{1来查看可用的内容}})。然后,根据结果列表,您的git会复制git ls-remote origin设置列出的引用。

由于你的fetch设置是空的,你的git匹配零引用,并复制它们的全部零(即,不复制任何东西),然后退出,保持fetch不变。

origin/master脚本在pull中使用了fetch留下的痕迹,因此可以进行折扣。)

要解决此问题,请恢复默认FETCH_HEAD设置,例如:

fetch

(拼写在这里很重要,所以我希望我没有做过任何拼写错误)。或者,您可以删除并重新添加git config --add remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*' poke suggested in a comment