首先,我知道一些措辞相似的问题,例如:
其中没有一个(AFAICT)的答案与我的问题版本相符.
我的情况是:
$ git status
# On branch stable
nothing to commit (working directory clean)
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 857 commits.
Run Code Online (Sandbox Code Playgroud)
在现有的问题中,接受和赞成的答案大多同意它意味着字面上的意思......我领先,我需要将我的新提交推送到origin/master.
我知道实际情况恰恰相反,我的本地master分支是在远程origin/master控制器后面,实际上我需要git pull origin master在本地做一些工作之前.(或者可能只是git fetch origin?)
我的问题是......是否有一些理由说明这些信息的措辞Your branch is ahead of 'origin/master' by 857 commits.是否真的有意义?
因为我现在理解它的方式与消息所说的相反('我的分支' 在原点/主人之后).
或者它的确意味着:"远程主分支的HEAD领先于您的本地原点/主跟踪分支"?
更新 FWIW我在一个由六个其他开发人员组成的团队中工作.我们每天都会多次拉,提,推等等没有问题.我这里没有错误...我只是想了解为什么Git用这种方式说出它的信息 - 措辞本身是否被错误选择,或者是否有一些Git的基本概念导致他们这样说出来而且我不理解.
这里有更多信息,我猜可能是输出的相关部分git config -l
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=https://code.google.com/a/google.com/p/xxxxx/
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.master.mergeoptions=--no-ff
Run Code Online (Sandbox Code Playgroud)
Chr*_*her 27
你在想这个.消息并不是说遥控器落后了.它说你的本地存储库记录了'origin/master'的提交.在生成该消息时,git始终与远程通信.它只是查看.git目录,并返回了内容.git/refs/remotes/origin/master.亲自尝试一下.这两个命令都应该从存储库的顶层返回相同的内容:
cat .git/refs/remotes/origin/master
git rev-parse origin/master
Run Code Online (Sandbox Code Playgroud)
第二个命令只是一个用于查找"origin/master"指针的管道命令.您可以将'origin/master'替换为任何分支以获取该分支上的最新提交.
该消息告诉您,您的本地"主"是由857提交的'git rev-parse origin/master'返回的提交之前的.这种情况是怎么出现的?我不能确切地说,但是我会花很多钱在你不小心将一个不同的分支合并为"主人".每次我看到这个问题,都是用户错误导致的错误合并.
首先,git fetch origin确保'origin/master'指针是最新的.然后,研究你的git log.寻找最近你不期望的东西.下载像tig这样的程序或使用它gitk来获取您的提交历史记录的可视图表.git pull stable在"主人"签出时,你不小心发出了一个很好的赌注.或类似的东西.
git rebase -p
它会说First, rewinding head to replay your work on top of it...,你会全力以赴,因为没有重播的工作.
| 归档时间: |
|
| 查看次数: |
22620 次 |
| 最近记录: |