Git:分支领先 X 次提交。执行 git pull 没有帮助。

5

我看到了其他类似的问题,但是我不太明白为什么会出现这种情况。目前,我正在使用 git reset --hard HEAD 然后手动添加回我的更改。建议的解决方案似乎是 git pull origin master?但是即使在那之后我仍然收到相同的消息。出了什么问题?我应该如何进行合并?我对GIT还比较新。

$ git pull origin master
Nodester!
Enter passphrase for key '/home/jiewmeng/.ssh/id_rsa': 
From nodester.com:/node/git/jiewmeng/10267-f62c0a21d1a9d75ab7b6ace5858921d0
 * branch            master     -> FETCH_HEAD
Merge made by the 'recursive' strategy.

$ git branch -a
* master
  remotes/origin/master

你能发布一下 git pull 命令的输出吗?还有 git branch -a 的输出吗? - lindelof
你有多少个远程仓库?使用 git remote 命令列出所有远程仓库。如果有多个远程仓库,是否已经设置了 master 分支来跟踪一些不同于 origin 的远程仓库?这是出现 'branch is ahead by X commits' 消息的最常见情况。 - Sailesh
@lindelof,我发布了我的git pullbranch输出。 - Jiew Meng
4个回答

9
如"为什么Git告诉我“您的分支领先于'origin/master' 11次提交。”,我该如何停止?"所述:

"your branch is ahead by..." => 您需要向远程主库推送
运行 "git diff origin/master" 查看本地库和远程主库之间的差异。

如果您领先远程存储库一个提交,那么是远程存储库过时了,而不是您过时了。
拉取也无济于事。

现在还要检查您是否实际上处于分支上(而不是处于分离头状态)。
这是您的情况(您确实在master分支上)。


如果我没有记错的话,我认为那个错误正在阻止我进行推送...虽然我不是完全确定...已经执行了 reset --hard HEAD ...无论如何,你说的有道理,我会记住的。 - Jiew Meng
@JiewMeng 如果你无法推送,那可能是另一个问题。 - VonC

5
"

“Branch is ahead by X commits” 可能有两个原因: 1)您有真实的本地提交,您需要执行 'git push'。 2)您的'origin'分支与远程端不同步。请执行:

"
git fetch

根本原因似乎与执行 'git pull origin master' 而不是 'git pull' 相关。


0

我在我的环境中调查了同样的问题,并发现了以下事实:

origin/master 是我执行克隆时的提交上的标记。我没有在我的一侧创建任何提交,只是从 origin 拉取而不进行 rebase。这导致我的仓库同步,但没有移动或更新 origin/master 的位置。如果您执行推送(origin/master 标签会移动到您的推送位置),然后做一些拉取操作以获取一些新的提交,情况也是相同的。

git log --graph --oneline -X master

X 是数字,>= 表示在 git status 命令后你可以看到的“ahead”提交数。你可以在日志结果中看到 origin/master 标记的位置。这个内部的 git 标记用于计算我们担心的状态消息。

提交的哈希值存储在 refs/remotes/origin/master 文件中。如果你删除了这个文件,origin/master 标记就会消失,关于 ahead 提交的信息也将不再显示。

如果你想将 origin/master 标记与当前主 HEAD 同步,只需输入

git update-ref refs/remotes/origin/master cac0cab538b970a37ea1e769cbbde608743bc96d

在此处,将你的头部哈希值替换为我的哈希值:

git log -1

或者如果您愿意,可以使用复制/粘贴文件内容。结果应该是相同的。

这对我有所帮助,但我不知道还有什么其他方面受到影响。据我所知,这条消息只是具有信息性意义,而不是错误或警告。一切都按照我的预期正常工作,没有任何限制。


0

分支“ahead” X 个提交意味着您的本地仓库有一些新提交,这些提交在远程仓库中不存在。请先尝试使用“git fetch”命令。


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