GitK显示远程/origin/master比master落后,但git status和其他命令坚称一切都是最新的。

3
从今天早上开始提交代码以来,我的主分支指针一直在前进,但我的远程/origin/master指针没有。然而,当我使用命令行检查远程 origin 的位置(ls-remote origin),就像我在类似的问题中看到的建议那样,返回的SHA1不是远程/origin/master指针所指向的提交的SHA1,而是master指向的SHA1。当我尝试 git pull,另一个我看到的建议时,我被告知我已经更新到最新版本。
以下是gitk当前显示的内容(无法发布图像):
  • master
  • remotes/origin/master
我是唯一一个在这个代码上工作的人,对Git和版本控制都很陌生。
更新:
我尝试过的其他事情:
  • 尝试了 git push,给我返回了一切都是最新的消息

  • 尝试了 git fetch,它没有改变我在gitk中看到的内容(还尝试了git fetch origin

2个回答

4
  1. push的相反操作不是真正的pull,而是fetch。特别地,git pull本质上是git fetch加上一个额外的步骤:git mergegit rebase。这对于您有较旧版本的git更为重要,因为:

  2. 如果您的git早于1.8.5(我猜你的是),使用git pull以一种不更新远程跟踪分支origin/master的方式运行git fetch。然而,如果您手动运行git fetch origin,它将会更新远程跟踪分支(到您在git ls-remote中看到的SHA-1),这将使您的gitk显示正确。

  3. 这似乎特别奇怪,因为git push应该更新您的远程跟踪分支,所以在git push origin master告诉您一切都是最新的之后,gitk现在应该看到更新,就好像您已经运行了git fetch origin。 (这在旧版的git中也是正确的。git 1.8.5中的更改是使fetch-run-by-pull更新远程跟踪分支,以消除这一个怪异现象。)

(如果您有较新版本的git,则pull运行的fetch应该会更新远程跟踪分支,因此这整个问题首先不应该出现。)


编辑:如下评论所示,问题最终证明是存储库配置文件中缺少fetch规范。如何创建它仍然是一个谜:通常,初始克隆或添加名为origin的远程将添加正确的fetch = +refs/heads/*:refs/remotes/origin/*行。但如果该行消失,则必须将其重新添加以获取更新的远程跟踪分支。


好的,我刚刚尝试了git fetch origin,但仍然没有效果。 - mleewing
这真的很奇怪。git config --get-all remote.origin.fetch 会产生什么结果?(它应该是 +refs/heads/*:refs/remotes/origin/*,如果是其他内容可能会解释这个问题。) - torek
当我使用 git config --get-all remote.origin.fetch 时,没有任何反应,只是出现了一个新的命令行。 - mleewing
啊,非常有趣。这就解释了缺乏更新的原因。使用git config --addgit config --edit(或两者都使用)将其添加为remote.origin.fetch值(--edit会打开您的编辑器,我发现这是调整事物最简单的方法,但您可能想要先使用git config --add remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*',然后使用--edit查看和/或修复拼写错误)。 - torek

2
我的主指针一直在前进,但我的远程/origin/master指针没有。这似乎符合提交的本地性质:它将一个新的提交添加到您的本地分支(master),但不会对您的远程跟踪分支(origin/master)做出任何更改。您需要通过推送(git push)到上游存储库才能使origin/master发生变化,并使git ls-remote返回更近期的提交SHA1。

谢谢。实际上,我的 Git Hub 存储库已经是最新的,从网站上看。我所有的新提交和更改都得到了反映。当我使用 git push origin master 命令推送时,就像我一直在做的那样,系统告诉我一切都是最新的。 - mleewing
像往常一样,你的答案是正确的。然而,我认为在git fetch方面加上一个简短的注释(类似于你已经提到的git push)会使它更好。 - Chris
1
@Chris 我同意。我认为torek的回答解决了git fetch部分的问题。 - VonC

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