git:你的分支领先 X 次提交

475

这是我的工作流程:我目前独自在一个仓库中工作:

  1. 更改文件
  2. 提交(commit)
  3. 重复1-2直到满意
  4. 推送(push)到主分支(master)

然后当我运行git status时,它告诉我我的分支比远端的主分支(assumed master)超前了X个commit(大概是我所做的提交数量)。这是因为当你推送(push)代码时,它实际上并没有更新你本地缓存的文件(在.git文件夹里)?git pull似乎能够“修复”这个奇怪的消息,但我仍然很好奇为什么会发生这种情况。也许我在使用git时有问题?


包括打印消息所在的分支

我的本地分支比主分支(a.k.a. master)超前

你推送/拉取当前分支的位置在哪里

我正在推送到GitHub并拉取到我当前正在工作的任何计算机上,我的本地副本始终是最新的,因为只有我在工作。

它实际上没有检查远程仓库

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

你有没有传递一些额外的参数(arguments)给它?

没有我能看到的,也许在我的配置(config)上发生了一些有趣的事情?

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

你是如何进行push操作的?你的远程和分支配置设置是什么? - CB Bailey
2
它实际上并不检查远程仓库,你需要在执行推送后进行git fetch以获取远程仓库的最新信息,这将更新本地用于跟踪的“remote”分支。 - Sekhat
2
@Sekhat: 虽然 git status 不会检查远程仓库,但 git pull 会。如果您有一个用于推送的跟踪分支的存储库,git push 将在推送成功后更新您的本地跟踪分支以反映远程分支的新状态。这就是为什么我问问者的配置情况,因为如果没有正确地进行操作,那么可能存在配置错误。 - CB Bailey
git status?真的吗?我的 git status 从来没有告诉我我的分支超前了多少...你有传递额外的参数吗? - hasen
4
git status 不会去远程仓库检查远程分支是否有更新,它会告诉你本地分支相对于你 本地存储的 远程跟踪分支落后了多少。问题在于正常的 git push(以及 fetch 和 pull)应该会更新远程跟踪分支,但是对于提问者来说,这似乎没有起作用。要查看原因,我们需要查看正在使用的 git push 的确切形式和本地存储库的配置,但由于提问者已经接受了答案,现在我无法看到这种情况发生。 - CB Bailey
21个回答

0

只是分享一下我的经历。

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

这显然导致 Git 认为我的提交仍然需要在远程进行,因为本地上某种方式已经提交了该文件。

通过 撤销上次提交 并取消暂存现在在 gitignore 中的文件来解决问题。


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