使用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的工作都不太熟悉。
答案 0 :(得分:3)
通过Github完成工作之后,您将需要运行git fetch
来刷新有关远程跟踪分支的信息,并查看对git status
的任何更新。
git pull
只是在做git fetch
和git merge
。
此SO question包含有关此信息的详细信息。
答案 1 :(得分:2)
完成git status
时,git将您的本地master分支与远程master分支的本地副本进行了比较。起初这可能会造成混淆,但实际上非常简单。
您的本地存储库保留了远程存储库引用的副本,因此git status不涉及任何网络活动,这是一个完全本地的操作。
要更新远程分支的这些本地副本,您需要像以前一样git fetch
或git pull
,无论如何都在内部使用git fetch。
仅在这一点上,您的本地仓库才能获取在线操作(您的拉取请求)的更新版本。