Git 说是最新的,尽管更改是远程进行的

Git says up to date although changes were made remotely

使用 git bash:我在我的 master 分支上工作,推送它并决定我要实现一个新功能。我为此创建了一个新分支。后来我添加了另一个功能,创建了另一个分支。

我测试了所有东西并且它工作正常,所以我决定将所有东西合并到我的 master 分支。我将两个新分支推送到远程仓库。

现在,使用我的浏览器 github 建议为新分支创建拉取请求,我这样做了,然后建议我可以安全地合并,因为没有冲突。所以我将所有分支合并到master。

我想,既然我在网上做了这个,我当地的分支机构就不会再更新了。

$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

我真的不敢相信,所以我决定从我的远程仓库中提取。

$ git pull origin master
remote: Enumerating objects: 2, done.
remote: Counting objects: 100% (2/2), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), done.
From https://github.com/name/repo
 * branch            master     -> FETCH_HEAD
   ID..ID  master     -> origin/master
Updating ID..ID
Fast-forward
 file1 |  67 +++--
 file2     |  25 ++
 file3        | 292 +++++++++++----------
 3 files changed, 221 insertions(+), 163 deletions(-)
 create mode 100644 newfile

为什么 git 认为我的本地 master 分支是最新的,而实际上不是?

免责声明:我对 git 不是很有经验,只能在我的回购协议上工作。

通过 Github 完成工作后,您需要 运行 git fetch 刷新有关远程跟踪分支的信息并查看对 [=11] 的任何更新=].

git pull,简单来说就是做git fetchgit merge.

这个 SO question 有很多关于这方面的重要信息。

当您执行 git status 时,git 将您的本地主分支与远程主分支的 本地副本 进行了比较。起初这可能令人困惑,但实际上非常简单。

您的本地存储库保留远程存储库引用的副本,因此 git 状态不涉及任何网络 activity,这完全是本地操作。

要更新这些远程分支的本地副本,您需要 git fetchgit pull,就像您所做的那样,无论如何都在内部使用 git 获取。

只有在此时,您的本地存储库才会获得您的在线操作(您的拉取请求)的更新版本。