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 fetch
和git merge
.
这个 SO question 有很多关于这方面的重要信息。
当您执行 git status
时,git 将您的本地主分支与远程主分支的 本地副本 进行了比较。起初这可能令人困惑,但实际上非常简单。
您的本地存储库保留远程存储库引用的副本,因此 git 状态不涉及任何网络 activity,这完全是本地操作。
要更新这些远程分支的本地副本,您需要 git fetch
或 git pull
,就像您所做的那样,无论如何都在内部使用 git 获取。
只有在此时,您的本地存储库才会获得您的在线操作(您的拉取请求)的更新版本。
使用 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 fetch
和git merge
.
这个 SO question 有很多关于这方面的重要信息。
当您执行 git status
时,git 将您的本地主分支与远程主分支的 本地副本 进行了比较。起初这可能令人困惑,但实际上非常简单。
您的本地存储库保留远程存储库引用的副本,因此 git 状态不涉及任何网络 activity,这完全是本地操作。
要更新这些远程分支的本地副本,您需要 git fetch
或 git pull
,就像您所做的那样,无论如何都在内部使用 git 获取。
只有在此时,您的本地存储库才会获得您的在线操作(您的拉取请求)的更新版本。