远程分支机构在本地可用吗?

Are remote branches locally available?

这里 Git 很新。远程分支是什么意思?它们在当地可用吗(假设没有互联网)?

例如,这是我所有的分支,我想知道我的本地机器是否具备从我的 gh-pages 分支获取信息所需的一切?

$git branch -a

* main
  remotes/origin/gh-pages
  remotes/origin/main

是的,它们在本地可用。

它们是上次您 运行 git fetchgit pull.

时远程服务器上的内容的本地副本
  • 如果您想更新该远程视图:运行 git fetch.
    git pull 不同,git fetch 只会更新这些远程 b运行ches,而不会尝试更新您自己的本地 b运行ches。

  • 如果出于某种原因您想查看远程服务器上存在哪些 b运行ches 而无需下载它们的内容:使用 git ls-remote

  • 在任何情况下,即使您的遥控器的本地视图已过时,git push 也会在更新任何内容之前确保两个视图一致

假设您在 git clonegit pull 或类似命令期间没有添加 --depth,那么 是的,您的本地存储库包含远程分支的所有内容.

要检查它们,您需要做的就是 git checkout -b new-branch origin/main。您还可以使用 git log origin/main 查看他们指向的提交。

是的,当您克隆存储库时,您将获得远程存储库的完整副本,包括所有分支。因此,本地存储库中的 remote 分支通常也称为 remote-tracking 分支。它们本地存储在您的存储库中,但会跟踪远程存储库中的分支(使用 git fetch 之类的操作)。

编辑:正如 iBug 在他们的回答中提到的,clone 命令有一些标志,它们不会创建远程存储库的精确副本,而只会下载它的一部分,所以如果你使用了这样的标志,你需要检查)。

在 Git 中,您大部分时间都需要了解 3 种类型的分支。他们是:

  • 地方分支机构。这包括 gh-pages 分支。这些分支保存在本地,您可以在其中进行实际工作。
  • 远程跟踪分支。这包括 remotes/origin/gh-pages。这些也是本地分支,但它们的存在主要是作为存在于 Git 存储库(例如 Bitbucket 和 GitHub)上的真正远程分支的代理。每当您执行 git fetch 时,您都会更新这些(本地)远程跟踪分支
  • 远程分支。这包括存在于实际远程 Git 服务器上的 gh-pages 分支。当您对分支执行 git push,或完成将此分支作为目标的拉取请求时,您将更新此真正的远程分支。

现在回答你的问题:

I would like to know whether my local machine has all it needs to get the info from my gh-pages branch?

通常,您只需在 gh-pages 分支中键入 git status。你得到的响应会告诉你有多少提交 ahead/behind 来自远程跟踪分支。上一句中的关键词是“跟踪”,因为您的本地 git status 命令将 而不是 将本地 gh-pages 与远程的进行比较。相反,它将与 local 远程跟踪分支进行比较。因此,要获得最准确的状态报告,您应该执行以下步骤:

# from gh-pages
git fetch
gig status

您从上面看到的输出将真实地告诉您本地分支所处的位置,以了解可能已进入远程分支的任何新工作。