1

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

现在,我已经通过以下方式设置了镜像存储库

git clone --mirror https://repository-on-server-a /local/repo/path.git

我已经通过以下方式测试了本地存储库

git clone file://localhost/local/repo/path.git

然后我修改了 crontab 来做

cd /local/repo/path git fetch -q

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

一开始,我正在考虑使用

git config --global url.file://localhost/local/repo/path.git.insteadOf https://repository-on-server-a

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

我的问题是

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

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

4

1 回答 1

5

镜子有什么用?您的本地 git 工作目录已经源存储库的镜像;这就是 DVCS 的工作方式。我不明白在您的文件系统上创建第二个本地副本的好处。

编辑 如果您想使用您的存储库之一作为本地网络收集点,以在您的网络的其余部分和上游来源之间进行更改,那么 cron 作业就可以了。push --mirror在它完成它之后让它做一个fetch -a

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

于 2012-05-30T03:15:04.780 回答