git状态是否有可能告诉您实际情况并非一切都是最新的?

时间:2014-08-18 15:05:51

标签: git

昨天,我把我在周末工作的一些分支合并成了主人。然后我删除了除主人之外的所有分支。所有这些更改都是在周末完成的,因此我工作计算机中的本地存储库已过时。今天我来上班并跑了git status,它说

On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean

然而,我100%确定我在工作的本地回购不是最新的,因为我做了几处修改。运行git pull后,它下载了我所有的更改,一切正常。

我的问题是:在某些情况下git status是否有可能告诉您,如果不是,您可以与遥控器保持联系?我不确定这是预期的行为还是git搞砸了。

2 个答案:

答案 0 :(得分:4)

git status不检查实际的远程存储库。它告诉您是否了解远程存储库的本地副本。请记住,origin是位于计算机上的远程缓存副本,而不是远程存储库本身。

您必须git fetch更新此本地缓存,之后git status会告诉您是否落后。

答案 1 :(得分:3)

git如何知道要与哪个分支进行比较?

git不会与实际的远程存储库进行差异。它通过将本地分支与相应的远程引用(例如origin/master)进行比较来跟踪差异。要获得正确(更新)的git状态,您需要从远程执行fetch,这将更新远程引用。你可以做到这一点 git fetch origin

git status然后会给你正确的差异。

当您执行git pull时,您实际执行的操作是获取后跟合并,这会使您的本地分支与远程主服务器保持同步。如果你愿意,你可以只做一个git fetch,然后git会告诉你当地主人在远程主人身后有多少次提交。

所以你应该总是从遥控器中取出:

  1. 创建功能分支
  2. 推送到远程
  3. 想要在本地和远程分支之间进行比较