将 git 存储库共享给一台无法访问互联网的计算机

问题描述 投票:0回答:2

我有这个设置

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 存储库?

干杯

git clone git-clone git-fetch
2个回答
1
投票

在机器 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存储库中使用熟悉的命令。


0
投票

如果 machineC 无法连接到 machineB,但 machineB 可以连接到 machineC,该怎么办?这是由于网络限制而发生的。

是否可以简单地将代码从machineB推送到machineC?

© www.soinside.com 2019 - 2024. All rights reserved.