<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>Sky</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://skyblog-dju.pages.dev/</id>
  <link href="https://skyblog-dju.pages.dev/" rel="alternate"/>
  <link href="https://skyblog-dju.pages.dev/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, Sky</rights>
  <subtitle>记录技术与思考</subtitle>
  <title>我的技术博客</title>
  <updated>2026-08-27T10:00:00.000Z</updated>
  <entry>
    <author>
      <name>Sky</name>
    </author>
    <category term="技术" scheme="https://skyblog-dju.pages.dev/categories/%E6%8A%80%E6%9C%AF/"/>
    <category term="教程" scheme="https://skyblog-dju.pages.dev/tags/%E6%95%99%E7%A8%8B/"/>
    <category term="Hexo" scheme="https://skyblog-dju.pages.dev/tags/Hexo/"/>
    <category term="博客" scheme="https://skyblog-dju.pages.dev/tags/%E5%8D%9A%E5%AE%A2/"/>
    <content>
      <![CDATA[<blockquote><p>目标读者：完全没接触过前端&#x2F;博客的”小白”。<br>跟着做，你会在 1~2 小时内拥有一个和本博客（Sky Blog）一样的、能在线访问的博客。<br>本教程所有命令在 <strong>Windows + Git Bash</strong> 下书写，macOS&#x2F;Linux 用户只需把 <code>git</code> 换成同款命令即可。</p></blockquote><hr><h2 id="目录"><a href="#目录" class="headerlink" title="目录"></a>目录</h2><ul><li><a href="#%E7%AC%AC-0-%E6%AD%A5%E5%85%88%E6%90%9E%E6%87%82-4-%E4%B8%AA%E6%A6%82%E5%BF%B5">第 0 步：先搞懂 4 个概念</a></li><li><a href="#%E7%AC%AC-1-%E6%AD%A5%E5%87%86%E5%A4%87%E7%8E%AF%E5%A2%8315-%E5%88%86%E9%92%9F">第 1 步：准备环境（15 分钟）</a></li><li><a href="#%E7%AC%AC-2-%E6%AD%A5%E6%90%AD%E5%BB%BA-hexo-%E9%AA%A8%E6%9E%B610-%E5%88%86%E9%92%9F">第 2 步：搭建 Hexo 骨架（10 分钟）</a></li><li><a href="#%E7%AC%AC-3-%E6%AD%A5%E5%AE%89%E8%A3%85-sakura-%E4%B8%BB%E9%A2%98">第 3 步：安装 Sakura 主题</a></li><li><a href="#%E7%AC%AC-4-%E6%AD%A5%E7%AB%99%E7%82%B9%E9%85%8D%E7%BD%AE-_configyml">第 4 步：站点配置 <code>_config.yml</code></a></li><li><a href="#%E7%AC%AC-5-%E6%AD%A5%E4%B8%BB%E9%A2%98%E9%85%8D%E7%BD%AE-_configsakurayml">第 5 步：主题配置 <code>_config.sakura.yml</code></a></li><li><a href="#%E7%AC%AC-6-%E6%AD%A5%E5%86%99%E7%AC%AC%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0">第 6 步：写第一篇文章</a></li><li><a href="#%E7%AC%AC-7-%E6%AD%A5%E6%90%9E%E5%AE%9A%E6%A0%87%E7%AD%BE%E5%88%86%E7%B1%BB%E9%A1%B5%E6%96%B0%E6%89%8B%E5%BF%85%E8%B8%A9%E7%9A%84%E5%9D%91">第 7 步：搞定标签&#x2F;分类页（新手必踩的坑）</a></li><li><a href="#%E7%AC%AC-8-%E6%AD%A5%E6%9C%AC%E5%9C%B0%E9%A2%84%E8%A7%88%E4%B8%8E%E6%8E%92%E9%94%99">第 8 步：本地预览与排错</a></li><li><a href="#%E7%AC%AC-9-%E6%AD%A5%E9%83%A8%E7%BD%B2%E4%B8%8A%E7%BA%BF%E5%88%B0-github-pages">第 9 步：部署上线到 GitHub Pages</a></li><li><a href="#%E7%AC%AC-10-%E6%AD%A5%E5%85%B6%E4%BB%96%E5%B9%B3%E5%8F%B0%E9%83%A8%E7%BD%B2cloudflare--vercel--netlify">第 10 步：其他平台部署（Cloudflare &#x2F; Vercel &#x2F; Netlify）</a></li><li><a href="#%E7%AC%AC-11-%E6%AD%A5github-actions-%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2">第 11 步：GitHub Actions 自动部署</a></li><li><a href="#%E7%AC%AC-12-%E6%AD%A5%E7%A7%BB%E5%8A%A8%E7%AB%AF%E9%80%82%E9%85%8D">第 12 步：移动端适配</a></li><li><a href="#%E7%AC%AC-13-%E6%AD%A5%E6%97%A5%E5%B8%B8%E7%BB%B4%E6%8A%A4%E5%86%99%E6%96%87%E7%AB%A0%E6%94%B9%E5%A3%81%E7%BA%B8%E6%8D%A2%E5%B0%81%E9%9D%A2">第 13 步：日常维护（写文章、改壁纸、换封面）</a></li><li><a href="#%E9%99%84%E5%BD%95-a%E5%91%BD%E4%BB%A4%E9%80%9F%E6%9F%A5">附录 A：命令速查</a></li><li><a href="#%E9%99%84%E5%BD%95-b%E8%A1%80%E6%B3%AA%E9%81%BF%E5%9D%91%E6%B8%85%E5%8D%95">附录 B：血泪避坑清单</a></li></ul><hr><h2 id="第-0-步：先搞懂-4-个概念"><a href="#第-0-步：先搞懂-4-个概念" class="headerlink" title="第 0 步：先搞懂 4 个概念"></a>第 0 步：先搞懂 4 个概念</h2><p>在动手之前，先花 5 分钟明白”我们到底在做什么”。用大白话解释：</p><table><thead><tr><th>概念</th><th>是什么</th><th>类比</th></tr></thead><tbody><tr><td><strong>静态博客</strong></td><td>所有网页在本地提前做好（纯 HTML&#x2F;CSS&#x2F;JS），别人访问时直接”发卡片”给他</td><td>印刷好的传单，别人来拿现成的</td></tr><tr><td><strong>Hexo</strong></td><td>一个”工厂”：输入 Markdown 文章 → 输出一堆 HTML 网页文件</td><td>你写中文 → 机器帮你翻译成网页</td></tr><tr><td><strong>GitHub Pages</strong></td><td>GitHub 提供的免费网页托管，绑定到你的仓库</td><td>免费租了一间房子放你的传单</td></tr><tr><td><strong>Markdown</strong></td><td>一种”加了记号”的纯文本，<code>#</code> 是标题、<code>**</code> 是加粗</td><td>记笔记时用 <code>#</code> 表示大标题</td></tr></tbody></table><p><strong>整体流程</strong>（全程就这一个循环）：</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">写文章(.md)  →  hexo generate 生成网页(public/)  →  推送到 gh-pages 分支  →  访问 https://你的用户名.github.io/仓库名/</span><br></pre></td></tr></table></figure><p>记住这条线，后面每一步都是围着它转的。</p><hr><h2 id="第-1-步：准备环境（15-分钟）"><a href="#第-1-步：准备环境（15-分钟）" class="headerlink" title="第 1 步：准备环境（15 分钟）"></a>第 1 步：准备环境（15 分钟）</h2><p>你需要 4 样东西，<strong>全部免费</strong>：</p><h3 id="1-1-安装-Node-js（博客工厂的动力源）"><a href="#1-1-安装-Node-js（博客工厂的动力源）" class="headerlink" title="1.1 安装 Node.js（博客工厂的动力源）"></a>1.1 安装 Node.js（博客工厂的动力源）</h3><ol><li>打开 <a href="https://nodejs.org/zh-cn">https://nodejs.org/zh-cn</a> ，下载 <strong>LTS 版</strong>（如 20.x）</li><li>一路 Next 装完（默认即可）</li><li>验证是否装好（打开 Git Bash，输入）：</li></ol><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">node -v      <span class="comment"># 应输出 v18 或更高，如 v20.11.0</span></span><br><span class="line">npm -v       <span class="comment"># 应输出 10 或更高</span></span><br></pre></td></tr></table></figure><h3 id="1-2-安装-Git（版本管理-推送到-GitHub）"><a href="#1-2-安装-Git（版本管理-推送到-GitHub）" class="headerlink" title="1.2 安装 Git（版本管理 + 推送到 GitHub）"></a>1.2 安装 Git（版本管理 + 推送到 GitHub）</h3><ol><li>打开 <a href="https://git-scm.com/download/win">https://git-scm.com/download/win</a> 下载安装</li><li>安装向导里”默认选择”即可（<strong>建议</strong>：默认编辑器选 Notepad++ 或 VS Code）</li><li>安装后右键桌面，会出现 <strong>“Git Bash Here”</strong> —— 后面所有命令都在这个窗口敲</li><li>验证：</li></ol><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git --version     <span class="comment"># 应输出 git version 2.x</span></span><br></pre></td></tr></table></figure><h3 id="1-3-注册-GitHub-账号"><a href="#1-3-注册-GitHub-账号" class="headerlink" title="1.3 注册 GitHub 账号"></a>1.3 注册 GitHub 账号</h3><ol><li>打开 <a href="https://github.com/">https://github.com</a> 注册（用户名决定你的博客地址）</li><li>登录后，新建一个空仓库：<ul><li>右上角 <strong>+ → New repository</strong></li><li>Repository name：<code>myblog</code>（随便起，英文小写）</li><li><strong>不要勾选</strong> “Add a README file”</li><li>点 <strong>Create repository</strong></li></ul></li></ol><h3 id="1-4-安装-VS-Code（写文章用的编辑器）"><a href="#1-4-安装-VS-Code（写文章用的编辑器）" class="headerlink" title="1.4 安装 VS Code（写文章用的编辑器）"></a>1.4 安装 VS Code（写文章用的编辑器）</h3><ol><li>打开 <a href="https://code.visualstudio.com/">https://code.visualstudio.com</a> 下载安装</li><li>装好后在任意文件夹右键 → <strong>“Open with Code”</strong></li></ol><blockquote><p>✅ 环境就绪标志：<code>node -v</code>、<code>git --version</code> 都有输出，GitHub 账号能登录。</p></blockquote><hr><h2 id="第-2-步：搭建-Hexo-骨架（10-分钟）"><a href="#第-2-步：搭建-Hexo-骨架（10-分钟）" class="headerlink" title="第 2 步：搭建 Hexo 骨架（10 分钟）"></a>第 2 步：搭建 Hexo 骨架（10 分钟）</h2><h3 id="2-1-安装-Hexo-命令行工具"><a href="#2-1-安装-Hexo-命令行工具" class="headerlink" title="2.1 安装 Hexo 命令行工具"></a>2.1 安装 Hexo 命令行工具</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">npm install -g hexo-cli</span><br><span class="line">hexo -v    <span class="comment"># 能看到版本号即成功</span></span><br></pre></td></tr></table></figure><h3 id="2-2-创建博客项目"><a href="#2-2-创建博客项目" class="headerlink" title="2.2 创建博客项目"></a>2.2 创建博客项目</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 找一个你喜欢的目录（比如 D:\），进入后执行：</span></span><br><span class="line"><span class="built_in">cd</span> /d</span><br><span class="line"></span><br><span class="line"><span class="comment"># 用 hexo 初始化（myblog 是文件夹名，和仓库名一致）</span></span><br><span class="line">hexo init myblog</span><br><span class="line"><span class="built_in">cd</span> myblog</span><br><span class="line"></span><br><span class="line"><span class="comment"># 安装依赖（把 package.json 里列的库都装好）</span></span><br><span class="line">npm install</span><br></pre></td></tr></table></figure><p>装完你会看到这样一个目录结构（<strong>先认识，不用背</strong>）：</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">myblog/</span><br><span class="line">├─ _config.yml        # ★ 站点主配置（改这里）</span><br><span class="line">├─ package.json       # 依赖清单</span><br><span class="line">├─ scaffolds/         # 模板（新文章会套用）</span><br><span class="line">├─ source/            # ★ 你写的东西都在这里</span><br><span class="line">│   ├─ _posts/        #   文章文件夹</span><br><span class="line">│   └─ img/           #   图片资源</span><br><span class="line">└─ themes/            # 主题文件夹</span><br><span class="line">    └─ landscape/     #   自带的默认主题（稍后换成 Sakura）</span><br></pre></td></tr></table></figure><h3 id="2-3-第一次预览"><a href="#2-3-第一次预览" class="headerlink" title="2.3 第一次预览"></a>2.3 第一次预览</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">npx hexo server</span><br><span class="line"><span class="comment"># 浏览器打开 http://localhost:4000</span></span><br></pre></td></tr></table></figure><p>能看到一个默认博客页面 &#x3D; 骨架搭好了。按 <code>Ctrl + C</code> 停掉。</p><blockquote><p>如果 <code>hexo init</code> 很慢或失败（网络问题），可以手动搭：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> myblog &amp;&amp; <span class="built_in">cd</span> myblog</span><br><span class="line">npm init -y</span><br><span class="line">npm install hexo hexo-server hexo-renderer-marked hexo-renderer-ejs hexo-renderer-stylus hexo-renderer-pug hexo-generator-index hexo-generator-archive hexo-generator-tag hexo-generator-category hexo-generator-feed hexo-generator-search hexo-tag-bili hexo-tag-fancybox_img</span><br></pre></td></tr></table></figure><p>然后自己建 <code>source/_posts/</code>、<code>scaffolds/</code>、<code>themes/</code> 文件夹即可，效果一样。</p></blockquote><hr><h2 id="第-3-步：安装-Sakura-主题"><a href="#第-3-步：安装-Sakura-主题" class="headerlink" title="第 3 步：安装 Sakura 主题"></a>第 3 步：安装 Sakura 主题</h2><p>Sakura 是本博客使用的二次元主题（原作者 honjun，MIT 协议）。</p><h3 id="3-1-下载主题到-themes-目录"><a href="#3-1-下载主题到-themes-目录" class="headerlink" title="3.1 下载主题到 themes 目录"></a>3.1 下载主题到 themes 目录</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">cd</span> myblog</span><br><span class="line">git <span class="built_in">clone</span> https://github.com/honjun/hexo-theme-sakura.git themes/sakura</span><br></pre></td></tr></table></figure><h3 id="3-2-启用主题"><a href="#3-2-启用主题" class="headerlink" title="3.2 启用主题"></a>3.2 启用主题</h3><p>编辑 <code>myblog/_config.yml</code>，把 <code>theme:</code> 改成：</p><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">theme:</span> <span class="string">sakura</span></span><br></pre></td></tr></table></figure><h3 id="3-3-认识”主题两套配置”（非常重要！）"><a href="#3-3-认识”主题两套配置”（非常重要！）" class="headerlink" title="3.3 认识”主题两套配置”（非常重要！）"></a>3.3 认识”主题两套配置”（非常重要！）</h3><p>Sakura 主题有<strong>两份配置文件</strong>，它们会<strong>自动合并</strong>：</p><table><thead><tr><th>文件</th><th>角色</th><th>什么时候改</th></tr></thead><tbody><tr><td><code>themes/sakura/_config.yml</code></td><td>主题<strong>默认</strong>配置</td><td>极少改（它是模板）</td></tr><tr><td><code>_config.sakura.yml</code>（自己建）</td><td>站点<strong>覆盖</strong>配置</td><td>★ 日常改这里</td></tr></tbody></table><blockquote><p>⚠️ <strong>大坑预告</strong>：两份配置的<strong>同名数组</strong>（比如 <code>bg:</code>、<code>menus:</code>）会<strong>拼接</strong>而不是覆盖！<br>例如两边都写 <code>bg:</code>，最终会得到 16 张背景图，前 8 张还可能是失效的。<br><strong>规则：数组字段只在一处写</strong>（本项目统一写在 <code>themes/sakura/_config.yml</code>）。</p></blockquote><p>新建 <code>myblog/_config.sakura.yml</code>，先放最小内容：</p><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 站点名与头像</span></span><br><span class="line"><span class="attr">siteName:</span> <span class="string">我的博客</span></span><br><span class="line"><span class="attr">favicon:</span> <span class="string">/img/favicon.png</span></span><br><span class="line"><span class="attr">avatar:</span> <span class="string">/img/favicon.png</span></span><br></pre></td></tr></table></figure><hr><h2 id="第-4-步：站点配置-config-yml"><a href="#第-4-步：站点配置-config-yml" class="headerlink" title="第 4 步：站点配置 _config.yml"></a>第 4 步：站点配置 <code>_config.yml</code></h2><p>打开 <code>myblog/_config.yml</code>，重点改这几处：</p><h3 id="4-1-站点信息"><a href="#4-1-站点信息" class="headerlink" title="4.1 站点信息"></a>4.1 站点信息</h3><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">title:</span> <span class="string">我的技术博客</span>          <span class="comment"># 浏览器标签栏标题</span></span><br><span class="line"><span class="attr">subtitle:</span> <span class="string">&#x27;记录技术与思考&#x27;</span>   <span class="comment"># 副标题</span></span><br><span class="line"><span class="attr">description:</span> <span class="string">&#x27;个人技术博客&#x27;</span>  <span class="comment"># SEO 描述</span></span><br><span class="line"><span class="attr">author:</span> <span class="string">Sky</span>                 <span class="comment"># 作者名</span></span><br><span class="line"><span class="attr">language:</span> <span class="string">zh-CN</span>             <span class="comment"># 语言</span></span><br><span class="line"><span class="attr">timezone:</span> <span class="string">Asia/Shanghai</span>     <span class="comment"># 时区</span></span><br></pre></td></tr></table></figure><h3 id="4-2-URL-和-root（★-子目录部署的关键）"><a href="#4-2-URL-和-root（★-子目录部署的关键）" class="headerlink" title="4.2 URL 和 root（★ 子目录部署的关键）"></a>4.2 URL 和 root（★ 子目录部署的关键）</h3><p>如果你要把博客放在 <code>https://用户名.github.io/仓库名/</code>（项目页），<strong>必须</strong>：</p><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">url:</span> <span class="string">https://你的用户名.github.io/myblog</span></span><br><span class="line"><span class="attr">root:</span> <span class="string">/myblog/</span>              <span class="comment"># ★ 末尾斜杠不能少</span></span><br></pre></td></tr></table></figure><p>如果你要放在 <code>https://用户名.github.io/</code>（个人主页），改成：</p><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">url:</span> <span class="string">https://你的用户名.github.io</span></span><br><span class="line"><span class="attr">root:</span> <span class="string">/</span></span><br></pre></td></tr></table></figure><blockquote><p><code>root</code> 决定所有资源路径的前缀。<strong>改错了，图片&#x2F;样式全 404</strong>。</p></blockquote><h3 id="4-3-常用字段对照表"><a href="#4-3-常用字段对照表" class="headerlink" title="4.3 常用字段对照表"></a>4.3 常用字段对照表</h3><table><thead><tr><th>字段</th><th>作用</th></tr></thead><tbody><tr><td><code>permalink</code></td><td>文章网址格式，如 <code>:year/:month/:day/:title/</code></td></tr><tr><td><code>theme</code></td><td>主题名（第 3 步已改）</td></tr><tr><td><code>deploy</code></td><td>部署配置（见第 9 步，<strong>建议留空不用</strong>）</td></tr><tr><td><code>index_generator.per_page</code></td><td>首页每页文章数</td></tr></tbody></table><hr><h2 id="第-5-步：主题配置-config-sakura-yml"><a href="#第-5-步：主题配置-config-sakura-yml" class="headerlink" title="第 5 步：主题配置 _config.sakura.yml"></a>第 5 步：主题配置 <code>_config.sakura.yml</code></h2><p>把 <code>_config.sakura.yml</code> 补全（这是”主题如何设置”的核心）：</p><h3 id="5-1-菜单"><a href="#5-1-菜单" class="headerlink" title="5.1 菜单"></a>5.1 菜单</h3><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">menus:</span></span><br><span class="line">  <span class="string">首页:</span>   &#123; <span class="attr">path:</span> <span class="string">/</span>, <span class="attr">fa:</span> <span class="string">fa-home</span> &#125;</span><br><span class="line">  <span class="string">归档:</span>   &#123; <span class="attr">path:</span> <span class="string">/archives/</span>, <span class="attr">fa:</span> <span class="string">fa-archive</span> &#125;</span><br><span class="line">  <span class="string">标签:</span>   &#123; <span class="attr">path:</span> <span class="string">/tags/</span>, <span class="attr">fa:</span> <span class="string">fa-tags</span> &#125;</span><br><span class="line">  <span class="string">分类:</span>   &#123; <span class="attr">path:</span> <span class="string">/categories/</span>, <span class="attr">fa:</span> <span class="string">fa-folder-open</span> &#125;</span><br><span class="line">  <span class="string">留言板:</span> &#123; <span class="attr">path:</span> <span class="string">/comment/</span>, <span class="attr">fa:</span> <span class="string">fa-pencil-square-o</span> &#125;</span><br><span class="line">  <span class="string">友人帐:</span> &#123; <span class="attr">path:</span> <span class="string">/links/</span>, <span class="attr">fa:</span> <span class="string">fa-link</span> &#125;</span><br><span class="line">  <span class="string">关于:</span>   &#123; <span class="attr">path:</span> <span class="string">/about/</span>, <span class="attr">fa:</span> <span class="string">fa-heart</span> &#125;</span><br></pre></td></tr></table></figure><blockquote><p><code>fa:</code> 是 Font Awesome 图标名，想换图标去 <a href="https://fontawesome.com/v4/icons/">https://fontawesome.com/v4/icons/</a> 查。</p></blockquote><h3 id="5-2-头像与-favicon"><a href="#5-2-头像与-favicon" class="headerlink" title="5.2 头像与 favicon"></a>5.2 头像与 favicon</h3><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">favicon:</span> <span class="string">/img/favicon.png</span></span><br><span class="line"><span class="attr">avatar:</span> <span class="string">/img/favicon.png</span></span><br></pre></td></tr></table></figure><p>把你的头像图片放到 <code>source/img/favicon.png</code>（没有 <code>img</code> 文件夹就新建）。</p><h3 id="5-3-壁纸（首页背景图）"><a href="#5-3-壁纸（首页背景图）" class="headerlink" title="5.3 壁纸（首页背景图）"></a>5.3 壁纸（首页背景图）</h3><p><strong>做法一（推荐，本项目采用）</strong>：直接改 <code>themes/sakura/_config.yml</code>：</p><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">bg:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">/img/wallpaper/1.webp</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">/img/wallpaper/2.webp</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">/img/wallpaper/3.webp</span></span><br><span class="line">  <span class="comment"># ...想加几张加几行</span></span><br><span class="line"><span class="attr">bgclass:</span> <span class="string">&quot;&quot;</span>      <span class="comment"># 空=原图  filter-dim=加阴影  filter-grid=横条纹  filter-dot=点点</span></span><br></pre></td></tr></table></figure><p>把图片放到 <code>source/img/wallpaper/</code> 下（建议 <code>.webp</code> 格式，体积小加载快）。</p><p><strong>⚠️ 绝不要</strong>同时在 <code>_config.sakura.yml</code> 里再写 <code>bg:</code> —— 会变成 16 张图（数组拼接的坑）。</p><h3 id="5-4-背景音乐（APlayer）"><a href="#5-4-背景音乐（APlayer）" class="headerlink" title="5.4 背景音乐（APlayer）"></a>5.4 背景音乐（APlayer）</h3><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">aplayer:</span></span><br><span class="line">  <span class="attr">id:</span> <span class="number">19723756</span>          <span class="comment"># 网易云歌单 ID（这个是&quot;飙升榜&quot;）</span></span><br><span class="line">  <span class="attr">server:</span> <span class="string">netease</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">playlist</span></span><br><span class="line">  <span class="attr">fixed:</span> <span class="literal">true</span>           <span class="comment"># 固定显示在左下角</span></span><br><span class="line">  <span class="attr">autoplay:</span> <span class="literal">false</span>       <span class="comment"># 不要自动播放（浏览器会拦）</span></span><br><span class="line">  <span class="attr">loop:</span> <span class="string">all</span></span><br><span class="line">  <span class="attr">order:</span> <span class="string">random</span></span><br><span class="line">  <span class="attr">preload:</span> <span class="string">auto</span></span><br><span class="line">  <span class="attr">volume:</span> <span class="number">0.7</span></span><br></pre></td></tr></table></figure><p>想换歌单：打开网易云音乐网页版 → 找到一个歌单 → 网址里 <code>/playlist?id=xxxxxx</code> 的 <code>xxxxxx</code> 就是 ID。</p><blockquote><p>⚠️ 网易云外链大量失效，播放器会”卡在”放不了的歌上。<br>本项目已把播放器改成<strong>坏链自动跳下一首</strong>（改的是 <code>themes/sakura/layout/_partial/aplayer.ejs</code>）。<br>想要最稳：把自己 mp3 放进 <code>source/music/</code>，改成本地播放列表。</p></blockquote><h3 id="5-5-社交链接"><a href="#5-5-社交链接" class="headerlink" title="5.5 社交链接"></a>5.5 社交链接</h3><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="comment"># PC 端（左下角）</span></span><br><span class="line"><span class="attr">social:</span></span><br><span class="line">  <span class="attr">github:</span> &#123; <span class="attr">url:</span> <span class="string">https://github.com/你的用户名</span>, <span class="attr">img:</span> <span class="string">/img/social/github.png</span> &#125;</span><br><span class="line">  <span class="attr">email:</span>  &#123; <span class="attr">url:</span> <span class="string">mailto:you@example.com</span>, <span class="attr">img:</span> <span class="string">/img/social/email.svg</span> &#125;</span><br><span class="line"></span><br><span class="line"><span class="comment"># 移动端（汉堡菜单里）</span></span><br><span class="line"><span class="attr">msocial:</span></span><br><span class="line">  <span class="attr">github:</span> &#123; <span class="attr">url:</span> <span class="string">https://github.com/你的用户名</span>, <span class="attr">fa:</span> <span class="string">fa-github</span>, <span class="attr">color:</span> <span class="number">333</span> &#125;</span><br><span class="line">  <span class="attr">email:</span>  &#123; <span class="attr">url:</span> <span class="string">mailto:you@example.com</span>, <span class="attr">fa:</span> <span class="string">fa-envelope</span>, <span class="attr">color:</span> <span class="string">dd4b39</span> &#125;</span><br></pre></td></tr></table></figure><blockquote><p><code>social</code> 的 <code>img:</code> 需要准备图标图片放进 <code>source/img/social/</code>；<code>msocial</code> 用字体图标不需要图片，更省事。</p></blockquote><h3 id="5-6-首页-START-DASH-三张卡片"><a href="#5-6-首页-START-DASH-三张卡片" class="headerlink" title="5.6 首页 START:DASH 三张卡片"></a>5.6 首页 START:DASH 三张卡片</h3><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">startdash:</span></span><br><span class="line">  <span class="bullet">-</span> &#123;<span class="attr">url:</span> <span class="string">/about/</span>,   <span class="attr">title:</span> <span class="string">关于</span>, <span class="attr">desc:</span> <span class="string">了解本站</span>, <span class="attr">img:</span> <span class="string">/img/wallpaper/1.webp</span>&#125;</span><br><span class="line">  <span class="bullet">-</span> &#123;<span class="attr">url:</span> <span class="string">/archives/</span>, <span class="attr">title:</span> <span class="string">归档</span>, <span class="attr">desc:</span> <span class="string">全部文章</span>, <span class="attr">img:</span> <span class="string">/img/wallpaper/2.webp</span>&#125;</span><br><span class="line">  <span class="bullet">-</span> &#123;<span class="attr">url:</span> <span class="string">/tags/</span>,    <span class="attr">title:</span> <span class="string">标签</span>, <span class="attr">desc:</span> <span class="string">按标签浏览</span>, <span class="attr">img:</span> <span class="string">/img/wallpaper/3.webp</span>&#125;</span><br></pre></td></tr></table></figure><hr><h2 id="第-6-步：写第一篇文章"><a href="#第-6-步：写第一篇文章" class="headerlink" title="第 6 步：写第一篇文章"></a>第 6 步：写第一篇文章</h2><h3 id="6-1-创建"><a href="#6-1-创建" class="headerlink" title="6.1 创建"></a>6.1 创建</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">cd</span> myblog</span><br><span class="line">npx hexo new <span class="string">&quot;我的第一篇博客&quot;</span></span><br></pre></td></tr></table></figure><p>生成的文件：<code>source/_posts/我的第一篇博客.md</code>。用 VS Code 打开，front-matter（<code>---</code> 之间的部分）写成：</p><figure class="highlight markdown"><table><tr><td class="code"><pre><span class="line">---</span><br><span class="line">title: 我的第一篇博客</span><br><span class="line">date: 2026-08-27 18:00:00</span><br><span class="line">updated: 2026-08-27 18:00:00</span><br><span class="line">tags:</span><br><span class="line"><span class="bullet">  -</span> 生活</span><br><span class="line">categories:</span><br><span class="line"><span class="bullet">  -</span> 生活</span><br><span class="line">photos:</span><br><span class="line"><span class="section">  - /img/cover/cover1.jpg</span></span><br><span class="line"><span class="section">---</span></span><br></pre></td></tr></table></figure><p><code>---</code> 下面就是正文，用 Markdown 语法写：</p><figure class="highlight markdown"><table><tr><td class="code"><pre><span class="line"><span class="section"># 一级标题</span></span><br><span class="line"><span class="section">## 二级标题</span></span><br><span class="line"></span><br><span class="line"><span class="strong">**加粗**</span>、<span class="emphasis">*斜体*</span>、<span class="code">`行内代码`</span></span><br><span class="line"></span><br><span class="line"><span class="bullet">-</span> 列表项 1</span><br><span class="line"><span class="bullet">-</span> 列表项 2</span><br></pre></td></tr></table></figure><p>正文里需要代码块时，单独用三个反引号包裹即可（不要和上面的示例嵌套）：</p><figure class="highlight js"><table><tr><td class="code"><pre><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&quot;代码块&quot;</span>);</span><br></pre></td></tr></table></figure><h3 id="6-2-Front-matter-字段速查"><a href="#6-2-Front-matter-字段速查" class="headerlink" title="6.2 Front-matter 字段速查"></a>6.2 Front-matter 字段速查</h3><p><code>---</code> 之间的内容叫 <strong>front-matter</strong>（文章”身份证”）：</p><table><thead><tr><th>字段</th><th>必填</th><th>说明</th><th>示例</th></tr></thead><tbody><tr><td><code>title</code></td><td>✅</td><td>标题</td><td><code>title: 我的博客</code></td></tr><tr><td><code>date</code></td><td>✅</td><td>发布时间</td><td><code>date: 2026-08-27 18:00:00</code></td></tr><tr><td><code>updated</code></td><td>–</td><td>更新时间</td><td><code>updated: 2026-08-28 09:00:00</code></td></tr><tr><td><code>tags</code></td><td>–</td><td>标签（可多个）</td><td><code>tags: [技术, github]</code></td></tr><tr><td><code>categories</code></td><td>–</td><td>分类（可多个）</td><td><code>categories: [技术]</code></td></tr><tr><td><code>photos</code></td><td>–</td><td><strong>封面图</strong>（数组，第一张是封面）</td><td><code>photos: [/img/cover/a.jpg]</code></td></tr><tr><td><code>description</code></td><td>–</td><td>列表页摘要</td><td><code>description: 一句话介绍</code></td></tr><tr><td><code>mathjax</code></td><td>–</td><td>数学公式</td><td><code>mathjax: true</code></td></tr></tbody></table><h3 id="6-3-封面图怎么设置？（重点）"><a href="#6-3-封面图怎么设置？（重点）" class="headerlink" title="6.3 封面图怎么设置？（重点）"></a>6.3 封面图怎么设置？（重点）</h3><p>Sakura 主题的封面字段是 <strong><code>photos</code> 数组</strong>（<strong>不是</strong> <code>cover</code>！用 <code>cover</code> 不生效）：</p><figure class="highlight markdown"><table><tr><td class="code"><pre><span class="line">photos:</span><br><span class="line"><span class="bullet">  -</span> /img/cover/my-cover.jpg</span><br></pre></td></tr></table></figure><p>步骤：</p><ol><li>建目录 <code>source/img/cover/</code>，把图放进去</li><li>front-matter 写 <code>photos: [/img/cover/my-cover.jpg]</code></li><li>重新生成 → 文章页顶部就有封面大图，列表页缩略图也用它</li></ol><blockquote><p>以 <code>/</code> 开头的路径 &#x3D; “资源根”，Hexo 会自动加上 <code>root</code>（如 <code>/myblog/</code>），最终访问<br><code>https://用户名.github.io/myblog/img/cover/my-cover.jpg</code>。</p></blockquote><h3 id="6-4-正文里插图片"><a href="#6-4-正文里插图片" class="headerlink" title="6.4 正文里插图片"></a>6.4 正文里插图片</h3><p>把图片放 <code>source/img/post/</code>，正文里写：</p><figure class="highlight markdown"><table><tr><td class="code"><pre><span class="line">![<span class="string">图片说明</span>](<span class="link">/img/post/xxx.png</span>)</span><br></pre></td></tr></table></figure><h3 id="6-5-标签和分类有什么用"><a href="#6-5-标签和分类有什么用" class="headerlink" title="6.5 标签和分类有什么用"></a>6.5 标签和分类有什么用</h3><ul><li><strong>标签</strong>：一篇文章可以贴多个，如”教程””Hexo””GitHub”</li><li><strong>分类</strong>：类似文件夹，一篇最好只归一个</li></ul><p>它们会自动生成聚合页（如 <code>/tags/GitHub/</code> 列出所有 GitHub 标签文章），<br>前提是你按<strong>第 7 步</strong>建了标签&#x2F;分类根页。</p><hr><h2 id="第-7-步：搞定标签-分类页（新手必踩的坑）"><a href="#第-7-步：搞定标签-分类页（新手必踩的坑）" class="headerlink" title="第 7 步：搞定标签&#x2F;分类页（新手必踩的坑）"></a>第 7 步：搞定标签&#x2F;分类页（新手必踩的坑）</h2><p><strong>症状</strong>：菜单点”标签”&#x2F;“分类”，页面 404 或空白。</p><p><strong>原因</strong>：Hexo 会自动生成”单个标签页”（<code>/tags/GitHub/</code>），<br>但<strong>不会自动生成”标签总览页”</strong>（<code>/tags/</code>）——除非你手动建了页面文件。</p><p><strong>解决</strong>：在 <code>source/</code> 下新建两个文件：</p><p><code>source/tags/index.md</code>：</p><figure class="highlight markdown"><table><tr><td class="code"><pre><span class="line">---</span><br><span class="line">title: 标签</span><br><span class="line">layout: tag          # ★ 必须是单数 tag（不是 type: tags！）</span><br><span class="line"><span class="section">description: 按标签浏览所有文章</span></span><br><span class="line"><span class="section">---</span></span><br></pre></td></tr></table></figure><p><code>source/categories/index.md</code>：</p><figure class="highlight markdown"><table><tr><td class="code"><pre><span class="line">---</span><br><span class="line">title: 分类</span><br><span class="line">layout: category     # ★ 必须是单数 category</span><br><span class="line"><span class="section">description: 按分类浏览所有文章</span></span><br><span class="line"><span class="section">---</span></span><br></pre></td></tr></table></figure><blockquote><p><strong>为什么不是 <code>type: tags</code>？</strong> Sakura 主题只提供了 <code>tag.ejs</code>（单数）这一个模板。<br><code>type: tags</code> 会让 Hexo 去找 <code>tags.ejs</code>（复数），找不到就退回通用模板，<br>页面变成”空壳”。用 <code>layout: tag</code> 才能命中正确模板。</p></blockquote><p><strong>进一步美化</strong>（可选）：Sakura 自带的 <code>tag.ejs</code> 在”总览页”上只显示最新文章，不显示标签列表。<br>本项目改成了”总览页显示全部标签+文章数”（<code>themes/sakura/layout/tag.ejs</code> 里判断<br><code>!page.tag</code> 时渲染 <code>site.tags</code> 列表），单标签页行为不变。想抄的看本项目源码。</p><hr><h2 id="第-8-步：本地预览与排错"><a href="#第-8-步：本地预览与排错" class="headerlink" title="第 8 步：本地预览与排错"></a>第 8 步：本地预览与排错</h2><h3 id="8-1-常用命令"><a href="#8-1-常用命令" class="headerlink" title="8.1 常用命令"></a>8.1 常用命令</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">npx hexo server        <span class="comment"># 启动本地预览 http://localhost:4000</span></span><br><span class="line">npx hexo generate      <span class="comment"># 生成静态文件到 public/</span></span><br><span class="line">npx hexo clean         <span class="comment"># 清缓存（改配置不生效时用）</span></span><br></pre></td></tr></table></figure><h3 id="8-2-常见报错速查"><a href="#8-2-常见报错速查" class="headerlink" title="8.2 常见报错速查"></a>8.2 常见报错速查</h3><table><thead><tr><th>报错</th><th>原因</th><th>解决</th></tr></thead><tbody><tr><td><code>Port 4000 is already in use</code></td><td>端口被占</td><td><code>npx hexo server -p 4001</code></td></tr><tr><td>图片&#x2F;样式 404</td><td><code>root</code> 配置错</td><td>检查 <code>_config.yml</code> 的 <code>root:</code></td></tr><tr><td>修改后页面没变</td><td>缓存</td><td><code>npx hexo clean &amp;&amp; npx hexo generate</code></td></tr><tr><td>壁纸显示 CDN 默认图</td><td>数组 concat</td><td>见 §5.3，<code>bg:</code> 只写一处</td></tr><tr><td>标签页空白</td><td>没建 index.md</td><td>见第 7 步</td></tr></tbody></table><hr><h2 id="第-9-步：部署上线到-GitHub-Pages"><a href="#第-9-步：部署上线到-GitHub-Pages" class="headerlink" title="第 9 步：部署上线到 GitHub Pages"></a>第 9 步：部署上线到 GitHub Pages</h2><p>这是最容易”翻车”的一步，按下面的<strong>推荐姿势</strong>做，稳。</p><h3 id="9-1-把源码推到-GitHub"><a href="#9-1-把源码推到-GitHub" class="headerlink" title="9.1 把源码推到 GitHub"></a>9.1 把源码推到 GitHub</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">cd</span> myblog</span><br><span class="line"></span><br><span class="line"><span class="comment"># 初始化 git（如果 hexo init 没自动做）</span></span><br><span class="line">git init</span><br><span class="line"></span><br><span class="line"><span class="comment"># 关联你的远程仓库</span></span><br><span class="line">git remote add origin https://github.com/你的用户名/myblog.git</span><br><span class="line"></span><br><span class="line"><span class="comment"># 第一次提交</span></span><br><span class="line">git add .</span><br><span class="line">git commit -m <span class="string">&quot;init: hexo + sakura blog&quot;</span></span><br><span class="line">git push -u origin main</span><br></pre></td></tr></table></figure><blockquote><p>如果你仓库默认分支叫 <code>master</code>，就把 <code>main</code> 换成 <code>master</code>。<br>推送要账号密码&#x2F;Token：GitHub 现在要求用 <strong>Personal Access Token</strong>（Settings → Developer settings → Personal access tokens），或先跑 <code>gh auth login</code> 登录 CLI。</p></blockquote><h3 id="9-2-在-GitHub-上启用-Pages"><a href="#9-2-在-GitHub-上启用-Pages" class="headerlink" title="9.2 在 GitHub 上启用 Pages"></a>9.2 在 GitHub 上启用 Pages</h3><p>仓库页面 → <strong>Settings</strong> → <strong>Pages</strong>：</p><ul><li><strong>Source</strong> 选 <strong>Deploy from a branch</strong></li><li><strong>Branch</strong> 选 <strong><code>gh-pages</code></strong>，目录 <code>/ (root)</code></li><li>点 <strong>Save</strong></li></ul><blockquote><p>注意：这里选的是 <code>gh-pages</code>（产物分支），不是 <code>main</code>（源码分支）！</p></blockquote><h3 id="9-3-部署姿势一：独立目录法（★-推荐，本项目用这个）"><a href="#9-3-部署姿势一：独立目录法（★-推荐，本项目用这个）" class="headerlink" title="9.3 部署姿势一：独立目录法（★ 推荐，本项目用这个）"></a>9.3 部署姿势一：独立目录法（★ 推荐，本项目用这个）</h3><p>原理：把构建产物复制到一个<strong>独立的 git 仓库目录</strong>，只往 <code>gh-pages</code> 分支推。</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 1. 生成产物</span></span><br><span class="line"><span class="built_in">cd</span> myblog</span><br><span class="line">npx hexo clean &amp;&amp; npx hexo generate</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 准备一个&quot;独立部署目录&quot;（第一次做）</span></span><br><span class="line"><span class="built_in">mkdir</span> /d/myblog_deploy</span><br><span class="line"><span class="built_in">cd</span> /d/myblog_deploy</span><br><span class="line">git init</span><br><span class="line">git remote add origin https://github.com/你的用户名/myblog.git</span><br><span class="line"><span class="comment"># 先随便提交一个空提交，让分支存在</span></span><br><span class="line">git commit --allow-empty -m <span class="string">&quot;init deploy branch&quot;</span></span><br><span class="line">git push -u origin HEAD:gh-pages</span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 每次发布：清空 → 复制 → 提交 → 推送</span></span><br><span class="line"><span class="built_in">rm</span> -rf /d/myblog_deploy/*</span><br><span class="line"><span class="built_in">cp</span> -r /c/你的路径/myblog/public/* /d/myblog_deploy/</span><br><span class="line"><span class="built_in">touch</span> /d/myblog_deploy/.nojekyll          <span class="comment"># ★ 必须有！见下方</span></span><br><span class="line"><span class="built_in">cd</span> /d/myblog_deploy</span><br><span class="line">git add -A</span><br><span class="line">git -c http.version=HTTP/1.1 commit -m <span class="string">&quot;Site updated: <span class="subst">$(date)</span>&quot;</span></span><br><span class="line">git -c http.version=HTTP/1.1 push -f origin HEAD:gh-pages</span><br></pre></td></tr></table></figure><blockquote><p><strong>为什么不能直接 <code>npx hexo d</code>？</strong><br>当你把 <code>myblog</code> 文件夹本身变成 git 仓库后，<code>hexo-deployer-git</code> 的 <code>.deploy_git</code><br>会”蹭用”根目录的 <code>.git</code>，结果 <code>git add -A</code> 把<strong>整个源码</strong>推上了 <code>gh-pages</code>，<br>GitHub Pages 找不到根 <code>index.html</code> → 404。这是本项目踩过的真事故，详见附录 B。</p></blockquote><blockquote><p><strong><code>.nojekyll</code> 是什么？</strong> 一个空文件，告诉 GitHub Pages”不要用 Jekyll 重新构建，<br>我给你的就是最终网页”。没有它，Jekyll 可能静默失败并<strong>沿用旧版</strong>，<br>表现为”明明推了新代码，线上还是老样子”。</p></blockquote><h3 id="9-4-部署姿势二：GitHub-Actions-自动部署（推荐长期用）"><a href="#9-4-部署姿势二：GitHub-Actions-自动部署（推荐长期用）" class="headerlink" title="9.4 部署姿势二：GitHub Actions 自动部署（推荐长期用）"></a>9.4 部署姿势二：GitHub Actions 自动部署（推荐长期用）</h3><p>见<strong>第 11 步</strong>，配一次之后每次 <code>git push</code> 就自动发布，本地不用装 Node。</p><h3 id="9-5-首次访问"><a href="#9-5-首次访问" class="headerlink" title="9.5 首次访问"></a>9.5 首次访问</h3><p>部署成功后等 1~2 分钟（GitHub Pages 构建需要时间），打开：</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">https://你的用户名.github.io/myblog/</span><br></pre></td></tr></table></figure><p>看到自己的博客上线了 🎉 这就是全程的目标。</p><hr><h2 id="第-10-步：其他平台部署（Cloudflare-Vercel-Netlify）"><a href="#第-10-步：其他平台部署（Cloudflare-Vercel-Netlify）" class="headerlink" title="第 10 步：其他平台部署（Cloudflare &#x2F; Vercel &#x2F; Netlify）"></a>第 10 步：其他平台部署（Cloudflare &#x2F; Vercel &#x2F; Netlify）</h2><p>这三个平台原理一样：<strong>连接你的 GitHub 仓库 → 填构建命令 → 平台帮你跑 → 发布</strong>。<br>共同配置：</p><table><thead><tr><th>配置项</th><th>值</th></tr></thead><tbody><tr><td>构建命令（Build command）</td><td><code>npm run build</code>（package.json 里已定义 <code>hexo generate</code>）</td></tr><tr><td>输出目录（Output directory）</td><td><code>public</code></td></tr><tr><td>Node 版本</td><td>20（在环境变量里设 <code>NODE_VERSION=20</code>）</td></tr><tr><td>环境变量</td><td><code>PUBLIC_URL=https://你的域名</code></td></tr></tbody></table><blockquote><p>注意：在这些平台部署时，<code>_config.yml</code> 的 <code>url</code>&#x2F;<code>root</code> 要按平台给的域名改，<br>比如 Vercel 是 <code>https://xxx.vercel.app</code>，<code>root</code> 通常是 <code>/</code>。</p></blockquote><h3 id="10-1-Cloudflare-Pages"><a href="#10-1-Cloudflare-Pages" class="headerlink" title="10.1 Cloudflare Pages"></a>10.1 Cloudflare Pages</h3><ol><li><a href="https://dash.cloudflare.com/">https://dash.cloudflare.com</a> → <strong>Pages</strong> → <strong>Create a project</strong> → <strong>Connect to Git</strong></li><li>选仓库 → Framework preset 选 <strong>Hexo</strong></li><li>填上表的 Build command &#x2F; Output directory</li><li>Save and Deploy，等 1~2 分钟</li><li>自定义域名：项目 → Custom domains → 填域名，Cloudflare 自动配 CNAME + HTTPS</li></ol><h3 id="10-2-Vercel"><a href="#10-2-Vercel" class="headerlink" title="10.2 Vercel"></a>10.2 Vercel</h3><ol><li><a href="https://vercel.com/">https://vercel.com</a> → <strong>New Project</strong> → <strong>Import Git Repository</strong> → 选仓库</li><li>Framework Preset 选 <strong>Other</strong>，Build Command 填 <code>npm run build</code>，Output 填 <code>public</code></li><li><strong>Deploy</strong>，30 秒拿到 <code>xxx.vercel.app</code></li><li>域名：Project → Settings → Domains</li></ol><h3 id="10-3-Netlify"><a href="#10-3-Netlify" class="headerlink" title="10.3 Netlify"></a>10.3 Netlify</h3><ol><li><a href="https://app.netlify.com/">https://app.netlify.com</a> → <strong>Add new site</strong> → <strong>Import an existing project</strong> → 选 GitHub 仓库</li><li>Build command: <code>npm run build</code>；Publish directory: <code>public</code></li><li><strong>Deploy site</strong></li><li>域名：Site settings → Domain management → Add custom domain</li></ol><hr><h2 id="第-11-步：GitHub-Actions-自动部署"><a href="#第-11-步：GitHub-Actions-自动部署" class="headerlink" title="第 11 步：GitHub Actions 自动部署"></a>第 11 步：GitHub Actions 自动部署</h2><p>配好后，<strong>以后只做一件事</strong>：改完文章 <code>git push</code>，剩下全自动。</p><h3 id="11-1-创建工作流文件"><a href="#11-1-创建工作流文件" class="headerlink" title="11.1 创建工作流文件"></a>11.1 创建工作流文件</h3><p>在 <code>myblog/.github/workflows/deploy.yml</code> 新建：</p><figure class="highlight yaml"><table><tr><td class="code"><pre><span class="line"><span class="attr">name:</span> <span class="string">Deploy</span> <span class="string">Hexo</span> <span class="string">to</span> <span class="string">gh-pages</span></span><br><span class="line"></span><br><span class="line"><span class="attr">on:</span></span><br><span class="line">  <span class="attr">push:</span></span><br><span class="line">    <span class="attr">branches:</span> [<span class="string">main</span>]        <span class="comment"># 推 main 时触发</span></span><br><span class="line">  <span class="attr">workflow_dispatch:</span>        <span class="comment"># 支持手动触发</span></span><br><span class="line"></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">build:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">uses:</span> <span class="string">actions/checkout@v4</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Setup</span> <span class="string">Node.js</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/setup-node@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">node-version:</span> <span class="string">&#x27;20&#x27;</span></span><br><span class="line">          <span class="attr">cache:</span> <span class="string">&#x27;npm&#x27;</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Install</span> <span class="string">dependencies</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">npm</span> <span class="string">ci</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Build</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">npx</span> <span class="string">hexo</span> <span class="string">generate</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Deploy</span> <span class="string">to</span> <span class="string">gh-pages</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">peaceiris/actions-gh-pages@v4</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">github_token:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.GITHUB_TOKEN</span> <span class="string">&#125;&#125;</span>   <span class="comment"># 自动生成，无需手动配</span></span><br><span class="line">          <span class="attr">publish_dir:</span> <span class="string">./public</span></span><br><span class="line">          <span class="attr">publish_branch:</span> <span class="string">gh-pages</span></span><br><span class="line">          <span class="attr">force_orphan:</span> <span class="literal">true</span></span><br><span class="line">          <span class="attr">user_name:</span> <span class="string">&#x27;github-actions[bot]&#x27;</span></span><br><span class="line">          <span class="attr">user_email:</span> <span class="string">&#x27;github-actions[bot]@users.noreply.github.com&#x27;</span></span><br></pre></td></tr></table></figure><h3 id="11-2-提交并验证"><a href="#11-2-提交并验证" class="headerlink" title="11.2 提交并验证"></a>11.2 提交并验证</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git add .github/workflows/deploy.yml</span><br><span class="line">git commit -m <span class="string">&quot;ci: 自动构建并发布到 gh-pages&quot;</span></span><br><span class="line">git push origin main</span><br></pre></td></tr></table></figure><p>去仓库 <strong>Actions</strong> 标签页能看到工作流在跑。绿勾 &#x3D; 成功，之后每次 push 都自动发布。</p><hr><h2 id="第-12-步：移动端适配"><a href="#第-12-步：移动端适配" class="headerlink" title="第 12 步：移动端适配"></a>第 12 步：移动端适配</h2><h3 id="12-1-主题自带能力"><a href="#12-1-主题自带能力" class="headerlink" title="12.1 主题自带能力"></a>12.1 主题自带能力</h3><p>Sakura 自带响应式：手机访问自动隐藏侧栏、汉堡菜单、压缩字体。一般不用动。</p><h3 id="12-2-本项目做过的微调（可参考）"><a href="#12-2-本项目做过的微调（可参考）" class="headerlink" title="12.2 本项目做过的微调（可参考）"></a>12.2 本项目做过的微调（可参考）</h3><p>在 <code>themes/sakura/source/css/style.css</code> 追加：</p><figure class="highlight css"><table><tr><td class="code"><pre><span class="line"><span class="comment">/* 菜单强制一行，防止换行挤到第二行 */</span></span><br><span class="line"><span class="selector-class">.site-top</span> <span class="selector-class">.lower</span> <span class="selector-tag">nav</span><span class="selector-class">.navbar</span> <span class="selector-tag">ul</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: flex;</span><br><span class="line">  <span class="attribute">flex-wrap</span>: nowrap;</span><br><span class="line">  <span class="attribute">white-space</span>: nowrap;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.site-top</span> <span class="selector-class">.lower</span> <span class="selector-tag">nav</span><span class="selector-class">.navbar</span> <span class="selector-tag">ul</span> <span class="selector-tag">li</span> &#123;</span><br><span class="line">  <span class="attribute">float</span>: none;</span><br><span class="line">  <span class="attribute">flex-shrink</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">white-space</span>: nowrap;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">0</span> <span class="number">15px</span>;   <span class="comment">/* 间距调大，触屏更好点 */</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="12-3-测试不同设备"><a href="#12-3-测试不同设备" class="headerlink" title="12.3 测试不同设备"></a>12.3 测试不同设备</h3><p>浏览器按 <code>F12</code> → 左上角切换设备图标（<code>Ctrl+Shift+M</code>）→ 试 375px（iPhone SE）&#x2F; 768px（iPad）&#x2F; 1280px（桌面）。</p><p>优化建议：</p><ul><li>图片转 <code>.webp</code>（体积小一半）</li><li>首页壁纸单张 ≤ 200KB</li><li>文字大小在 <code>@media (max-width: 768px)</code> 里适当放大</li></ul><hr><h2 id="第-13-步：日常维护（写文章、改壁纸、换封面）"><a href="#第-13-步：日常维护（写文章、改壁纸、换封面）" class="headerlink" title="第 13 步：日常维护（写文章、改壁纸、换封面）"></a>第 13 步：日常维护（写文章、改壁纸、换封面）</h2><h3 id="13-1-发新文章的标准流程"><a href="#13-1-发新文章的标准流程" class="headerlink" title="13.1 发新文章的标准流程"></a>13.1 发新文章的标准流程</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">cd</span> myblog</span><br><span class="line">npx hexo new <span class="string">&quot;文章标题&quot;</span>        <span class="comment"># 1. 创建</span></span><br><span class="line"><span class="comment"># 2. VS Code 编辑 source/_posts/文章标题.md（写 front-matter + 正文）</span></span><br><span class="line">npx hexo server                <span class="comment"># 3. 本地预览检查</span></span><br><span class="line">npx hexo clean &amp;&amp; npx hexo generate   <span class="comment"># 4. 重新生成</span></span><br><span class="line"><span class="comment"># 5. 推源码（GitHub Actions 会自动发布）：</span></span><br><span class="line">git add .</span><br><span class="line">git commit -m <span class="string">&quot;post: 文章标题&quot;</span></span><br><span class="line">git push origin main</span><br><span class="line"><span class="comment"># （若没配 Actions：走 §9.3 独立目录法推 gh-pages）</span></span><br></pre></td></tr></table></figure><h3 id="13-2-换壁纸"><a href="#13-2-换壁纸" class="headerlink" title="13.2 换壁纸"></a>13.2 换壁纸</h3><ol><li>新图放 <code>source/img/wallpaper/</code></li><li>改 <code>themes/sakura/_config.yml</code> 的 <code>bg:</code> 数组</li><li>重新生成 + 部署</li></ol><h3 id="13-3-换封面图"><a href="#13-3-换封面图" class="headerlink" title="13.3 换封面图"></a>13.3 换封面图</h3><ol><li>新图放 <code>source/img/cover/</code></li><li>改文章 front-matter 的 <code>photos:</code></li><li>重新生成 + 部署</li></ol><h3 id="13-4-备份"><a href="#13-4-备份" class="headerlink" title="13.4 备份"></a>13.4 备份</h3><p>源码推到 <code>main</code> 就是最好的备份。定期：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git push origin main</span><br></pre></td></tr></table></figure><hr><h2 id="附录-A：命令速查"><a href="#附录-A：命令速查" class="headerlink" title="附录 A：命令速查"></a>附录 A：命令速查</h2><table><thead><tr><th>用途</th><th>命令</th></tr></thead><tbody><tr><td>装依赖</td><td><code>npm install</code></td></tr><tr><td>本地预览</td><td><code>npx hexo server</code></td></tr><tr><td>创建文章</td><td><code>npx hexo new &quot;标题&quot;</code></td></tr><tr><td>创建独立页</td><td><code>npx hexo new page 路径</code></td></tr><tr><td>生成静态文件</td><td><code>npx hexo generate</code>（简写 <code>hexo g</code>）</td></tr><tr><td>清缓存</td><td><code>npx hexo clean</code></td></tr><tr><td>查看 git 状态</td><td><code>git status</code></td></tr><tr><td>提交</td><td><code>git add . &amp;&amp; git commit -m &quot;说明&quot;</code></td></tr><tr><td>推源码</td><td><code>git push origin main</code></td></tr><tr><td>推产物（独立目录法）</td><td><code>git -c http.version=HTTP/1.1 push -f origin HEAD:gh-pages</code></td></tr><tr><td>杀 node（Windows）</td><td>PowerShell: <code>Stop-Process -Name node -Force</code>；CMD: <code>taskkill /F /IM node.exe</code></td></tr></tbody></table><hr><h2 id="附录-B：血泪避坑清单"><a href="#附录-B：血泪避坑清单" class="headerlink" title="附录 B：血泪避坑清单"></a>附录 B：血泪避坑清单</h2><h3 id="🚨-1-禁用-hexo-d（本项目最大事故）"><a href="#🚨-1-禁用-hexo-d（本项目最大事故）" class="headerlink" title="🚨 1. 禁用 hexo d（本项目最大事故）"></a>🚨 1. 禁用 <code>hexo d</code>（本项目最大事故）</h3><p>站点根目录本身是 git 仓库时，<code>hexo deploy</code> 会把<strong>整个源码</strong> force push 到 <code>gh-pages</code>，<br>导致线上 404（找不到根 <code>index.html</code>）。<br><strong>只用独立目录法（§9.3）或 GitHub Actions（§11）。</strong></p><h3 id="🚨-2-主题配置数组是”拼接”不是”覆盖”"><a href="#🚨-2-主题配置数组是”拼接”不是”覆盖”" class="headerlink" title="🚨 2. 主题配置数组是”拼接”不是”覆盖”"></a>🚨 2. 主题配置数组是”拼接”不是”覆盖”</h3><p><code>_config.sakura.yml</code> 和 <code>themes/sakura/_config.yml</code> 的同名数组会 concat。<br><code>bg</code>、<code>menus</code>、<code>startdash</code> 都中招。<strong>数组只写一处。</strong></p><h3 id="🚨-3-子目录部署必须用-url-for"><a href="#🚨-3-子目录部署必须用-url-for" class="headerlink" title="🚨 3. 子目录部署必须用 url_for()"></a>🚨 3. 子目录部署必须用 <code>url_for()</code></h3><p>主题里如果直接”字符串拼接”出路径（如 <code>theme.cdn + &#39;/img/xx&#39;</code>），子目录部署会 404。<br>Sakura 的 <code>head.ejs</code>（背景图）、<code>startdash.ejs</code>、<code>headertop.ejs</code>（头像）都踩过，<br>本项目已改为 <code>url_for()</code> 处理。<strong>改主题时遇到路径拼接，优先用 <code>url_for()</code>。</strong></p><h3 id="🚨-4-type-tags-会-404，要用-layout-tag"><a href="#🚨-4-type-tags-会-404，要用-layout-tag" class="headerlink" title="🚨 4. type: tags 会 404，要用 layout: tag"></a>🚨 4. <code>type: tags</code> 会 404，要用 <code>layout: tag</code></h3><p>Sakura 只有 <code>tag.ejs</code> 单数模板。见第 7 步。</p><h3 id="🚨-5-GitHub-Pages-必须放-nojekyll"><a href="#🚨-5-GitHub-Pages-必须放-nojekyll" class="headerlink" title="🚨 5. GitHub Pages 必须放 .nojekyll"></a>🚨 5. GitHub Pages 必须放 <code>.nojekyll</code></h3><p>否则 Jekyll 可能静默失败并沿用旧版。每次部署 <code>touch .nojekyll</code>。</p><h3 id="🚨-6-推送失败先试三板斧"><a href="#🚨-6-推送失败先试三板斧" class="headerlink" title="🚨 6. 推送失败先试三板斧"></a>🚨 6. 推送失败先试三板斧</h3><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git push origin main                              <span class="comment"># ① 默认</span></span><br><span class="line">git -c http.version=HTTP/1.1 push origin main     <span class="comment"># ② 解决 HTTP/2+代理 TLS 不兼容</span></span><br><span class="line"><span class="built_in">env</span> -u HTTP_PROXY -u HTTPS_PROXY git -c http.proxy= -c https.proxy= \</span><br><span class="line">  -c http.version=HTTP/1.1 push origin main        <span class="comment"># ③ 绕过代理直连</span></span><br></pre></td></tr></table></figure><h3 id="🚨-7-网易云歌单外链大量失效"><a href="#🚨-7-网易云歌单外链大量失效" class="headerlink" title="🚨 7. 网易云歌单外链大量失效"></a>🚨 7. 网易云歌单外链大量失效</h3><p>播放器会卡在放不了的歌。换歌单 ID 治标，本地 mp3 治本。</p><hr><p><strong>恭喜读到这里！</strong> 现在你已经能从零搭起并上线一个 Hexo + Sakura 博客了。<br>剩下就是多写、多改、多看 <code>npx hexo server</code> 的实时预览。<br>有问题就回看本教程的排错表，或者到 <a href="https://hexo.io/zh-cn/docs/">Hexo 文档</a> 查。</p>]]>
    </content>
    <id>https://skyblog-dju.pages.dev/2026/08/27/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA%E6%95%99%E7%A8%8B/</id>
    <link href="https://skyblog-dju.pages.dev/2026/08/27/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA%E6%95%99%E7%A8%8B/"/>
    <published>2026-08-27T10:00:00.000Z</published>
    <summary>面向小白的 Hexo + Sakura 博客从零搭建教程：环境准备、主题配置、写文章、封面图、壁纸、部署到 GitHub Pages / Cloudflare / Vercel / Netlify。</summary>
    <title>手把手教程：从零搭建一个 Hexo + Sakura 二次元博客</title>
    <updated>2026-08-27T10:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>Sky</name>
    </author>
    <category term="技术" scheme="https://skyblog-dju.pages.dev/categories/%E6%8A%80%E6%9C%AF/"/>
    <category term="技术" scheme="https://skyblog-dju.pages.dev/tags/%E6%8A%80%E6%9C%AF/"/>
    <category term="github" scheme="https://skyblog-dju.pages.dev/tags/github/"/>
    <content>
      <![CDATA[<h1 id="万字长文｜GitHub-从入门到精通"><a href="#万字长文｜GitHub-从入门到精通" class="headerlink" title="万字长文｜GitHub 从入门到精通"></a>万字长文｜GitHub 从入门到精通</h1><blockquote><p><strong>作者</strong>：Miles<br><strong>来源</strong>：Miles的AI日记（微信公众号）<br><strong>原文链接</strong>：<a href="https://mp.weixin.qq.com/s/1FickGzrNjIc5UE-pOU_IA">https://mp.weixin.qq.com/s/1FickGzrNjIc5UE-pOU_IA</a></p></blockquote><hr><p>如果你想用 GitHub 赚钱，最直接的路并不复杂：在许可证允许的前提下，找到有价值的开源项目，把部署、中文说明和售后做成服务，再去各类平台卖交付。</p><p>但是真正能收钱的是信息筛选和落地能力。想做 AI、转 FDE，或者把自己变成一家 OPC，代码、文档、版本和协作早晚都会落到 GitHub 上。</p><p>哪怕你做的是创作和自媒体，GitHub 上也有大量选题工具、自动化项目和内容生产流程，可文件一多、AI 一改，没有 Git 管版本，很快就会失控。所以，程序员要学，做项目、做内容的人也一样；它决定你能不能把灵感变成一个可管理、可复用、能交付的项目。</p><p>这篇我断断续续磨了大半个月，从 0 到 1 把 Git、GitHub、Commit、分支、PR 和常见报错都实操了一遍，之后的直播也会沿着同一套流程来讲。正式开播前，我先把这份教程开源出来，大家可以先收藏，也可以跟着完整做一遍。</p><hr><h2 id="一、Git-和-GitHub，到底谁管什么"><a href="#一、Git-和-GitHub，到底谁管什么" class="headerlink" title="一、Git 和 GitHub，到底谁管什么"></a>一、Git 和 GitHub，到底谁管什么</h2><p>Git 是装在电脑里的版本管理工具。断网时，你仍然可以提交、看历史、建分支和合并。GitHub 是远程仓库与协作平台，它接收 Git 推上来的提交，再提供 Issues、Pull Requests、Actions、代码审查和权限管理。</p><p>Git 最容易混的，是同一份修改会处在四个不同位置。下面这张信息图把工作区、暂存区、本地仓库和远程仓库拆成了四层。</p><ul><li><strong>工作区</strong>：你正在编辑的文件</li><li><strong>暂存区</strong>：<code>git add</code> 后文件暂存的位置</li><li><strong>本地仓库</strong>：<code>git commit</code> 后保存的版本历史</li><li><strong>远程仓库</strong>：<code>git push</code> 后推送到 GitHub 的代码</li></ul><p>按下保存，只会把内容写进硬盘。<code>git add</code> 负责挑选，<code>git commit</code> 在本地留下版本，<code>git push</code> 才把这些提交送到 GitHub。</p><p>所以提交前要看 diff、实际运行或测试；推送成功后，再去网页回查。这样出了问题，你能马上知道它停在哪一层。</p><hr><h2 id="二、动手前，只准备四样东西"><a href="#二、动手前，只准备四样东西" class="headerlink" title="二、动手前，只准备四样东西"></a>二、动手前，只准备四样东西</h2><p>你需要 Git、一个 GitHub 账号、一个编辑器和一个练习项目。编辑器用 VS Code 就够了，项目可以是一张网页，也可以是一份 Markdown 文档。</p><p>先在终端确认 Git：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git --version</span><br></pre></td></tr></table></figure><p>这次演练使用的是 macOS 和 Git 2.49.0。Windows 用户可以用 Git Bash 或 VS Code 内置终端，下面的 Git 命令相同。</p><p>接着配置提交作者：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git config --global user.name <span class="string">&quot;你的名字&quot;</span></span><br><span class="line">git config --global user.email <span class="string">&quot;你的邮箱&quot;</span></span><br></pre></td></tr></table></figure><p>这是写进提交记录的作者信息，不负责登录 GitHub。如果你只想给当前练习项目配置，把 <code>--global</code> 换成 <code>--local</code>。</p><p>GitHub 的登录是另一件事。命令行常用三种方式：</p><ul><li><strong>GitHub CLI</strong>，通过 <code>gh auth login</code> 打开浏览器授权；</li><li><strong>HTTPS</strong>，使用 Personal Access Token 或凭据管理器；</li><li><strong>SSH</strong>，把公钥添加到 GitHub，后续通过密钥认证。</li></ul><p>刚入门可以选 GitHub CLI 或 HTTPS。使用 HTTPS 时，终端要求 Password 就填写 Token，普通账号密码已经不适用。<strong>Token 不要写进命令、远程 URL、README、聊天和截图。</strong></p><hr><h2 id="三、别急着-init，先确认终端到底在哪"><a href="#三、别急着-init，先确认终端到底在哪" class="headerlink" title="三、别急着 init，先确认终端到底在哪"></a>三、别急着 init，先确认终端到底在哪</h2><p>这次练习从一个普通网页开始。它能在浏览器打开，但还没有任何 Git 历史。</p><p>项目里有三个文件：</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">index.html</span><br><span class="line">style.css</span><br><span class="line">.gitignore</span><br></pre></td></tr></table></figure><p>在 VS Code 选择「打开文件夹」，不要只点开一个 HTML 文件。然后在内置终端运行：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">pwd</span></span><br><span class="line"><span class="built_in">ls</span></span><br></pre></td></tr></table></figure><p><code>pwd</code> 显示当前目录，<code>ls</code> 列出文件。看到 <code>index.html</code> 和 <code>style.css</code> 以后再继续。</p><p>这个检查看着很笨，却能挡住最麻烦的一类事故：有人在桌面、Documents，甚至用户主目录执行 <code>git init</code>，随后 <code>git add .</code> 把几千个无关文件放进暂存区。Git 没坏，目录选错了。</p><hr><h2 id="四、git-init-做了什么"><a href="#四、git-init-做了什么" class="headerlink" title="四、git init 做了什么"></a>四、git init 做了什么</h2><p>现在初始化仓库：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git init -b main</span><br><span class="line">git status --short</span><br></pre></td></tr></table></figure><p><code>git init -b main</code> 在当前目录创建 <code>.git</code>，并把初始分支命名为 <code>main</code>。<code>.git</code> 是一个隐藏目录，提交、分支、暂存区、远程地址等信息都放在里面。项目文件还在原处，Git 从这一刻开始观察它们。</p><p>截图里的 <code>??</code> 表示未跟踪。文件已经存在，Git 还没决定要不要记录。</p><p>想确认仓库根目录，可以运行：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git rev-parse --show-toplevel</span><br></pre></td></tr></table></figure><p>输出应该是当前项目文件夹。若提示 <code>fatal: not a git repository</code>，先检查目录，再看是否执行过 <code>git init</code>。</p><hr><h2 id="五、第一次提交，先留住一个可靠起点"><a href="#五、第一次提交，先留住一个可靠起点" class="headerlink" title="五、第一次提交，先留住一个可靠起点"></a>五、第一次提交，先留住一个可靠起点</h2><p>项目还没修改，为什么要先提交？因为后面所有变化都需要一个可比较的起点。先在浏览器打开网页，确认标题、卡片和报名区能显示；把窗口缩窄，看看手机宽度有没有横向滚动。</p><p>再看 <code>.gitignore</code>。这次使用的内容是：</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">.env</span><br><span class="line">.env.*</span><br><span class="line">*.log</span><br><span class="line">node_modules/</span><br><span class="line">dist/</span><br><span class="line">build/</span><br></pre></td></tr></table></figure><p><code>.gitignore</code> 用来挡住密钥、日志、依赖和构建产物。它主要对尚未跟踪的文件生效。一个密钥如果已经提交过，后来补上 <code>.gitignore</code>，那段历史还在，真正的处理还包括吊销或轮换密钥。</p><p>开始挑选第一次提交的文件：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git add index.html style.css .gitignore</span><br><span class="line">git status --short</span><br><span class="line">git diff --cached --<span class="built_in">stat</span></span><br></pre></td></tr></table></figure><p>状态中的 <code>A</code> 是 Added，表示文件已经进入暂存区。<code>git diff --cached --stat</code> 会告诉你这次准备提交几个文件、大概改了多少行。想看具体内容，运行：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git diff --cached</span><br></pre></td></tr></table></figure><p>确认以后提交：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git commit -m <span class="string">&quot;chore: 初始化校园 AI 招新页&quot;</span></span><br><span class="line">git <span class="built_in">log</span> --oneline</span><br><span class="line">git status</span><br></pre></td></tr></table></figure><p>Commit 可以理解成带作者、时间、说明和父提交的项目快照。<code>ffdf4ff</code> 是这次提交哈希的短写，在当前仓库中用它就能准确定位版本。</p><p><code>feat</code>、<code>fix</code>、<code>docs</code>、<code>style</code>、<code>chore</code> 是常见的提交类型，并非 Git 强制语法。比前缀更重要的是后面的中文：做了什么，改了哪个对象，为什么做。</p><hr><h2 id="六、第二次提交：把-AI-的修改当成待审稿"><a href="#六、第二次提交：把-AI-的修改当成待审稿" class="headerlink" title="六、第二次提交：把 AI 的修改当成待审稿"></a>六、第二次提交：把 AI 的修改当成待审稿</h2><p>接下来给页面加一个「查看报名方式」按钮。使用 AI 编程工具时，我会把边界写进提示词：</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">只修改 index.html，在介绍文字下方增加&quot;查看报名方式&quot;链接，</span><br><span class="line">链接到页面内的 #apply。不要修改 style.css，不要执行 Git 提交。</span><br><span class="line">完成后告诉我改了哪个文件。</span><br></pre></td></tr></table></figure><p>手工修改也很简单：</p><figure class="highlight html"><table><tr><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">class</span>=<span class="string">&quot;cta&quot;</span> <span class="attr">href</span>=<span class="string">&quot;#apply&quot;</span>&gt;</span>查看报名方式<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br></pre></td></tr></table></figure><p>AI 说完成了，先别提交。运行：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git status --short</span><br><span class="line">git diff -- index.html</span><br><span class="line">git diff --check</span><br></pre></td></tr></table></figure><p><code>git diff</code> 显示工作区里尚未暂存的变化。绿色 <code>+</code> 是新增行，红色 <code>-</code> 是删除行。<code>git diff --check</code> 没有输出，说明没有发现明显的尾随空格等格式问题；它不会替你检查按钮能不能点。</p><p>回到浏览器刷新，点击按钮，再把窗口缩窄。页面应该滚动到报名区，按钮和卡片在窄屏下仍然正常。</p><p>测试通过后才提交：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git add index.html</span><br><span class="line">git diff --cached</span><br><span class="line">git commit -m <span class="string">&quot;feat: 新增报名入口，方便快速查看申请方式&quot;</span></span><br><span class="line">git <span class="built_in">log</span> --oneline -2</span><br></pre></td></tr></table></figure><p>这时仓库里有两个能说清楚的版本：起始页和报名按钮。以后按钮出问题，可以直接找到它是哪次加进来的。</p><p>顺便把两个 diff 分清：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git diff              <span class="comment"># 工作区与暂存区之间的差异</span></span><br><span class="line">git diff --cached     <span class="comment"># 暂存区与最近一次提交之间的差异</span></span><br></pre></td></tr></table></figure><p>如果 <code>git diff</code> 没输出，文件可能没保存，也可能已经暂存或提交。依次看 <code>git status</code>、<code>git diff --cached</code> 和 <code>git log</code>，比反复输入 <code>git add .</code> 靠谱。</p><hr><h2 id="七、分支：给不确定的改动留一个试验位置"><a href="#七、分支：给不确定的改动留一个试验位置" class="headerlink" title="七、分支：给不确定的改动留一个试验位置"></a>七、分支：给不确定的改动留一个试验位置</h2><p>按钮只增加一行，风险不大。把整套主题从紫色改成橙色，结果可能好看，也可能很俗，这种修改适合放进分支。</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git switch -c experiment/warm-theme</span><br><span class="line">git branch --show-current</span><br></pre></td></tr></table></figure><p>分支在概念上是指向某个提交的名字。新分支刚创建时与 <code>main</code> 指向同一提交，所以文件完全一样。等实验分支产生新提交，两条线才分开。</p><p>图里蓝色的 <code>main</code> 仍指着第二次提交，橙色的 <code>experiment</code> 已经指向第三次提交。项目并没有复制出两套文件，变化的只是两个分支名分别指向哪里。</p><p>修改 <code>style.css</code> 的颜色变量，刷新页面确认以后提交：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git diff -- style.css</span><br><span class="line">git diff --check</span><br><span class="line">git add style.css</span><br><span class="line">git commit -m <span class="string">&quot;style: 在实验分支试用暖色主题&quot;</span></span><br><span class="line">git <span class="built_in">log</span> --oneline --graph --decorate --all</span><br></pre></td></tr></table></figure><p><code>HEAD</code> 表示你当前站在哪里。截图里 <code>HEAD</code> 指向 <code>experiment/warm-theme</code>，<code>main</code> 仍停在按钮提交。</p><p>确定保留暖色主题，切回 <code>main</code> 合并：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git switch main</span><br><span class="line">git merge experiment/warm-theme</span><br></pre></td></tr></table></figure><p><code>main</code> 没有产生分叉，Git 直接把 <code>main</code> 指针向前移动到实验提交。</p><hr>]]>
    </content>
    <id>https://skyblog-dju.pages.dev/2026/08/27/GitHub%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/</id>
    <link href="https://skyblog-dju.pages.dev/2026/08/27/GitHub%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/"/>
    <published>2026-08-27T07:07:00.000Z</published>
    <summary>
      <![CDATA[<h1 id="万字长文｜GitHub-从入门到精通"><a href="#万字长文｜GitHub-从入门到精通" class="headerlink" title="万字长文｜GitHub 从入门到精通"></a>万字长文｜GitHub]]>
    </summary>
    <title>GitHub从入门到精通</title>
    <updated>2026-08-27T07:07:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>Sky</name>
    </author>
    <category term="技术" scheme="https://skyblog-dju.pages.dev/categories/%E6%8A%80%E6%9C%AF/"/>
    <category term="技术" scheme="https://skyblog-dju.pages.dev/tags/%E6%8A%80%E6%9C%AF/"/>
    <category term="github" scheme="https://skyblog-dju.pages.dev/tags/github/"/>
    <content>
      <![CDATA[<h1 id="关于-GitHub-的一些事情"><a href="#关于-GitHub-的一些事情" class="headerlink" title="关于 GitHub 的一些事情"></a>关于 GitHub 的一些事情</h1><blockquote><p>本篇文章探讨了关于 GitHub 的一些事情。作者提到了 GitHub 上一个项目可以有多种下载到本地的方式，包括在线克隆 fork 到自己仓库、通过链接下载克隆到本地文件夹以及下载 ZIP 解压到本地文件等方法。然后，作者分享了一些遇到的问题和解决方法，例如如何绑定多个 GitHub 账号以及本地怎么部署大文件到 GitHub 上去等。最后，作者总结道：<strong>适合自己才是最好的</strong>，还有许多未知未解之谜等待我们去发掘。</p><p>⚠️ <em>It has been 853 days since the last update, the content of the article may be outdated.</em></p></blockquote><hr><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>事情是这样的，最近因为在研究几个项目，准备搭建各种关于个人的主页和模板，开始踏入我的代码研究以及 GitHub 部署等征途。大概今天的任务就是为了 fork 大佬的一个模板，但是因为发现有很多代码需要修改，加之在线修改很难去操作等，所以直接从 GitHub 上下载出来，但是在后面遇到了一系列的困难，所以发现还是有很多要学的东西！</p><hr><h2 id="GitHub-项目下载方式"><a href="#GitHub-项目下载方式" class="headerlink" title="GitHub 项目下载方式"></a>GitHub 项目下载方式</h2><p>从目前对 GitHub 的了解，一个项目可以有多种下载到本地的方式：</p><h3 id="方式一：在线克隆-Fork-到自己仓库"><a href="#方式一：在线克隆-Fork-到自己仓库" class="headerlink" title="方式一：在线克隆 Fork 到自己仓库"></a>方式一：在线克隆 Fork 到自己仓库</h3><p>这种方式——直接在线 fork 一下，对于开源的仓库，我们都是可以看得到，所以直接到原作者或者二改开源作者那里一键 fork 到自己的仓库就可以。但是此种方法有很多限制，例如：有 fork 标记，且各种别人的仓库信息挂在自己的仓库上，显得非常不美观，且感觉就是偷来的东西，而且还被别人打上了标签。因此，实在是无法操作可能，<strong>不推荐此种方法！</strong></p><ul><li><strong>优点</strong>：方便快捷，克隆速度快，不用再次部署到 GitHub，相当于直接备份！</li><li><strong>缺点</strong>：复制克隆生搬硬套，不好修改，容易出现问题，不方便了解项目的具体内容。</li></ul><h3 id="方式二：通过链接下载克隆到本地文件夹"><a href="#方式二：通过链接下载克隆到本地文件夹" class="headerlink" title="方式二：通过链接下载克隆到本地文件夹"></a>方式二：通过链接下载克隆到本地文件夹</h3><p>首先，找到想要的项目开源代码主页，找到 <code>Code</code> 选项下的 HTTP 或者 SSH，选择第一排或者第二排等，直接点击 <code>git clone</code> 然后复制，再到本地创建一个新的文件夹，直接打开 <strong>Git Bash Here</strong>，然后把刚才的项目地址直接粘贴运行，跑程序式克隆项目到本地即可。</p><ul><li><strong>优点</strong>：较方便快捷，可修改程度高，了解代码项目的具体内容更加方便快捷！</li><li><strong>缺点</strong>：部署到其他 Git 平台不方便，且容易丢失文件，且项目的部署方式麻烦，每次修改都得部署一次！</li></ul><h3 id="方式三：下载-ZIP-解压到本地文件"><a href="#方式三：下载-ZIP-解压到本地文件" class="headerlink" title="方式三：下载 ZIP 解压到本地文件"></a>方式三：下载 ZIP 解压到本地文件</h3><p>还是找到想要的项目开源代码主页，到 <code>Code</code> 栏中，下面几列，直接打包下载 ZIP 文件，然后解压到本地文件夹里。注意一下，这种方式下载还是限制会比较大，因为网速和国内访问速度差异，有时候下载会非常慢，甚至卡断。因此这种方式下载，最好选择一些镜像服务下载 ZIP。而这种方式是相比于第一种更加直接，相对于第二种，很多项目会提供下载镜像，下载方便。</p><ul><li><strong>优点</strong>：下载方便，一键下载，本地解压，速度也较快。</li><li><strong>缺点</strong>：没有镜像服务，基本下载几 KB&#x2F;s，而且容易下载出问题。</li></ul><hr><h2 id="新手实操问题"><a href="#新手实操问题" class="headerlink" title="新手实操问题"></a>新手实操问题</h2><p>再接下来，就是我遇到的一些问题了，一些关于 GitHub 相对于”小白”新手，真正难的实操问题：</p><p><strong>Q1</strong>：一台电脑怎么绑定多个 GitHub 账号？怎么好像只能生成一个 SSH Key？</p><p><strong>W1</strong>：由于前面发现，一个 GitHub 账号只能提供一个静态的域名 Page 服务，所以还想要再白嫖一个永久的域名 Page，然后把以后的工作转移到这个网站上。——（此方法已经由 ChatGPT 解决，几乎解决 80% 问题！）</p><p><strong>Q2</strong>：本地多个大文件（&lt;100M）怎么部署到 GitHub 上去？</p><p><strong>W2</strong>：因为 fork 了一位大佬的模板主题，准备修改好，然后看看效果，但是一直找不到方法，部署到 GitHub 仓库里去。之前的是 Hexo 主题，直接在配置文件里配置一下就行。但是这个不一样，所以得去学习一下。因此才写下这篇文章，记录保留一些方法！</p><hr><h2 id="一台电脑绑定多个-GitHub-账号"><a href="#一台电脑绑定多个-GitHub-账号" class="headerlink" title="一台电脑绑定多个 GitHub 账号"></a>一台电脑绑定多个 GitHub 账号</h2><blockquote><p>方法：（来源于 ChatGPT —— AIchatOS）</p></blockquote><p>在一台电脑上绑定多个 GitHub 账号的 SSH 密钥，可以按照以下步骤操作：</p><h3 id="1-生成新的-SSH-密钥对"><a href="#1-生成新的-SSH-密钥对" class="headerlink" title="1. 生成新的 SSH 密钥对"></a>1. 生成新的 SSH 密钥对</h3><p>打开终端，输入以下命令生成一个新的密钥：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">ssh-keygen -t rsa -C <span class="string">&quot;your-email@example.com&quot;</span> -f ~/.ssh/github2_rsa</span><br></pre></td></tr></table></figure><h3 id="2-添加新的-SSH-密钥到-SSH-代理"><a href="#2-添加新的-SSH-密钥到-SSH-代理" class="headerlink" title="2. 添加新的 SSH 密钥到 SSH 代理"></a>2. 添加新的 SSH 密钥到 SSH 代理</h3><p>输入以下命令将新密钥添加到 SSH 代理：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">ssh-add ~/.ssh/github2_rsa</span><br></pre></td></tr></table></figure><h3 id="3-将新的-SSH-公钥添加到-GitHub"><a href="#3-将新的-SSH-公钥添加到-GitHub" class="headerlink" title="3. 将新的 SSH 公钥添加到 GitHub"></a>3. 将新的 SSH 公钥添加到 GitHub</h3><p>将新生成的公钥（<code>~/.ssh/github2_rsa.pub</code>）的内容添加到 GitHub 账号的 SSH keys 页面。在 GitHub 页面上选择 <strong>Settings</strong> &gt; <strong>SSH and GPG keys</strong> &gt; <strong>New SSH key</strong>，在 <strong>Key</strong> 框中粘贴公钥内容并保存。</p><h3 id="4-设置-Git-全局用户名和邮箱"><a href="#4-设置-Git-全局用户名和邮箱" class="headerlink" title="4. 设置 Git 全局用户名和邮箱"></a>4. 设置 Git 全局用户名和邮箱</h3><p>在终端中输入以下两行命令分别设置 Git 全局用户名和邮箱：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git config --global user.name <span class="string">&quot;Your Name&quot;</span></span><br><span class="line">git config --global user.email <span class="string">&quot;youremail@domain.com&quot;</span></span><br></pre></td></tr></table></figure><h3 id="5-配置-SSH-config-文件"><a href="#5-配置-SSH-config-文件" class="headerlink" title="5. 配置 SSH config 文件"></a>5. 配置 SSH config 文件</h3><p>打开并编辑 SSH config 文件（通常位于 <code>~/.ssh/config</code>），在文件中添加以下内容：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># Default GitHub</span></span><br><span class="line">Host github.com</span><br><span class="line">    HostName github.com</span><br><span class="line">    User git</span><br><span class="line">    IdentityFile ~/.ssh/id_rsa</span><br><span class="line"></span><br><span class="line"><span class="comment"># Second GitHub (use a different SSH key)</span></span><br><span class="line">Host github.com-second-account</span><br><span class="line">    HostName github.com</span><br><span class="line">    User git</span><br><span class="line">    IdentityFile ~/.ssh/github2_rsa</span><br></pre></td></tr></table></figure><h3 id="6-测试-SSH-连接"><a href="#6-测试-SSH-连接" class="headerlink" title="6. 测试 SSH 连接"></a>6. 测试 SSH 连接</h3><p>输入以下命令测试 SSH 连接：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">ssh -T git@github.com</span><br><span class="line">ssh -T git@github.com-second-account</span><br></pre></td></tr></table></figure><p>如果两次都能成功连接，就说明绑定多个 GitHub 账号的 SSH 密钥已经完成。</p><blockquote><p>🍬🍬 漂亮！</p><p>通过上面的方法，成功解决，原来只要在电脑上多生成几个 SSH Key，绑定一下邮箱和用户名即可！此方法可以白嫖多个账号，多个 Page 域名。但是比较这种方法，需要注册账号，创建仓库等。且，如果仓库账号不用，或者用不着，会导致冷藏库情况，并且多账户难管理和重新部署，容易成为死仓！</p></blockquote><h3 id="补充说明"><a href="#补充说明" class="headerlink" title="补充说明"></a>补充说明</h3><p>对了，在生成了仓库之后，又发现了各种情况，例如两个账号部署容易冲突，虽然可以绑定 Git 地址，但是……但是……发现无法直接通过这种方式去 fork 自己的仓库到另外一个账号的仓库上，而直接生成出 Page 访问域名。</p><p>因为好像原因是不能直接 <code>.github.io</code> 生成 Page 文件，需要自行创建。虽然 fork 可以直接命名仓库，但是我也想这样投机取巧，后来发现了，它还是不能直接生成 Page 静态的域名访问地址，后台 Setting 也无法设置。且打开来的还是 404 页面！！</p><p>而后就只能自己创建一个原始仓库，然后想办法把项目一五一十的部署上来了！！最终成功又部署了一条 GitHub 线路备用！——也许其中有猫腻，但是还是老老实实写项目，上传比较稳妥些！</p><hr><h2 id="本地文件怎么部署到-GitHub-上？"><a href="#本地文件怎么部署到-GitHub-上？" class="headerlink" title="本地文件怎么部署到 GitHub 上？"></a>本地文件怎么部署到 GitHub 上？</h2><p>自己总结出来：</p><h3 id="方法一：直接上传文件"><a href="#方法一：直接上传文件" class="headerlink" title="方法一：直接上传文件"></a>方法一：直接上传文件</h3><p>Add files 然后把文件上传上去，但是这种只有 10 个小文件，不能很好的分类上传完成！！</p><h3 id="方法二：GitHub-Desktop-桌面客户端"><a href="#方法二：GitHub-Desktop-桌面客户端" class="headerlink" title="方法二：GitHub Desktop 桌面客户端"></a>方法二：GitHub Desktop 桌面客户端</h3><p>百度了一下，度娘上说，可以下载 GitHub Desktop 桌面客户端版，然后用客户端上传大部分文件！</p><h3 id="方法三（推荐）：Git-命令行部署"><a href="#方法三（推荐）：Git-命令行部署" class="headerlink" title="方法三（推荐）：Git 命令行部署"></a>方法三（推荐）：Git 命令行部署</h3><p>用 CSDN 上的方法，直接 Git 部署，比较方便。但是这种比较稳定，不能后期更新，需要重新部署应该！</p><blockquote><p>——— 这是目前我已知的方法！！</p></blockquote><h3 id="详细方法：通过-Git-命令上传"><a href="#详细方法：通过-Git-命令上传" class="headerlink" title="详细方法：通过 Git 命令上传"></a>详细方法：通过 Git 命令上传</h3><h4 id="第一种方法（针对自带-Git-配置的项目）"><a href="#第一种方法（针对自带-Git-配置的项目）" class="headerlink" title="第一种方法（针对自带 Git 配置的项目）"></a>第一种方法（针对自带 Git 配置的项目）</h4><p>通过把远程仓库文件克隆下来，再添加自己需要上传的文件，再上传到远程仓库。</p><h4 id="第二种方法（针对没有自带-Git-配置的项目）"><a href="#第二种方法（针对没有自带-Git-配置的项目）" class="headerlink" title="第二种方法（针对没有自带 Git 配置的项目）"></a>第二种方法（针对没有自带 Git 配置的项目）</h4><p><strong>第一步</strong>：我们需要先创建一个文件夹（其实也就是一个文件夹，我的这个文件夹叫 <code>repository</code>）。</p><p>你可以直接桌面右击新建文件夹，也可以右击打开 Git Bash 命令行窗口通过命令来创建。</p><p><strong>第二步</strong>：在 <code>repository</code> 文件夹里创建一个 <code>test110</code> 的文件夹（仓库），通过命令 <code>git init</code> 把这个文件夹变成 Git 系统可管理的仓库（进入 <code>test110</code> 文件夹打开 Git Bash）。</p><p><strong>配置 Git 系统的用户基本信息</strong>（推荐选全局配置）</p><p>作用：</p><ol><li>用户名和邮箱地址是本地 Git 客户端的一个变量</li><li>每次 commit 都会用用户名和邮箱记录</li><li>GitHub 的 contributions 统计就是按邮箱来统计的</li></ol><p><strong>配置全局用户名和邮箱</strong>（适用于所有仓库）：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 配置全局用户名</span></span><br><span class="line">git config --global user.name <span class="string">&quot;用户名&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 配置全局邮箱</span></span><br><span class="line">git config --global user.email <span class="string">&quot;邮箱&quot;</span></span><br></pre></td></tr></table></figure><p><strong>配置单一仓库用户名和邮箱</strong>（指定的仓库）：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git config user.name <span class="string">&quot;用户名&quot;</span></span><br><span class="line">git config user.email <span class="string">&quot;邮箱&quot;</span></span><br></pre></td></tr></table></figure><p><strong>查看配置信息命令</strong>：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git config --list</span><br></pre></td></tr></table></figure><hr><h3 id="方法三的原理和步骤"><a href="#方法三的原理和步骤" class="headerlink" title="方法三的原理和步骤"></a>方法三的原理和步骤</h3><p>以我理解：</p><p>先创建个仓库，且包含一个文件 <code>README.md</code>，然后通过克隆这个仓库到本地，与本地产生联系，再把自己想要上传的文件主体部分，直接通过 Git Bash 命令，上传到这个仓库。</p><p><strong>注意几点</strong>：</p><p>由于只是产生了一定的联系，但是还是要重新绑定账号等，并且需要注意文件里，不能把别人项目里的 <code>.git</code> 复制过来，只要一些主体文件就行。（有时间，还是建议自己从底层搭建，若因为只是一时兴趣，所以还是研究一下部署文件比较好！！）</p><hr><h3 id="详细步骤：本地部署到-GitHub"><a href="#详细步骤：本地部署到-GitHub" class="headerlink" title="详细步骤：本地部署到 GitHub"></a>详细步骤：本地部署到 GitHub</h3><blockquote><p>🎁🔨 CSDN 本地部署到 GitHub 上（详细版，因为我已经知道了，所以去除图片，需要详细了解，可直接跳转到原文查看：<a href="https://blog.csdn.net/">如何上传文件到 GitHub（图文）</a>）</p></blockquote><p>接下来进入正题，如何上传文件到 GitHub。</p><h4 id="1-注册一个-GitHub-账号"><a href="#1-注册一个-GitHub-账号" class="headerlink" title="1. 注册一个 GitHub 账号"></a>1. 注册一个 GitHub 账号</h4><p>因为我之前用下载程序之类的注册挺久了，所以具体怎么操作不太记得了。要是国内的网址不太好使，试试国外的会很 nice。</p><h4 id="2-下载一个-Git-Bash-版本控制软件"><a href="#2-下载一个-Git-Bash-版本控制软件" class="headerlink" title="2. 下载一个 Git Bash 版本控制软件"></a>2. 下载一个 Git Bash 版本控制软件</h4><p>下载地址官网：<a href="https://git-scm.com/">Git - Downloads</a></p><p>这个软件安装没什么好注意的，一路 next 就行，想改路径就在能改的地方改就行。</p><h4 id="3-启动-Git-Bash"><a href="#3-启动-Git-Bash" class="headerlink" title="3. 启动 Git Bash"></a>3. 启动 Git Bash</h4><p>一个简单的方法，直接进入要上传的文件路径下，空白处点击右键，点击 <strong>Git Bash Here</strong>。</p><h4 id="4-连接-Git-Bash-与-GitHub"><a href="#4-连接-Git-Bash-与-GitHub" class="headerlink" title="4. 连接 Git Bash 与 GitHub"></a>4. 连接 Git Bash 与 GitHub</h4><p>这一步只需要在第一次使用时操作就好。</p><p>打开 Git Bash 后输入如下代码：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git config --global user.name <span class="string">&quot;your name&quot;</span></span><br><span class="line">git config --global user.email <span class="string">&quot;your_email@youremail.com&quot;</span></span><br></pre></td></tr></table></figure><p>之后会弹出网页，按照要求输入账号密码就好。</p><h4 id="5-在-GitHub-上创建-Repository"><a href="#5-在-GitHub-上创建-Repository" class="headerlink" title="5. 在 GitHub 上创建 Repository"></a>5. 在 GitHub 上创建 Repository</h4><p>点击右侧头像下 <strong>Your Repositories</strong>。</p><h4 id="6-上传文件"><a href="#6-上传文件" class="headerlink" title="6. 上传文件"></a>6. 上传文件</h4><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git init                          <span class="comment"># 初始化仓库</span></span><br><span class="line">git add README.md                 <span class="comment"># 可以替换为 git add . 意为上传文件夹下的所有文件</span></span><br><span class="line">git commit -m <span class="string">&quot;first commit&quot;</span>      <span class="comment"># 提交备注</span></span><br><span class="line">git branch -M main                <span class="comment"># 重命名分支为 main</span></span><br><span class="line">git remote add origin https://github.com/lixiaoling2468/test.git  <span class="comment"># 这里地址会变</span></span><br><span class="line">git push -u origin main           <span class="comment"># 上传文件</span></span><br></pre></td></tr></table></figure><p>顺利在这一步后就成功了，再去 GitHub 上查看，可以发现文件上传了。</p><hr><h3 id="上传部署时一些重要的-Git-命令汇总"><a href="#上传部署时一些重要的-Git-命令汇总" class="headerlink" title="上传部署时一些重要的 Git 命令汇总"></a>上传部署时一些重要的 Git 命令汇总</h3><p><strong>cd 进入克隆的这个文件夹</strong>：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">cd</span> + 文件夹名字</span><br></pre></td></tr></table></figure><p><strong>依次输入以下代码</strong>：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git init</span><br><span class="line">git add .</span><br><span class="line">git commit -m <span class="string">&quot;你的提交信息&quot;</span></span><br></pre></td></tr></table></figure><p><strong>注意</strong>：会要求输入</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git config --global user.email <span class="string">&quot;you@example.com&quot;</span></span><br><span class="line">git config --global user.name <span class="string">&quot;Your Name&quot;</span></span><br></pre></td></tr></table></figure><p>来确定你的身份和上传的账号。</p><p><strong>main 分支部署</strong>：</p><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">git branch -M main</span><br><span class="line"></span><br><span class="line">git remote add origin https://github.com/xxxxx/xxxx.git  <span class="comment"># 这里地址会变</span></span><br><span class="line"></span><br><span class="line">git push -u origin main  <span class="comment"># 上传文件</span></span><br><span class="line">git push</span><br></pre></td></tr></table></figure><p>依次输入以上代码后，进入 GitHub 查看：文件夹已上传 GitHub，上传成功。</p><hr><h2 id="最后"><a href="#最后" class="headerlink" title="最后"></a>最后</h2><p>总结一下：</p><p>不管前面那种仓库下载项目也好，还是怎么部署项目或者上传文件也好，需要根据个人情况看，尤其是项目的特点，还有个人喜好等。因此<strong>适合自己才是最好的</strong>，还有 GitHub 上，还有许多未知未解之谜，待我们一起去慢慢发掘！！<br>&#96;&#96;&#96;</p>]]>
    </content>
    <id>https://skyblog-dju.pages.dev/2026/08/27/%E5%85%B3%E4%BA%8E-GitHub-%E7%9A%84%E4%B8%80%E4%BA%9B%E4%BA%8B%E6%83%85/</id>
    <link href="https://skyblog-dju.pages.dev/2026/08/27/%E5%85%B3%E4%BA%8E-GitHub-%E7%9A%84%E4%B8%80%E4%BA%9B%E4%BA%8B%E6%83%85/"/>
    <published>2026-08-27T07:07:00.000Z</published>
    <summary>
      <![CDATA[<h1 id="关于-GitHub-的一些事情"><a href="#关于-GitHub-的一些事情" class="headerlink" title="关于 GitHub 的一些事情"></a>关于 GitHub]]>
    </summary>
    <title>关于-GitHub-的一些事情</title>
    <updated>2026-08-27T07:07:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>Sky</name>
    </author>
    <category term="生活" scheme="https://skyblog-dju.pages.dev/categories/%E7%94%9F%E6%B4%BB/"/>
    <category term="Hexo" scheme="https://skyblog-dju.pages.dev/tags/Hexo/"/>
    <category term="随笔" scheme="https://skyblog-dju.pages.dev/tags/%E9%9A%8F%E7%AC%94/"/>
    <content>
      <![CDATA[<p>这是使用 <strong>Hexo</strong> + <strong>Butterfly</strong> 主题搭建的第一篇文章。🎉</p><h2 id="关于这个博客"><a href="#关于这个博客" class="headerlink" title="关于这个博客"></a>关于这个博客</h2><p>我会在这里记录技术学习、开发实践和一些碎碎念。</p><h2 id="快速开始"><a href="#快速开始" class="headerlink" title="快速开始"></a>快速开始</h2><figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># 本地预览</span></span><br><span class="line">hexo clean &amp;&amp; hexo g &amp;&amp; hexo s</span><br><span class="line"></span><br><span class="line"><span class="comment"># 部署到 GitHub Pages</span></span><br><span class="line">hexo clean &amp;&amp; hexo g &amp;&amp; hexo d</span><br></pre></td></tr></table></figure><blockquote><p>欢迎在右上角使用搜索功能，或直接浏览标签 &#x2F; 分类归档。</p></blockquote><p>下一篇见！</p>]]>
    </content>
    <id>https://skyblog-dju.pages.dev/2026/08/26/hello-world/</id>
    <link href="https://skyblog-dju.pages.dev/2026/08/26/hello-world/"/>
    <published>2026-08-26T12:00:00.000Z</published>
    <summary>
      <![CDATA[<p>这是使用 <strong>Hexo</strong> + <strong>Butterfly</strong> 主题搭建的第一篇文章。🎉</p>
<h2 id="关于这个博客"><a href="#关于这个博客" class="headerlink"]]>
    </summary>
    <title>你好，世界：我的博客开通啦</title>
    <updated>2026-08-26T12:00:00.000Z</updated>
  </entry>
</feed>
