这实际上是怎么产生的?
我现在正在自己的一个回购工作,所以这是我的工作流程:
-
更改文件
-
承诺
-
重复1-2直到满意为止
-
推送掌握
然后,当我做一个 git status
时,它告诉我我的分支是由X提交提前(可能是我提交的提交数量相同) . 是因为当您推送代码时它实际上并不更新本地缓存的文件(在.git文件夹中)? git pull
似乎'fix'这个奇怪的消息,但我仍然好奇它为什么会发生,也许我使用git错了?
包括在消息中打印的分支
我当地的分公司领先于大师
你在哪里推/拉当前分支
我正在推送GitHub并拉到我当时正在处理的任何一台计算机上,我的本地副本总是完全是最新的,因为我是唯一一个正在处理它的人 .
它实际上没有检查远程仓库
这就是我的想法,我想我会确保我对它的理解是正确的 .
你传递一些额外的论据吗?
不是我能看到的,也许我的结尾有一些有趣的配置?
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
16 回答
我在Windows机器上遇到同样的问题 . 当我运行
git pull origin master
命令时,我会收到"ahead of 'origin/master' by X commits"警告 . 我发现如果我改为运行git pull origin
并且没有指定分支,那么我将不再收到警告 .它只是提醒您当前分支与执行当前轨道的分支之间的差异 . 请提供更多信息,包括消息中打印的分支以及您在何处推/拉当前分支 .
在我的情况下,这是因为我切换到掌握使用
只是拉它的新版本而不是
第一个命令resets the head of master到我最近的提交
我用了
解决这个问题
我在这个页面上完成了每个解决方案,幸运的是@ anatolii-pazhyn评论说,因为他的解决方案是有效的 . 不幸的是,我没有足够的声誉来支持他,但我建议先尝试他的解决方案:
哪个给了我:
我还建议:
您还可以使用:
祝你好运
如果您在执行
git pull remote branch
后收到此消息,请尝试使用git fetch
进行跟踪 . (可选,运行git fetch -p
以从repo中删除已删除的分支)Fetch似乎更新了远程分支的本地表示,这在执行
git pull remote branch
时不一定会发生 .使用
--rebase选项意味着git会将您的本地提交移到一边,与远程同步,然后尝试从新状态应用您的提交 .
我认为你误读了这条消息 - 你的分支没有超前
master
,它是master
. 它位于origin/master
之前,它是一个 remote tracking branch ,用于记录上一个push
,pull
或fetch
的远程存储库的状态 . 它告诉你你到底做了什么;你领先遥控器,它提醒你推动 .使用这3个简单命令
Step 1 :
git checkout <branch_name>
Step 2 :
git pull -s recursive -X theirs
Step 3 :
git reset --hard origin/<branch_name>
更多细节:https://stackoverflow.com/a/39698570/2439715
请享用 .
有人说你可能误读了你的信息,你不是 . 此问题实际上与您的
<project>/.git/config
文件有关 . 在它中将是类似于这样的部分:如果从项目中删除了获取行's .git/config file you' ll,请停止“你的分支在'origin/master'之前提交
N
提交 . ”发生的烦恼 .或者我希望如此 . :)
我在我的舞台服务器上遇到过这个问题 . 硬复位帮我清理HEAD和遥控器一样 .
所以现在我又来了:
虽然这个问题有点陈旧......我处于类似情况,我的回答帮助我解决了类似的问题
首先尝试使用
push -f
或强制选项如果这不起作用,则可能(在我的情况下)远程存储库(或者更确切地说,对
git remote -v
上显示的远程存储库的引用)可能没有得到更新 .以上结果是您的推送与您的远程/分支同步您的本地/分支,但是,本地仓库中的缓存仍然显示先前提交(本地/分支...仅提供单个提交)作为HEAD .
要确认以上克隆在不同位置的回购并尝试比较local / branch HEAD和remote / branch HEAD . 如果它们都相同,那么你可能面临我所做的问题 .
解:
现在按如下方式执行
push -f
git push -f github master
### Note your command does not have origin anymore!做
git pull
现在git pull github master
在
git status
收到# On branch master
nothing to commit (working directory clean)
我希望这对某些人有用,因为视图的数量太高,以至于搜索此错误几乎总是将此线程列在顶部
有关详细信息,请参阅gitref
当我使用TortiseGIT进行切换/结账时,我确实发生了这种情况 .
我的问题是我根据另一个本地分支创建了分支 . 它在
/.git/config
中创建了一个"merge"条目,看起来像这样:每当我切换到“web”分支时,就会告诉我在开发之前我有100个提交 . 好吧,我不再承诺发展,所以这是真的 . 我能够简单地删除此条目,它似乎正在按预期运行 . 它正在跟踪远程参考,而不是抱怨在开发分支后面 .
正如Vikram所说,这个Stack Overflow线程是Google搜索此问题时的最佳结果,所以我想我会分享我的情况和解决方案 .
建议
git pull
或git fetch
的答案是正确的 .当
git status
看到.git/FETCH_HEAD
和.git/refs/remotes/<repository>/<branch>
之间的差异(例如.git/refs/remotes/origin/master
)时会生成该消息 .后一个文件记录上次提取的HEAD(对于存储库/分支) . 执行
git fetch
将两个文件更新到分支的当前HEAD .当然如果没有东西可以获取(因为本地存储库已经是最新的),那么
.git/FETCH_HEAD
不会改变 .我想重申@Marian Zburlia上面提到的相同内容 . 它对我有用,并会向其他人提出同样的建议 .
git pull origin develop
应该跟着
$ git pull --rebase
.这将删除最新拉动后
$ git status
上的评论 .如果在执行提交后收到此消息以便取消分支中的文件,请尝试在任何文件中进行一些更改并执行提交 . 显然你不能进行单一提交,其中只包括未跟踪先前跟踪的文件 . 最后这篇文章帮我解决了整个问题https://help.github.com/articles/removing-files-from-a-repository-s-history/ . 我只需要从存储库历史记录中删除文件 .
git fetch
将为您解决此问题如果我的理解是正确的,那么您的本地(缓存)
origin/master
已过期 . 此命令将从服务器更新存储库状态 .