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

如何将本地Git项目推送至Namecheap共享主机并实现频繁推送?

解决本地Git仓库推送到Namecheap共享主机后文件未更新的问题

我来帮你搞定这个推送后文件没变化的问题——这是用Namecheap共享主机配置Git时的常见坑,咱们一步步排查并解决:

1. 先在主机上创建裸仓库(关键前提)

你之前大概率创建的是普通Git仓库,而Git默认会拒绝推送到非裸仓库的当前分支(怕覆盖工作区的本地修改),所以必须先在主机上建一个裸仓库:

  • 用SSH登录你的Namecheap主机:ssh your-username@your-domain.com(替换成你的主机账号和域名)
  • 找个安全的目录存仓库(建议放在public_html外面,避免暴露仓库文件),比如:
    mkdir ~/git-repos && cd ~/git-repos
    
  • 创建裸仓库:
    git init --bare your-project.git
    

2. 配置本地仓库的远程地址

回到本地的Git仓库,把主机的裸仓库添加为远程:

git remote add production ssh://your-username@your-domain.com/~/git-repos/your-project.git

⚠️ 注意:路径要和你主机上创建的仓库位置完全一致,~/代表你的用户根目录,别写错了。

3. 设置推送后自动同步到网站目录(核心!)

裸仓库本身没有工作区,所以推送后代码不会自动出现在你的网站目录(比如public_html)。咱们用Git的post-receive钩子来自动部署:

  • 回到主机的裸仓库,进入hooks目录:
    cd ~/git-repos/your-project.git/hooks
    
  • 创建post-receive文件:
    nano post-receive
    
  • 写入以下内容(替换成你的网站目录和分支名):
    #!/bin/sh
    git --work-tree=/home/your-username/public_html --git-dir=/home/your-username/git-repos/your-project.git checkout -f main
    
    说明:把main换成你本地的默认分支(比如老项目可能是master),两个路径都要用主机上的绝对路径。
  • 给钩子文件加执行权限(不然钩子不会运行):
    chmod +x post-receive
    

4. 测试推送

现在回到本地仓库,推送代码到主机:

git push production main

这时候你再去主机的public_html目录看,文件应该已经更新了。

排查之前的问题点

如果之前按官方步骤操作没成功,大概率是这几个原因:

  • 用了普通仓库而非裸仓库,导致Git拒绝推送或推送后无工作区同步
  • 钩子文件没有设置执行权限,导致推送后不会自动同步到网站目录
  • 远程仓库的路径配置错误,推送的目标位置不对
  • SSH权限问题:确保你的本地SSH密钥已经添加到主机的~/.ssh/authorized_keys,或者推送时输入的密码正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:07:55