You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过SSH将GitHub私有仓库部署至网站空间的正确方法

高效更新私有GitHub仓库到网站空间的方案

当然有更合理的操作方式,完全不需要每次重新克隆仓库,也不用在网站运行目录创建完整Git仓库。根据你的情况(有SSH权限、服务器已装Git、私有仓库),推荐两种轻量高效的方法:

方法一:直接用git archive拉取最新代码(适合偶尔更新)

这种方式不需要在服务器上创建任何仓库,直接从GitHub拉取指定分支的代码并解压到网站目录:

  1. 准备工作:确保服务器的SSH密钥已添加到你的GitHub账号的SSH Keys中(这样服务器能访问私有仓库)。如果是第一次连接,登录服务器后执行ssh git@github.com,按提示确认信任GitHub主机指纹。

  2. 执行更新命令:
    你可以在本地通过SSH远程执行,或者直接登录服务器后运行:

    cd /path/to/your/web-root  # 替换成你的网站根目录
    git archive --remote=git@github.com:YourUsername/your-private-repo.git main | tar -x
    
    • git archive --remote:从远程私有仓库打包指定分支(这里是main,可替换成你需要的分支)的所有文件
    • tar -x:将打包的文件解压到当前目录,自动覆盖现有文件(注意:如果网站有自定义修改的文件,会被覆盖,提前做好备份)

方法二:用裸仓库+钩子实现推送自动同步(适合频繁更新)

如果需要频繁更新代码,这种方式更高效——在服务器上创建一个裸仓库(仅存储Git元数据,没有工作目录),通过钩子自动同步到网站目录:

  1. 创建裸仓库:登录服务器,选择一个非网站目录的位置(比如/opt/your-site-bare.git):

    mkdir -p /opt/your-site-bare.git
    cd /opt/your-site-bare.git
    git init --bare
    
  2. 配置同步钩子:
    编辑裸仓库的hooks/post-update文件(如果不存在就新建),添加以下内容:

    #!/bin/sh
    # 将代码同步到网站根目录
    git --work-tree=/path/to/your/web-root --git-dir=/opt/your-site-bare.git checkout -f main
    

    然后给钩子添加执行权限:

    chmod +x hooks/post-update
    
  3. 本地配置远程推送:在你的本地Git仓库中,添加服务器裸仓库作为远程:

    git remote add server ssh://your-server-user@your-server-ip/opt/your-site-bare.git
    
  4. 推送更新:以后每次本地代码更新后,直接推送到服务器即可自动同步:

    git push server main
    

注意事项

  • 两种方法都需要服务器能通过SSH访问你的私有GitHub仓库,所以务必确保服务器的SSH密钥已授权给GitHub。
  • 如果网站目录有自定义修改的文件(比如配置文件),建议将这些文件添加到.gitignore,避免被覆盖;或者在更新前备份。

内容的提问来源于stack exchange,提问作者Sebastian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:48:04