如何设置本地目录以镜像远程git存储库?

jca*_*dam 1 git mirror acceleration

情况就是这样.我在服务器A上有一个远程git存储库.另外,我必须在这个存储库中使用相同的源代码处理桌面B. 由于访问服务器A的带宽有限,我想在桌面B上为存储库设置本地镜像.

现在,我已经设置了镜像存储库

git clone --mirror https://repository-on-server-a /local/repo/path.git
Run Code Online (Sandbox Code Playgroud)

我已经测试了本地存储库

git clone file://localhost/local/repo/path.git
Run Code Online (Sandbox Code Playgroud)

然后我修改了crontab来做

cd /local/repo/path git fetch -q
Run Code Online (Sandbox Code Playgroud)

每5分钟同步一次.它运作良好.

一开始,我正在考虑使用

git config --global url.file://localhost/local/repo/path.git.insteadOf https://repository-on-server-a
Run Code Online (Sandbox Code Playgroud)

让git从本地目录而不是远程仓库获取所有对象.但是,它不起作用.

我的问题是

  1. 是否有一种简单的方法为远程git repo设置这样的本地镜像?
  2. 如何处理'git push'?由于insteadOf将每次推送到本地目录,我怎么能将我的所有更改推回到服务器A?

本地目录用于测试,但不是最终解决方案.我将有另一个桌面C以便稍后从桌面B获取源代码.另一位同事也会加入我的行列.这意味着我们希望将桌面B中的所有更改都为我们提供一些"中心"解决方案.

Mar*_*eed 5

镜子是什么?您当地的git工作目录已经原始存储库的镜像; 这就是DVCS的工作方式.我不明白你的文件系统上的第二个本地副本的好处.

编辑 如果您想将其中一个repos用作本地网络收集点,以便在网络的其余部分和上游源之间进行更改,那么cron作业就可以了.只要让它push --mirror做完就可以了fetch -a.

但是,我不打扰代理/别名设置.让大家克隆并明确地推送到本地镜像; 这样,如果出于某种原因需要到达真正的原点,它就不会妨碍它.他们甚至可以将两个URL设置为远程,默认情况下使用本地URL,如果需要,可以通过远程名称使用真实URL.