























A linux 机器上的 ./git/refs/remotes 目录是远端仓库(相对机器 A 来说,比如 github 仓库)分支的引用,
./git/refs/head 目录下是本地分支的引用,git clone 命令会传输 ./git/refs/head 目录以及./git/refs/tags 目录下的对象,然后再克隆目的地**重建** ./git/refs/remotes 目录。
具体到你的例子,从 github clone 代码到机器 A 时,master ,openwrt-22.03 ,openwrt-23.05 等这些分支都是 github 的本地分支,其引用在 github 的./git/refs/head 目录下,git clone 命令会处理这个目录并传输这些对象到机器 A ,而并不会处理 github 机器上 ./git/refs/remotes 目录的内容;对于机器 A 来说,clone 之后,本地./git/refs/head 目录会生成一个机器 A 自己的本地分支,通常是 clone 时远端仓库 checkout 的分支(比如 master ),而 github 的其他本地分支 openwrt-22.03 ,openwrt-23.05 等对机器 A 来说是远端分支,因此,这些分支的引用会被创建(重建而非复制)在机器 A 的 ./git/refs/remotes 目录,你在机器 A 上通过 git checkout -b 创建的新分支是机器 A 的本地分支,其引用保存在./git/refs/head 目录。
当你把机器 A 当做远端仓库,机器 B 当做目的地仓库时,被处理的是机器 A 的 ./git/refs/head 目录,所以 clone 的结果是:
假设 clone 执行时机器 A checkout 的分支为 bra-X ,那么在机器 B 的./git/refs/head 目录会有一个 bra-X 的本地分支,而机器 A 的其他分支比如 master ,openwrt-22.03 ,openwrt-23.05 等的引用都会被重建在机器 B 的./git/refs/remotes 目录。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。