Git表示最新​​,尽管更改是远程进行的

时间:2018-12-16 13:30:28

标签: git github git-merge github-for-windows git-status

使用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和对sopos的工作都不太熟悉。

2 个答案:

答案 0 :(得分:3)

通过Github完成工作之后,您将需要运行git fetch来刷新有关远程跟踪分支的信息,并查看对git status的任何更新。

简而言之,

git pull只是在做git fetchgit merge

SO question包含有关此信息的详细信息。

答案 1 :(得分:2)

完成git status时,git将您的本地master分支与远程master分支的本地副本进行了比较。起初这可能会造成混淆,但实际上非常简单。

您的本地存储库保留了远程存储库引用的副本,因此git status不涉及任何网络活动,这是一个完全本地的操作。

要更新远程分支的这些本地副本,您需要像以前一样git fetchgit pull,无论如何都在内部使用git fetch。

仅在这一点上,您的本地仓库才能获取在线操作(您的拉取请求)的更新版本。