当前位置: 首页 > news >正文

在服务器已有目录中部署 Git 仓库 - 指南

适用场景

本教程为你解决一个非常具体的部署问题:你需要在服务器上一个已经存在的、并且非空的目录(例如由网站面板创建的站点根目录)中,拉取并部署一个 Git 仓库。

因为 git clone 命令只能在空目录或不存在的目录中执行,直接使用会报错,所以我们需要采用“初始化 -> 关联 -> 拉取 -> 重置”这套更灵活的方案。


操作流程

步骤一:准备 GitHub 个人访问令牌 (PAT)

在开始操作服务器之前,我们首先需要准备一个关键的凭据:个人访问令牌(Personal Access Token)。由于 GitHub 不再支持使用账户密码进行命令行操作,令牌是目前唯一的认证方式。

  1. 登录 GitHub
    在你的电脑浏览器上登录 GitHub 账户。

  2. 进入开发者设置
    点击右上角头像 → Settings → 左侧菜单栏底部 Developer settings

  3. 选择令牌类型
    在左侧菜单中,选择 Personal access tokensTokens (classic)

  4. 生成新令牌
    点击页面右上方的 Generate new token 按钮,然后选择 Generate new token (classic)

  5. 配置令牌权限

    • Note (备注):给令牌起个名字,方便你记住它的用途,例如 my-server-deploy
    • Expiration (有效期):选择一个有效期,如 90 days
    • Select scopes (选择权限)这是最重要的一步。 请直接勾选顶级的 repo 复选框。这会授予该令牌所有与仓库相关的权限,足以满足部署需求。
  6. 生成并保存令牌
    滚动到页面底部,点击 Generate token

  7. ⚠️ 立即复制并妥善保管!
    页面会显示一串以 ghp_ 开头的字符,这就是你的令牌。请立即复制它,并保存在一个安全的地方。这个令牌只会显示这一次,刷新或关闭页面后将无法再次查看!


步骤二:登录服务器并执行 Git 操作

现在,你已经拥有了令牌,可以正式开始在服务器上部署了。

  1. 进入目标目录
    通过 SSH 登录你的服务器,然后 cd 到你想要部署代码的目录。

    # 将下面的路径替换成你自己的
    cd /www/wwwroot/www.site.cn
  2. 初始化并关联仓库
    首先,将这个目录变成一个本地 Git 仓库;然后,告诉它远程仓库的地址。

    # 1. 初始化
    git init
    # 2. 关联远程仓库 (将 URL 替换成你自己的)
    git remote add origin https://github.com/www/site.git

    你可以运行 git remote -v 来检查是否关联成功。

  3. 拉取远程数据并认证
    这是最关键的交互步骤。运行 fetch 命令来下载远程仓库的所有信息。

    git fetch origin

    终端会依次提示你输入凭据:

    • Username for 'https://github.com':

      在这里输入你的 GitHub 用户名,然后回车。

    • Password for 'https://...':

      在这里粘贴你在步骤一中生成的个人访问令牌 (PAT)。注意:输入时光标不会移动,这是正常的,粘贴后直接回车即可。

    如果凭据正确,你会看到下载对象的进度条,代表数据已成功拉取到本地的 .git 数据库中。

  4. 强制更新工作目录
    现在,数据已经下载完毕,我们用最后一条命令,将当前目录的文件强制刷新成和远程仓库一模一样。

    # 警告:此操作会覆盖本地所有文件,请谨慎操作!
    # 确保 origin/main 是你仓库的默认分支 (也可能是 origin/master)
    git reset --hard origin/main

    当看到 HEAD is now at ... 的提示时,就意味着你的目录内容已经和远程仓库完全同步了。

  5. 验证成果
    最后,确认一下文件是否都已就位。

    ls -la

    列出的文件列表应该和你的 GitHub 仓库根目录完全一致。恭喜你,部署成功!


附录:常见问题排查

  • 问题:认证失败 (Authentication failed)

    • 原因:输入了 GitHub 账户密码,而不是个人访问令牌。
    • 解决:严格按照本教程步骤一生成并使用 PAT。
  • 问题:网络超时 (Connection timed out)

    • 原因:服务器无法连接到 github.com
    • 解决:在服务器上运行 ping github.com 测试网络。如果不通,请检查服务器防火墙或云服务商的安全组规则,确保出站TCP 443 端口是开放的。
  • 问题:所有权可疑 (dubious ownership)

    • 原因:当前用户(如 root)没有此目录的所有权,Git 出于安全考虑发出警告并中断操作。
    • 解决:按照 Git 的提示,将该目录添加为安全目录即可。
      # 将路径替换成你自己的
      git config --global --add safe.directory /www/wwwroot/md.xtyzx.cn
http://www.jsqmd.com/news/329111/

相关文章:

  • C++ reinterpret_cast 用法与内存安全指南
  • 太空科幻机械舱怎么选?2026年选购指南来袭,国内机械舱销售厂家聚焦优质品牌综合实力排行
  • 人脸识别OOD模型企业应用实践:1:1比对+搜索双模集成至OA系统
  • Qwen3-1.7B真实案例:AI客服对话生成演示
  • 通义千问3-Reranker-0.6B部署指南:开箱即用镜像免配置快速接入
  • 破局与共生:AI浪潮下,数据开发者的三年进阶蓝图
  • Clawdbot开源实践:Qwen3:32B代理网关与企业SSO系统(OIDC/SAML)单点登录集成
  • js正则表达式怎么用?W3C标准详解与实战技巧
  • 科哥镜像使用手册:Speech Seaco Paraformer完整操作流程
  • 加密货币钱包的现状与未来展望
  • 显存优化黑科技:造相Z-Image在24GB显卡上的稳定出图秘诀
  • Qwen3-VL网页UI交互优化:实时反馈机制部署实战指南
  • Qwen3-TTS-Tokenizer-12Hz在TTS训练中的实际应用与效果展示
  • 惊艳效果展示:人脸识别OOD模型在低光照场景下的实测表现
  • DIFY的知识检索节点,选择CSV还是MD格式好?
  • [特殊字符] Meixiong Niannian画图引擎效果惊艳展示:光影质感/人物结构/材质细节特写
  • Fun-ASR避坑指南:部署常见问题全解,少走弯路
  • 24G显存也能跑!Lingyuxiu MXJ LoRA轻量化人像生成全攻略
  • Qwen3-Embedding-4B应用落地:跨境电商多语言商品描述语义对齐方案
  • Qwen-Image-Edit-2511助力自媒体运营,一键生成配图
  • TMS320F28335的FOC与VF程序源代码及工程,附带硬件原理图
  • GLM-4.7-FlashGPU算力:单卡4090D支持batch_size=8实测报告
  • 中文文本处理新选择:StructBERT语义匹配系统保姆级部署指南
  • 亲测PyTorch-2.x-Universal-Dev-v1.0镜像:5分钟搞定Lora微调环境搭建
  • 《喜报模板》使用说明
  • 技术干货 | 液冷板流道设计与优化思路详解
  • SMBus主机初始化配置:从零开始实战案例
  • HG-ha/MTools真实案例:学生用其自动整理课堂录音→笔记→思维导图全流程
  • 教育行业实战:用Fun-ASR转录培训课程音频
  • 亲测有效!ms-swift + Qwen2.5快速搭建中文对话系统