将 git 存储库共享到一台无法访问互联网的机器

sharing a git repository to a machine that does not have internet access from one that has

我有这个设置

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 获取

我正在通过 SMB 共享本地 machineB 存储库,我可以从 machineC 克隆它。

问题是我只能获取 master 分支或只能获取我在 machineB 上的本地分支,而不是 machineA 上的所有分支。

是否有任何命令可以在本地获取所有内容或将存储库转换为 .git 一个?

干杯

在machineB中,从machineA做一个镜像克隆

git clone --mirror /url/to/machineA/repository

在machineC中,从machineB中的镜像仓库克隆

git clone /url/to/machineB/repository

当machineC仓库需要machineA的最新数据时,先更新machineB的镜像仓库

git remote update

然后更新 machineC 中的存储库

git fetch

The issue is that I am just be able to get the master branch or only the local branches I have on machineB, not all the branches present on machineA.

在您目前的情况下,您仍然可以通过

获取machineC存储库中的所有分支和标签
git fetch origin refs/remotes/origin/*:refs/remotes/origin/* refs/tags/*:refs/tags/*

但它不自然且令人困惑。通过将 machineB 仓库从 non-bare 仓库变成镜像仓库,我们可以在 machineC 仓库中使用熟悉的命令。