我有一个远程的git仓库,它有着庞大的历史记录和缓慢的连接通道。这个仓库有一些本地用户,但是在提交或克隆大量数据后,推送和拉取都变得非常缓慢。因此,我希望创建一个本地的镜像,并在后台同步远程仓库。我知道这是一个需求很高的问题,但我还没有找到任何解决方案(我不是远程仓库的管理员,我只想简化本地的操作)。
我有一个远程的git仓库,它有着庞大的历史记录和缓慢的连接通道。这个仓库有一些本地用户,但是在提交或克隆大量数据后,推送和拉取都变得非常缓慢。因此,我希望创建一个本地的镜像,并在后台同步远程仓库。我知道这是一个需求很高的问题,但我还没有找到任何解决方案(我不是远程仓库的管理员,我只想简化本地的操作)。
由于您在评论中提到导致连接缓慢的人会做大部分工作,因此建议您将缓慢的远程站点设置为本地存储库的镜像,以便对其进行提交。
首先,在本地服务器上创建缓慢远程站点的裸克隆。
$ git clone --bare git://slow/repo.git
你现在只需要把本地克隆版本提交,而不是慢速远程版本。
然后设置cron job或类似的工具,将本地仓库中的更改推送到慢速站点:
$ git push origin --mirror
--mirror
,您告诉git推送所有分支和标签。--mirror
,但是这样你就需要指定要推送哪个分支,例如 git push origin master
。然后你可能还想在推送时添加 --tags
以便一并推送标签。--mirror
将会自动推送所有本地分支和标签,因此它会自动完成所有这些操作(但会覆盖远程更改)。 - Benjamin Banniergit push origin "refs/*:refs/*"
。请注意,"refs/*:refs/*"
将拒绝非快进式更新,而"+refs/*:refs/*"
将强制更新(覆盖)。 - Alberto您应该能够使用浅克隆功能
git clone --depth=20 url-to-your-repo some-path
这应该让你不必再关注大部分历史记录。