news 2026/8/22 14:51:59

揭秘 .deploy_git 目录:hexo-deployer-git 如何保留 Git 提交历史及一键重置方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
揭秘 .deploy_git 目录:hexo-deployer-git 如何保留 Git 提交历史及一键重置方法

揭秘 .deploy_git 目录:hexo-deployer-git 如何保留 Git 提交历史及一键重置方法

【免费下载链接】hexo-deployer-gitGit deployer plugin for Hexo.项目地址: https://gitcode.com/gh_mirrors/he/hexo-deployer-git

hexo-deployer-git是 Hexo 静态博客的官方 Git 部署插件。每次执行部署命令时,它都会在站点根目录下一个名为.deploy_git的隐藏目录里悄悄完成初始化、同步与推送——而这个目录正是决定部署分支提交历史是否得以保留的关键。这篇文章带你从零看懂:.deploy_git从何而来、hexo-deployer-git 如何保留 Git 提交历史,以及出问题时如何一键重置。

1. .deploy_git 是什么?

.deploy_git是 hexo-deployer-git 自动创建的本地中转仓库(暂存工作区)。每次部署时,它的工作流程大致分三步:

  1. 目录不存在→ 自动创建并执行git init,生成一个占位的 "First commit" 提交;
  2. 清空目录旧文件,把最新的public/静态产物(以及你配置的extend_dirs附加目录)复制进来;
  3. 执行git add+git commit,然后**强制推送(force push)**到你配置的部署仓库(如gh-pages分支)。

这个目录的定义可以在源码中一眼看到:lib/deployer.js,其中deployDir就是站点根目录 + '.deploy_git'

💡 一句话理解:.deploy_git= 部署分支的「本地镜像」+ 提交历史的载体。

2. hexo-deployer-git 如何保留 Git 提交历史

2.1 目录不存在时:自动初始化历史起点

首次部署时,插件会执行 lib/deployer.js 中的setup()流程:

创建空的 placeholder 占位文件 → git init → git add -A → 提交 "First commit"

从这一刻起,.deploy_git就是一个合法的 Git 仓库,之后的每一次部署都在这段历史上追加新提交。

2.2 目录已存在时:直接复用整段历史

这是保留历史的核心判断逻辑,位于 lib/deployer.js:如果.deploy_git已存在,就跳过初始化,直接沿用当前仓库(连同它的全部提交历史)。正因如此,你不需要在每次部署前做任何操作,历史就自然延续下来。

2.3 强制推送,保证远端与本地完全一致

每次部署结束,插件都会执行带--force的推送(见 lib/deployer.js 的push()),让远端部署分支与本地生成的站点内容完全对齐。

⚠️注意:force push 意味着远端分支上任何直接修改(例如手动向gh-pages提交的内容)都会在下次部署时被覆盖。所有改动都应集中放在 Hexo 源码目录中。

3. 进阶技巧:克隆远端仓库,继承已有提交历史

如果你的部署仓库里已经存在一段提交历史(比如之前手工推过内容),而.deploy_git还不存在,插件会从头新建历史,旧提交就"断档"了。官方推荐的做法是把部署仓库克隆到.deploy_git

git clone <部署仓库地址> .deploy_git

这样下次部署时,hexo-deployer-git 会以这段历史为基准继续提交推送,而不是重新开一个"孤儿"历史。官方说明见 README.md 的 "How it works" 一节。

4. 一键重置:删除 .deploy_git 即可

什么情况下需要重置?

  • 部署分支历史混乱,想彻底推倒重来;
  • 本地.deploy_git与远端长期不同步,部署总报奇怪的错误;
  • 更换部署仓库或分支后,旧历史成为干扰。

官方的"一键重置"非常简单——直接删除整个目录

rm -rf .deploy_git

下次部署时,插件会自动重新初始化(官方文档见 README.md 的 "Reset" 一节),你会得到一份干净的新历史。

📌 提示:重置只影响本地,不会自动删除远端分支;但下次部署会用全新历史 force push 覆盖远端内容,操作前请确认远端没有需要保留的手动修改。

5. 新手常见问题 FAQ

Q:.deploy_git要提交进源码仓库吗?A:不需要。它只是本地工作目录,建议加入.gitignore

Q:部署后自定义域名的 CNAME 文件丢失了?A:在站点的source/目录下新建一个CNAME文件并写入你的域名,这样每次构建都会把它带进部署分支。详细说明见 README.md。

Q:部署分支名可以自定义吗?A:可以。在_config.ymldeploy下配置type: gitrepo(仓库地址)、branch(部署分支)即可;若不指定,GitHub 非用户主页仓库默认推gh-pages,分支推断逻辑见 lib/parse_config.js。完整配置项参考 README.md。

Q:插件是如何注册进 Hexo 的?A:只需一行注册代码,见 index.js,把git类型映射到部署实现 lib/deployer.js。

6. 小结

.deploy_git是 hexo-deployer-git 的部署"引擎室":

  • 不存在→ 自动git init,创建历史起点;
  • 已存在→ 复用现有提交历史,增量追加新提交;
  • 想重来→ 删除目录一键重置,下次部署自动重建;
  • 想继承远端旧历史→ 先git clone.deploy_git

理解了这个目录,Hexo 的 Git 部署就不再是黑盒。动手试试吧!🚀

【免费下载链接】hexo-deployer-gitGit deployer plugin for Hexo.项目地址: https://gitcode.com/gh_mirrors/he/hexo-deployer-git

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 14:47:42

135、洞察驱动的实战标题——色调映射的“审美偏差“——日系/欧系/国产手机的影调差异来源,从直方图塑形到局部对比度控制的调参心法

135、洞察驱动的实战标题——色调映射的"审美偏差"——日系/欧系/国产手机的影调差异来源,从直方图塑形到局部对比度控制的调参心法 上周三晚上十一点,我盯着两台旗舰机的同场景夜景样张,差点把咖啡泼在键盘上。一台是日系某大厂,一台是欧系某老牌,同一颗IMX传…

作者头像 李华
网站建设 2026/8/22 14:47:15

MOFA2 完整指南:3 步跑通你的第一个多模态因子分析

MOFA2 完整指南&#xff1a;3 步跑通你的第一个多模态因子分析 【免费下载链接】MOFA2 Multi-Omics Factor Analysis 项目地址: https://gitcode.com/gh_mirrors/mo/MOFA2 MOFA2 是一款基于 Python 的生物数据分析工具&#xff0c;专门面向多模态、混合类型数据&#xf…

作者头像 李华