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

克隆GitHub仓库至服务器的文件影响及站点更新最优方案咨询

问题解答

1. 直接克隆GitHub仓库到服务器会发生什么?

首先得明确:git clone的作用是把仓库的完整内容下载到一个全新的空目录。如果你的public_html已经存放着旧站点的文件,直接执行git clone <仓库地址> public_html会报错——因为Git不允许克隆到非空且包含未被Git跟踪文件的目录里。

要是你先删除public_html里的所有内容再克隆,那确实会完全覆盖成仓库里的内容,但这显然不是你想要的,因为会丢失那些不在仓库里但必需的文件。

2. 如何安全更新站点,保留非仓库必需文件?

正确的思路是在现有public_html目录中初始化Git,关联远程仓库,让Git只管理仓库中已提交的文件,自动忽略未跟踪的非仓库文件。具体步骤如下:

第一步:先备份现有文件(重中之重!)

操作前务必备份public_html下的所有内容,避免意外丢失文件。

第二步:在现有目录初始化Git并关联远程仓库

# 进入站点根目录
cd public_html

# 初始化本地Git仓库
git init

# 关联你的GitHub远程仓库
git remote add origin <你的GitHub仓库URL>

第三步:同步本地现有文件与远程仓库

因为你的站点结构和仓库一致,先把本地现有文件暂存并提交(作为初始提交):

# 暂存所有与仓库结构匹配的文件
git add .

# 提交本地初始版本
git commit -m "Initial commit of existing site files"

然后拉取远程仓库的最新代码(如果远程已有提交,需要允许无关历史合并):

# 拉取远程main分支(如果你的分支是master就换成master)
git pull origin main --allow-unrelated-histories

第四步:后续日常更新站点

之后每次需要更新时,只需要在public_html目录执行:

git pull origin main

这时候Git只会更新那些在仓库中有变更的文件,完全不会触动那些未被Git跟踪的非仓库必需文件(比如你通过FTP上传的、没提交到GitHub的配置文件或用户上传内容)。

额外建议:用.gitignore保护非仓库文件

如果有一些固定的非仓库必需文件(比如本地配置文件local-config.php、临时缓存目录等),可以在public_html下创建.gitignore文件,把这些文件/目录加进去:

# 示例:忽略本地配置文件
local-config.php

# 示例:忽略用户上传的媒体目录(如果仓库只保留目录结构,不包含实际上传文件)
wp-content/uploads/

这样Git会自动忽略这些文件,既不会提示你提交它们,也不会在拉取时覆盖或删除它们。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:24:11