搭建 GitHub 镜像仓库

需求背景

国内访问 GitHub 仓库实在太慢,项目主要提交者也就我和 V,外加以后打算自己建立仓库,所以决定在新项目上试试。

将 GitHub 仓库作为镜像仓库,主库设在自建的服务器上。这样既能获得 GitHub 协作特性(Issues、PR、Actions、Release 等),开发时又能享受高速提交和拉取。

服务端

  1. 创建 Git 用户,配置 git-shell 等,然后配置 SSH 密钥,密钥分为两类:

    • 客户端提交服务端用,修改 ~/.ssh/authorized_keys
    • 服务端自动推送 GitHub,修改 ~/.ssh/id_rsa.pub。GitHub 上需要配置账号 SSH 或者仓库 Deploy Keys
  2. 切换到 Git 用户,并在 ~ 下创建仓库

    mkdir sample.git && cd sample.git && git clone --bare git@github.com:youraccount/sample.git
    
  3. 在 hooks 目录下创建名为 post-receive 的脚本:

    #!/bin/sh
    
    git push --mirror git@github.com:youraccount/sample.git >/dev/null 2>&1 &
    

    设置脚本执行权限:

    chmod +x post-receive
    

客户端

克隆服务器上的仓库或者将现有仓库的远程地址改为服务端仓库:

git remote set-url origin git@yourserver:sample.git

这样以后推送本地仓库就会推送到服务端仓库,然后服务端仓库触发 post-receive 钩子,覆盖 GitHub 上的镜像仓库。

注意事项

  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    161 引用 • 1717 回帖 • 409 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    169 引用 • 326 回帖 • 638 关注
  • 同步
    22 引用 • 208 回帖
  • 镜像
    6 引用 • 21 回帖
1 回帖
请输入回帖内容...
  • MrLi

    奈斯