在执行 git fetch 之后用 git 检查一个分支是否仍然到原点?

Does checking out a branch with git after doing git fetch still goto the origin?

如果我在本地存储库中设置了远程服务器并且我第一次执行 git 提取,如果有 10 个远程分支,我现在将有 10 个远程跟踪分支已阅读。

根据我还收集到的信息,这些远程跟踪分支是指向这些远程分支的指针,而不是这些分支上代码的实际完整本地副本...是否正确?

我的后续行动是,如果我要在 git 获取之后检查这些远程分支之一,git 是否仍需要连接到远程以获取所有代码,或者它会简单地切换到本地机器上已经有所有代码的远程跟踪分支?

From what I've also gathered these remote tracking branches are pointers to those remote branches rather than actual full local copies of the code on those branches...is that correct?

不,这是不正确的。

Git 分支只是一个名称和一个提交 ID。远程分支没有什么特别的,除了你不承诺它们。

获取时,您会下载每个提交的完整副本。每个提交都知道哪个提交在它之前(或者在合并的情况下,两个或更多提交)。这就是“历史”。 Git 在存储和传输该历史记录方面非常有效。

My follow up then is if I was to checkout one of these remote branches after a git fetch, does git still need to connect to the remote to get all the code or would it simply switch to the remote tracking branch on the local machine which already has all the code?

Git 已经有了存储库的完整副本。当您 git checkout origin/main Git 切换到 origin/main 指向的已下载提交时。

只有少数 Git 命令可以进行任何网络访问。主要的是 git pushgit fetchgit pull(这只是一个获取 + 合并)。