GIT无法从远程获取最新更改

7
一些错误导致本地分支落后于远程分支8个月。
当我运行git pull origin [我的分支名]时,它显示Already up to date
我尝试过git fetch origin [我的分支名]然后使用git reset --hard FETCH_HEAD (在这里找到),但是本地副本仍然指向非常旧的提交。
我也尝试通过使用git checkout 1d5d525重置到特定的提交(在这里找到),但它显示:error: pathspec '1d5d525' did not match any file(s) known to git.但是该提交在BitBucket中的远程分支中100%存在。
唯一能想到的区别是昨天我用了一台不同的机器(我的OSX笔记本电脑,而不是Win10台式机),但这并不能解释为什么差距有8个月之久。
如果有任何高手能给我一些指导,我将不胜感激。
注意:我可以从我的笔记本电脑提交更多更改,并且它们会出现在我的BitBucket分支中,但仍然没有运气。
注意:我是唯一在这个分支上工作的人,如果这些信息很重要的话。
谢谢!
编辑:
以下是git branch -vvgit remote -v的输出。
$ git branch -vv
ImageEdit 39b733c Image editing tweaks
Widgets   cce09e8 Merge Globals + Widgets to use the same functionality / DB table
* john      11798f3 [origin/john] Finished PDF Header. Waiting for feedback...
master    cce09e8 Merge Globals + Widgets to use the same functionality / DB table

$ git remote - v
origin  git@bitbucket.org:johnt/website.git (fetch)
origin  git@bitbucket.org:johnt/website.git (push)

注意:我要指出,根据上面的提交信息,主分支似乎也远远落后于远程分支。

编辑2:

以下是git branch -a -vv的输出:

$ git branch -a -vv
ImageEdit                39b733c Image editing tweaks
Widgets                  cce09e8 Merge Globals + Widgets to use the same functionality / DB table
* john                   11798f3 [origin/john] Finished PDF Header. Waaiting for feedback...
master                   cce09e8 Merge Globals + Widgets to use the same functionality / DB table
remotes/origin/ImageEdit 39b733c Image editing tweaks
remotes/origin/Widgets   cce09e8 Merge Globals + Widgets to use the same functionality / DB table
remotes/origin/glenn     0548f0d Changed Create a Lifeshare Page to Create a Lifeshare
remotes/origin/john      11798f3 Finished PDF Header. Waiting for feedback...
remotes/origin/master    cce09e8 Merge Globals + Widgets to use the same functionality / DB table

我们能看到 git branch -vv 的输出吗?顺便再执行一下 git remote -v - AnimiVulpis
@AnimiVulpis,我已经更新了我的原始帖子。 - John Tiggernaught
抱歉,能否将命令从 git branch -vv 改为 git branch -a -vv。这样我们就可以看到你本地复制的远程分支是否至少是最新的(因为 -a 将显示本地和远程分支)。 - AnimiVulpis
@AnimiVulpis 您要求的信息已添加。非常感谢您抽出时间为我解决这个问题。 - John Tiggernaught
你没有执行git push --force,是吗?看起来远程和本地分支已经是最新的了。 - AnimiVulpis
2个回答

6

不确定这是否是正确的礼仪,但即使 @VonC 和 @AnimiVulpis 也在帮助我,我还是能够解决问题。

使用 git branch -a -vv 显示本地和远程分支都指向同一提交,但该提交是错误的(该提交来自8个月前)。

我将存储库克隆到一个新文件夹中,登录 Bitbucket 获取最新提交哈希,并使用 git reset --hard [commit hash] 将 HEAD 指向正确的提交。

现在一切似乎都正常工作了(虽然在不同的目录下)。我不确定远程分支是如何指向该提交的,但很高兴问题得到了解决。

感谢 @VonC 和 @AnimiVulpis 抽出时间帮忙。


1
一次获取就足够了。 - VonC
@VonC 我执行了 git fetch --all 但它仍然指向错误的提交。我想我应该执行 git reset --hard [commit hash] 来避免重新克隆的麻烦,但是从记忆中,当尝试执行时它显示了一个错误。不过,问题似乎已经解决了。 - John Tiggernaught
是的,那就是我的答案:fetch + reset。 - VonC

1
从你的输出来看,本地分支和远程跟踪分支指向相同的提交,因此是最新的。
尝试使用git fetch进行确认:它将更新所有分支的远程跟踪分支。 然后使用git branch -avv查看是否有任何差异。
使用git branch -f mybranch origin/mybranch(或git checkout -B mybranch origin/mybranch)就足以重置它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接