我在主分支上没有本地更改。
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
显示每个文件都已更改,因为它似乎与旧的过时提交进行比较。
我所以困惑。
答案 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。