git状态-不准确



我经常在查找可能有一段时间没有与其repo同步的文件夹时使用git status,只是为了看看我在哪里。如果我看到your branch is up to date...,那么我认为可以开始工作和提交。

然而,我刚刚遇到了这种情况:

MINGW64 /path/to/my/project (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
MINGW64 /path/to/my/project (master)
$ git pull
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From gitlab.mydomain.com/project
f5b203f..4ecb3eb  master     -> origin/master
Updating f5b203f..4ecb3eb
Fast-forward
CHANGELOG | 1 +
1 file changed, 1 insertion(+)
create mode 100644 CHANGELOG
MINGW64 /path/to/my/project (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean

为什么我的第一个git status命令没有意识到缺少一个文件?

如果相关的话,目前repo中只有两个提交和两个文件。在第二次提交中,我添加了CHANGELOG文件。

git status不在本地存储库之外执行任何通信。它只知道您在存储库本地所做的那些事情,以及与指示远程存储库最后已知状态的远程跟踪参考值的一些比较。它实际上并没有更新那些追踪裁判。

要查看服务器上是否有任何新更改,必须先执行git fetch,然后再执行git status

"您的分支是最新的"表示您的本地master分支与您的本地origin/master是最新。origin仅在git fetchgit pull(本质上是获取和合并的简写(时更新。

因此,如果你想确保你是最新的远程更改,你应该git fetch(这只会更新你的origin分支,不会影响你的本地分支(,然后运行git status

最新更新