我有这个设置
machineA -> remote server with a repo.git initialized with --bare
machineB -> client that can access to internet and clone repo.git, so it locally will have repo
machineC -> connected in LAN with machineB and no internet access
目标是让 machineC 与 machineB 存储库一起工作(以只读模式),就好像它是远程存储库一样。因此,machineB 定期从远程服务器进行 git fetch
我正在通过 SMB 共享本地 machineB 存储库,并且我可以从 machineC 克隆它。
问题是我只能获取 master 分支或只能获取 machineB 上的本地分支,而不是 machineA 上存在的所有分支。
是否有任何命令可以在本地获取所有内容或将存储库转换为 .git 存储库?
干杯
在机器 B 中,从机器 A 制作镜像克隆
git clone --mirror /url/to/machineA/repository
在machineC中,从machineB中的镜像仓库克隆
git clone /url/to/machineB/repository
当machineC仓库需要machineA的最新数据时,先更新machineB中的镜像仓库
git remote update
然后更新machineC中的存储库
git fetch
问题是我只能获得主分支或只能获得 我在 machineB 上的本地分支,而不是所有存在的分支 机器A.
在您当前的情况下,您仍然可以通过
获取machineC存储库中的所有分支和标签git fetch origin refs/remotes/origin/*:refs/remotes/origin/* refs/tags/*:refs/tags/*
但这很不自然且令人困惑。通过将machineB存储库从非裸存储库转变为镜像存储库,我们可以在machineC存储库中使用熟悉的命令。
如果 machineC 无法连接到 machineB,但 machineB 可以连接到 machineC,该怎么办?这是由于网络限制而发生的。
是否可以简单地将代码从machineB推送到machineC?