尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

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

揭秘 .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-githexo-deployer-git是 Hexo 静态博客的官方 Git 部署插件。每次执行部署命令时它都会在站点根目录下一个名为.deploy_git的隐藏目录里悄悄完成初始化、同步与推送——而这个目录正是决定部署分支提交历史是否得以保留的关键。这篇文章带你从零看懂.deploy_git从何而来、hexo-deployer-git 如何保留 Git 提交历史以及出问题时如何一键重置。1. .deploy_git 是什么.deploy_git是 hexo-deployer-git 自动创建的本地中转仓库暂存工作区。每次部署时它的工作流程大致分三步目录不存在→ 自动创建并执行git init生成一个占位的 First commit 提交清空目录旧文件把最新的public/静态产物以及你配置的extend_dirs附加目录复制进来执行git addgit 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_gitgit 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. 新手常见问题 FAQQ.deploy_git要提交进源码仓库吗A不需要。它只是本地工作目录建议加入.gitignore。Q部署后自定义域名的 CNAME 文件丢失了A在站点的source/目录下新建一个CNAME文件并写入你的域名这样每次构建都会把它带进部署分支。详细说明见 README.md。Q部署分支名可以自定义吗A可以。在_config.yml的deploy下配置type: git、repo仓库地址、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),仅供参考
返回列表