GitK将远程/ origin / master显示为后面的master,但是git status和其他命令坚持认为所有内容都是最新的

时间:2014-12-31 19:23:28

标签: git github

从今天早上开始提交时,我的主指针一直在前进,但我的远程/原点/主指针没有。但是,当我使用命令行检查远程原点(ls-remote origin)的位置时,我已经看到类似问题的建议,返回的SHA1不是远程/ origin / master的提交之一指针指示,但是主指示的那个。当我尝试git pull,我看到推荐的其他内容时,我告诉我,我已经知道了。

以下是gitk目前正在展示的内容(无法发布图片)

  • 主人
  • 遥控器/ origin / master

我是唯一一个从事这段代码的人,对git和一般的版本控制都是新手。

更新

我尝试过的其他事情:

  • 尝试git push,它告诉我所有内容都是最新的

  • 尝试git fetch,这不会改变我在gitk中看到的内容(也尝试了git fetch origin

2 个答案:

答案 0 :(得分:3)

  1. push的反面不是{​​{1}},而是pull。特别是,fetch基本上是git pull加上额外的一步git fetchgit merge。如果你有一个旧版本的git,那就更重要了,因为:

  2. 如果您的git超过1.8.5(我的猜测是你的),使用git rebase运行git pullgit fetch步骤< em> not 更新远程跟踪分支fetch。但是,如果您手动运行origin/master,它更新远程跟踪分支(使用git fetch origin看到的SHA-1),这将使您的{{1}显示正确。

  3. 这似乎特别奇怪,因为git ls-remote 更新您的远程跟踪分支,以便gitk告诉您所有内容都是最新的git push 1}}现在应该看到更新,就好像您已经运行git push origin master一样。 (即使使用较旧的git变种也是如此.git 1.8.5的变化是使远程跟踪分支的fetch-by-pull更新,以消除这种奇怪的现象。)

  4. (如果你有更新版本的git,gitk运行的git fetch origin应该更新远程跟踪分支,并且这个问题不应该首先出现。)


    编辑:如下面的评论所示,问题结果是存储库配置文件中缺少fetch规范。 如何创建仍然是一个谜:通常,无论是初始克隆还是添加名为pull的远程,都会添加正确的fetch行。但是,如果该行丢失,则必须将其放回以更新远程跟踪分支。

答案 1 :(得分:2)

  

我的主指针一直在前进但我的远程/原点/主指针没有。

这似乎与提交的本地性质一致:它会向您的本地分支(master)添加新提交,但不会更改 remote tracking branch 的任何内容(origin/master

您需要推送git push)到您的upstream repo,以便更改origin / master,并让git ls-remote返回更新的提交SHA1。