远程分支机构在本地可用吗?
Are remote branches locally available?
这里 Git 很新。远程分支是什么意思?它们在当地可用吗(假设没有互联网)?
例如,这是我所有的分支,我想知道我的本地机器是否具备从我的 gh-pages
分支获取信息所需的一切?
$git branch -a
* main
remotes/origin/gh-pages
remotes/origin/main
是的,它们在本地可用。
它们是上次您 运行 git fetch
或 git pull
.
时远程服务器上的内容的本地副本
如果您想更新该远程视图:运行 git fetch
.
与 git pull
不同,git fetch
只会更新这些远程 b运行ches,而不会尝试更新您自己的本地 b运行ches。
如果出于某种原因您想查看远程服务器上存在哪些 b运行ches 而无需下载它们的内容:使用 git ls-remote
在任何情况下,即使您的遥控器的本地视图已过时,git push
也会在更新任何内容之前确保两个视图一致
假设您在 git clone
、git 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
您从上面看到的输出将真实地告诉您本地分支所处的位置,以了解可能已进入远程分支的任何新工作。
这里 Git 很新。远程分支是什么意思?它们在当地可用吗(假设没有互联网)?
例如,这是我所有的分支,我想知道我的本地机器是否具备从我的 gh-pages
分支获取信息所需的一切?
$git branch -a
* main
remotes/origin/gh-pages
remotes/origin/main
是的,它们在本地可用。
它们是上次您 运行 git fetch
或 git pull
.
如果您想更新该远程视图:运行
git fetch
.
与git pull
不同,git fetch
只会更新这些远程 b运行ches,而不会尝试更新您自己的本地 b运行ches。如果出于某种原因您想查看远程服务器上存在哪些 b运行ches 而无需下载它们的内容:使用
git ls-remote
在任何情况下,即使您的遥控器的本地视图已过时,
git push
也会在更新任何内容之前确保两个视图一致
假设您在 git clone
、git 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
您从上面看到的输出将真实地告诉您本地分支所处的位置,以了解可能已进入远程分支的任何新工作。