这到底是怎么发生的呢?

我在一个回购工作由自己的时刻,所以这是我的工作流程:

改变文件 提交 重复1-2次直到满意 推送至master

然后,当我执行git状态时,它告诉我我的分支领先X次提交(大概与我所做的提交数量相同)。是不是因为当您推送代码时,它实际上并没有更新本地缓存的文件(在.git文件夹中)?git拉似乎“修复”这个奇怪的消息,但我仍然好奇为什么会发生这种情况,也许我使用git错误?


包括在消息中打印的分支

我在当地的分公司走在主人前面

你在哪里推/拉当前的分支

我推送到GitHub,并拉到我碰巧在那个时间点上工作的任何一台计算机,我的本地副本总是完全最新的,因为我是唯一一个在它上工作的人。

它实际上并不检查远程回购

这就是我的想法,我想我要确保我对它的理解是正确的。

你是否给它传递了一些额外的参数?

不是我能看到的,也许我这边有什么奇怪的配置?

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

当前回答

如果你在执行git pull远程分支之后得到这条消息,试着用git fetch来跟踪它。(可选地,运行git fetch -p从repo中删除分支)

Fetch似乎更新了远程分支的本地表示,当您执行git拉远程分支时,这并不一定会发生。

其他回答

Git fetch将为你解决这个问题

如果我的理解是正确的,你的本地(缓存)源/主是过时的。该命令将从服务器更新存储库状态。

提示git pull或git fetch的答案是正确的。 当git状态看到。git/FETCH_HEAD和.git/refs/remotes/<仓库>/<分支>(例如。git/refs/remotes/origin/master)之间的差异时,就会生成该消息。

后一个文件记录了最后一次获取的HEAD(用于存储库/分支)。执行git获取将两个文件更新到分支的当前HEAD。 当然,如果没有东西要获取(因为本地存储库已经是最新的),那么.git/FETCH_HEAD就不会改变。

只是说说我的遭遇。

我提交了一堆文件,意识到有一些文件我不想提交,所以我使用VS代码撤销上次提交,删除文件并添加到gitignore,然后强迫我再次提交。

这显然导致git认为我的提交仍然必须进行远程,因为本地文件以某种方式提交了。

通过撤销上次提交和取消当前gitignore中的文件来解决

如果在执行提交后收到此消息,为了取消分支中的文件跟踪,请尝试对任何文件进行一些更改并执行提交。显然,你不能做出单一的提交,其中只包括取消跟踪以前跟踪的文件。 最后这篇文章帮助我解决了整个问题https://help.github.com/articles/removing-files-from-a-repository-s-history/。我只需要从存储库历史中删除文件。

使用这3个简单的命令

步骤1:git checkout <branch_name>

步骤2:git拉-s递归-X their

步骤3:git reset——hard origin/<branch_name> . zip

详情:https://stackoverflow.com/a/39698570/2439715

享受。