首页 > 解决方案 > 尽管无法连接到我的 git 服务器,Git 如何跟踪分支状态

问题描述

我的公司使用 VPN 来限制对公司网络的访问。我们的 Git 服务器位于该公司网络上,因此需要 VPN 才能访问。

最近,当我在本地签出 master 时,我得到了以下输出:

Your branch is behind 'origin/master' by 33 commits, and can be fast-forwarded.

但是,当我尝试拉主服务器时,我得到了以下信息,因为我没有连接到 VPN:

squishman@squishman-Parallels-Virtual-Platform:~/SkyATF$ git pull origin master
ssh: Could not resolve hostname [REDACTED]: Name or service not known
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我的问题是,如果 Git 无法连接到 git 服务器,它如何知道我的本地 master 落后多远?

标签: gitgithubgitlab

解决方案


我的问题是,如果 Git 无法连接到 git 服务器,它如何知道我的本地 master 落后多远?

它没有。

它知道你落后了多远最后一次你的 Git 从另一个 Git 获得更新。一个成功的git fetch更新,你会得到一个仅仅过时几秒而不是几分钟的答案。

您看到的计数是将分支的提交(通过 找到git rev-parse HEAD)与分支的上游提交 ( git rev-parse HEAD@{upstream}) 进行比较的结果。跑步git rev-list --count --left-right HEAD...HEAD@{u}将分别为您提供领先和落后的数字。(这个三点语法和--count --left-right解释起来有点棘手,尽管gitrevisions 文档文档git rev-list组合会让你到达那里。)


推荐阅读