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

问题描述 投票:0回答:3

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

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

现在,使用我的浏览器 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 认为我的本地主分支是最新的,而事实上却不是?

免责声明:我对 git 不太有经验,并且只在我的存储库上工作。

git github git-merge github-for-windows git-status
3个回答
4
投票

通过 Github 完成工作后,您需要运行

git fetch
来刷新有关远程跟踪分支的信息并查看
git status
的任何更新。

git pull
,简单来说,就是做
git fetch
git merge

这个SO问题充满了关于此的重要信息。


2
投票

当您执行

git status
时,git 会将本地 master 分支与远程 master 分支的“本地副本”进行比较。一开始这可能会令人困惑,但实际上非常简单。 您的本地存储库保留远程存储库引用的副本,因此 git status 不涉及任何网络活动,它完全是本地操作。

要更新远程分支的这些本地副本,您需要

git fetch

git pull
,就像您所做的那样,无论如何,这都是在内部使用 git fetch 的。

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


0
投票
git remote show origin

”,git 将向您显示,对于推送,您的远程主存储库的本地副本“已过时”: [...] 远程分支: 主要履带式 为“git pull”配置的本地分支: main 与远程 main 合并 为“git Push”配置的本地引用: main 推送到 main

(本地已过时)

如果您在另一个最新的本地存储库中执行相同的操作,git 将相应地向您显示:

[...] 远程分支: 主要履带式 为“git pull”配置的本地分支: main 与远程 main 合并 为“git Push”配置的本地引用: 主要推送到主要

(最新)

然后你知道你必须执行 git fetch + git merge 或 git pull。

© www.soinside.com 2019 - 2024. All rights reserved.