<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>喜之梁</title><description>多点关心多点爱</description><link>https://blog.liang.one/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>6.6.7</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>2026年3月29日 21:29:27</lastBuildDate><item><title>使用Git管理你的项目代码</title><link>https://blog.liang.one/posts/10/</link><guid isPermaLink="true">https://blog.liang.one/posts/10/</guid><pubDate>Wed, 18 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;新的一年，祝大家新春快乐。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2026/02/17/69946d313230b.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;最近给博客做了一次彻底大升级，抛弃了&lt;strong&gt;hexo&lt;/strong&gt;框架转向了&lt;strong&gt;astro&lt;/strong&gt;框架。在拉取官方仓库到本地进行适配与迁移的过程中，我越来越能感受到&lt;strong&gt;Git&lt;/strong&gt;的重要性。于是乎，这篇就来记录一下我用&lt;strong&gt;Git&lt;/strong&gt;管理本地和远程仓库以及从上游仓库获取更新的方法经验。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;Git基本操作&lt;a href=&quot;#git基本操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;1. 配置用户信息&lt;a href=&quot;#1-配置用户信息&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;首次使用 Git 前，需要配置全局用户名和邮箱：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git config --global user.name &quot;你的用户名&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git config --global user.email &quot;你的邮箱&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. 初始化仓库&lt;a href=&quot;#2-初始化仓库&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在项目目录下执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git init&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. 常用操作命令&lt;a href=&quot;#3-常用操作命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;添加文件到暂存区&lt;a href=&quot;#添加文件到暂存区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git add &amp;lt;文件名&amp;gt;        # 添加指定文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git add .              # 添加所有文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;提交更改&lt;a href=&quot;#提交更改&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git commit -m &quot;提交说明&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;查看状态&lt;a href=&quot;#查看状态&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git status&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;查看提交历史&lt;a href=&quot;#查看提交历史&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git log&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;4. 远程仓库操作&lt;a href=&quot;#4-远程仓库操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;关联远程仓库&lt;a href=&quot;#关联远程仓库&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git remote add origin &amp;lt;远程仓库地址&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;推送到远程仓库&lt;a href=&quot;#推送到远程仓库&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git push -u origin main&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;从远程仓库拉取&lt;a href=&quot;#从远程仓库拉取&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git pull origin main&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;5. 分支管理&lt;a href=&quot;#5-分支管理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;创建新分支&lt;a href=&quot;#创建新分支&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git branch &amp;lt;分支名&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;切换分支&lt;a href=&quot;#切换分支&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git checkout &amp;lt;分支名&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 或&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git switch &amp;lt;分支名&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;合并分支&lt;a href=&quot;#合并分支&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git merge &amp;lt;要合并的分支名&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;6. 撤销操作&lt;a href=&quot;#6-撤销操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;撤销工作区修改&lt;a href=&quot;#撤销工作区修改&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git checkout -- &amp;lt;文件名&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;撤销暂存区文件&lt;a href=&quot;#撤销暂存区文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git reset HEAD &amp;lt;文件名&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;7. 忽略文件&lt;a href=&quot;#7-忽略文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;创建 &lt;code&gt;.gitignore&lt;/code&gt;文件，列出需要忽略的文件和文件夹：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;node_modules/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*.log&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.env&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;以上是 Git 常用的基本操作&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;实践与优化&lt;a href=&quot;#实践与优化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;我的博客使用的是astro框架＋Firefly主题。&lt;/p&gt;&lt;a href=&quot;https://github.com/CuteLeaf/Firefly&quot; target=&quot;_blank&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;CuteLeaf&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/&lt;/div&gt;&lt;div&gt;Firefly&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Waiting for api.github.com...&lt;/div&gt;&lt;div&gt;&lt;div&gt;00K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;span&gt;Waiting...&lt;/span&gt;&lt;/div&gt;&lt;/a&gt;&lt;p&gt;我最开始的管理方案很简单，就是先fork官方仓库，然后clone下来到本地进行修改，之后建一个新的分支用来放修改后的代码，之后全部推送到github就完了。用这种方案管理代码流程简单，也方便给官方仓库提pr。&lt;/p&gt;&lt;p&gt;如果你只clone代码到本地，不推送到github上的话，那么我认为这种方法很不错。如果你想将代码提交到github进行备份并使用github的工作流的话，那么有一点我不太能接受——你fork下来的仓库是公开权限，这意味着&lt;strong&gt;任何人&lt;/strong&gt;都能获取你的所有代码，包括可能填写在代码中的token、key之类的&lt;strong&gt;隐私内容&lt;/strong&gt;。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;方案优化&lt;a href=&quot;#方案优化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;有没有什么便于管理与更新代码，且没有安全风险，又能白嫖github算力，同时日后还能提pr贡献代码的方案呢？&lt;/p&gt;&lt;p&gt;有的兄弟有的&lt;/p&gt;&lt;p&gt;我们只需要给本地的git仓库增加多个&lt;strong&gt;远程仓库&lt;/strong&gt;即可。一个是你的私有仓库origin，另一个是你的项目的上游官方仓库upstream，还有你的fork仓库（提PR，可选）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;origin   → https://github.com/lmb666666/firefly-blog.git （私有仓库）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;upstream → https://github.com/CuteLeaf/Firefly.git （原始上游仓库）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;myfork   → https://github.com/lmb666666/Firefly.git （fork仓库）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;具体步骤&lt;a href=&quot;#具体步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;第一步：在 GitHub 上创建私有仓库&lt;a href=&quot;#第一步在-github-上创建私有仓库&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;打开 &lt;a href=&quot;https://github.com/new&quot;&gt;https://github.com/new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;仓库名填写 &lt;code&gt;firefly-blog&lt;/code&gt;（或你喜欢的名字）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;选择 Private&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不要勾选&lt;/strong&gt; “Add a README file” 等任何初始化选项&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;Create repository&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;第二步：查看原始上游仓库地址&lt;a href=&quot;#第二步查看原始上游仓库地址&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;到GitHub上查看你的&lt;strong&gt;原始上游仓库&lt;/strong&gt;地址。假设原始仓库是 &lt;code&gt;https://github.com/CuteLeaf/Firefly.git&lt;/code&gt;（请根据实际情况替换）。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;第三步：拉取原始上游仓库代码&lt;a href=&quot;#第三步拉取原始上游仓库代码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;clone&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://github.com/CuteLeaf/Firefly.git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Firefly&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;第四步：重新配置本地remote&lt;a href=&quot;#第四步重新配置本地remote&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在你的项目目录下依次执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 1. 将当前的 origin（原始上游仓库）改名为 upstream&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;remote&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;rename&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;upstream&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 2. 添加你的私有仓库作为新的 origin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;remote&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://github.com/lmb666666/firefly-blog.git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 3. 验证配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;remote&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-v&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预期输出：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;origin    https://github.com/lmb666666/firefly-blog.git (fetch)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;origin    https://github.com/lmb666666/firefly-blog.git (push)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;upstream  https://github.com/CuteLeaf/Firefly.git (fetch)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;upstream  https://github.com/CuteLeaf/Firefly.git (push)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;第五步：创建并切换到&lt;code&gt;custom&lt;/code&gt;开发分支&lt;a href=&quot;#第五步创建并切换到custom开发分支&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;为了不影响主分支，我们创建一个专门用于&lt;strong&gt;开发&lt;/strong&gt;的 &lt;code&gt;custom&lt;/code&gt; 分支。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 从当前分支（通常是 master/main）创建 custom 分支&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-b&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;custom&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 或者先创建再切换&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# git branch custom&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# git checkout custom&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;第六步：日常开发&lt;a href=&quot;#第六步日常开发&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在 &lt;code&gt;custom&lt;/code&gt; 分支上进行日常的功能开发、bug修复等工作。&lt;/p&gt;&lt;p&gt;将修改的文件添加到暂存区，并提交到本地仓库。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 添加所有修改过的文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 或者只添加特定文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# git add &amp;lt;file_name&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 提交更改，并附上清晰的提交信息&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;commit&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-m&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Your descriptive commit message here&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;第七步：推送所有分支到私有仓库&lt;a href=&quot;#第七步推送所有分支到私有仓库&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 推送 master 分支&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-u&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;master&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 推送 custom 分支（你的个人修改）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-u&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;custom&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;日后同步上游更新&lt;a href=&quot;#日后同步上游更新&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 获取上游最新代码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;fetch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;upstream&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 切到 master 分支，合并上游更新&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;master&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;merge&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;upstream/master&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;master&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 切到 custom 分支，合并 master 的更新&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;custom&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;merge&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;master&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;custom&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;流程图&lt;a href=&quot;#流程图&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;sequenceDiagram
    participant U as 上游仓库 (upstream)
    participant L as 本地仓库
    participant P as 私有仓库 (origin)

    Note over L: 日常在 custom 分支开发
    L-&amp;gt;&amp;gt;L: git add &amp;amp; commit
    L-&amp;gt;&amp;gt;P: git push origin custom

    Note over L: 同步上游更新
    U-&amp;gt;&amp;gt;L: git fetch upstream
    L-&amp;gt;&amp;gt;L: git checkout master
    L-&amp;gt;&amp;gt;L: git merge upstream/master
    L-&amp;gt;&amp;gt;P: git push origin master
    L-&amp;gt;&amp;gt;L: git checkout custom
    L-&amp;gt;&amp;gt;L: git merge master
    L-&amp;gt;&amp;gt;P: git push origin custom&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;提交PR？贡献代码?&lt;a href=&quot;#提交pr贡献代码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;如果想要给上游官方仓库提交代码的话可以再添加一个你的fork仓库&lt;/p&gt;&lt;section&gt;&lt;h4&gt;第一步：在 GitHub 上 Fork 原始仓库&lt;a href=&quot;#第一步在-github-上-fork-原始仓库&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;打开原始上游仓库的GitHub页面，点击右上角 “Fork” 按钮，创建你自己的 fork。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;第二步：添加 fork 为新的 remote&lt;a href=&quot;#第二步添加-fork-为新的-remote&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;remote&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;myfork&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://github.com/lmb666666/Firefly.git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;（fork 后的仓库地址通常是 &lt;code&gt;https://github.com/你的用户名/Firefly.git&lt;/code&gt;）&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;第三步：基于 upstream/master 创建功能分支&lt;a href=&quot;#第三步基于-upstreammaster-创建功能分支&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;fetch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;upstream&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-b&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;feature/你的功能名称&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;upstream/master&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;第四步：把你想提交的改动 cherry-pick 或手动应用到功能分支上&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cherry-pick&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;你的commit-hash&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;第五步：推送到 fork&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;myfork&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;feature/你的功能名称&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;第六步：在 GitHub 上创建 PR&lt;/strong&gt;
打开你的 fork 页面，点击 “Contribute” → “Open pull request”，选择向 &lt;code&gt;CuteLeaf/Firefly&lt;/code&gt; 的 &lt;code&gt;master&lt;/code&gt; 分支提交。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;碎碎念&lt;a href=&quot;#碎碎念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;写完这篇博文已经2月18日了，寒假过了一大半了，好想让时间倒流。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://bu.dusays.com/2026/02/18/69958464a0213.webp&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;悲伤&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>近期小记（1）</title><link>https://blog.liang.one/posts/9/</link><guid isPermaLink="true">https://blog.liang.one/posts/9/</guid><pubDate>Sat, 22 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;前情提要&lt;a href=&quot;#前情提要&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;转眼间高中生活已经度过了两个月了，博客也搁了两个月没更新&lt;img src=&quot;https://cdn.jsdmirror.com/npm/sticker-heo@2022.7.5/Sticker-100/%E8%A2%AB%E6%89%93.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;趁着这几天闲下来有点时间，就来写一篇聊聊最近发生的事情&lt;/p&gt;&lt;p&gt;最近为啥有时间? 因为我没去研学&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;研学&lt;a href=&quot;#研学&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;期中考完，学校组织高一年级研学，研学地点是河南或山东，班级投票决定。我们班最后定的是&lt;strong&gt;河南&lt;/strong&gt;线，但是我感觉河南线的活动没啥意思（个人认为），在这里祝旅行愉快。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/11/22/6921a13e0ba0d.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;那不去研学的呢？仍然要去学校&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://cdn.jsdmirror.com/npm/sticker-heo@2022.7.5/Sticker-100/%E6%9C%89%E6%B2%A1%E6%9C%89%E6%90%9E%E9%94%99.png&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;有没有搞错&lt;/figcaption&gt;&lt;/figure&gt;倒不是去上课，而是听讲座和搞项目式学习。&lt;p&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;CloudFlare崩了&lt;a href=&quot;#cloudflare崩了&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;11月18号的晚上，我愉快的在互联网上冲浪，很不对劲的是，好多国外的网站全都爆500错误了&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/11/22/6921a1e3bac62.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;看了看q群，才知道赛博菩萨cloudflare崩溃了。据说是内部出bug了，是技术问题。&lt;/p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/11/22/6921a2d0eaa77.webp&quot; alt=&quot;img&quot; /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;生病了&lt;a href=&quot;#生病了&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;最近经常咳嗽，头也痛，应该是降温导致的。&lt;/p&gt;&lt;p&gt;想起了史铁生在《病隙碎笔》中的一句话&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“发烧了，才知道不发烧的日子多么清爽。咳嗽了，才体会不咳嗽的嗓子多么安详。刚坐上轮椅时，我老想，不能直立行走岂不是把人的特点搞丢了？便觉天昏地暗。等又生出褥疮，一连数日只能歪七扭八地躺着，才看见端坐的日子其实多么晴朗。后来又患尿毒症，经常昏昏然不能思想，就更加怀恋起往日时光。”&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;网站建设&lt;a href=&quot;#网站建设&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;虽然没咋更新文章，但是我将我的网站、服务器和工作流都做了升级。&lt;/p&gt;&lt;p&gt;关于网站，我使用了&lt;a href=&quot;https://cdn.jsdmirror.com/&quot;&gt;jsdmirror&lt;/a&gt;来加速静态资源访问，去掉了感觉没啥用的字体。&lt;/p&gt;&lt;p&gt;关于服务器，我在Q云上买了台2g2h20m的香港机，配合浪浪云的香港机一起使用。&lt;/p&gt;&lt;p&gt;然后改动最大的就是整个博客部署工作流的升级，原来我是在本地电脑上构建博客静态文件，然后推送到github触发webhook并执行服务器自动拉取。&lt;/p&gt;&lt;p&gt;但现在我改为直接将全部文件推到github，用GitHub actions全自动构建，之后触发webhook实现拉取。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;flowchart TD

  A[本地电脑] --&amp;gt;|Push| B[GitHub]

  B --&amp;gt; C[构建静态文件]

  C --&amp;gt; D[静态分支]

  D --&amp;gt;|WebHook| E[服务器拉取] 
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;好处呢？我感觉最大的好处是快捷了，不用在本地等清理、构建、压缩等流程。并且全部文件推送到GitHub还便于后续的更改和查看。&lt;/p&gt;&lt;p&gt;后面我会单独写一篇实现教程&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;giffgaff手机卡&lt;a href=&quot;#giffgaff手机卡&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在闲鱼上买了张英国giffgaff手机卡，主要用来接短信验证码注册一些国外的平台&lt;/p&gt;&lt;p&gt;翻了翻各大论坛，这手机卡每半年发条短信就能保号，使用成本很低&lt;/p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/11/22/6921d10f54ca8.webp&quot; /&gt;&lt;p&gt;接tg，google等验证码也没问题&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;未完待续&lt;a href=&quot;#未完待续&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;想不到写啥了，未完待续吧&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>修复Twikoo获取QQ昵称的问题</title><link>https://blog.liang.one/posts/8/</link><guid isPermaLink="true">https://blog.liang.one/posts/8/</guid><pubDate>Mon, 06 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;注意&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Nice猫api失效了，可以使用&lt;code&gt;https://uapis.cn/api/v1/social/qq/userinfo?qq=&lt;/code&gt;代替，同时将下文的&lt;code&gt;e.data.name&lt;/code&gt;改为&lt;code&gt;e.nickname&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;今天调试twikoo的时候发现了个bug，输入qq号后无法自动获取昵称&lt;/p&gt;
&lt;p&gt;如下所示&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/06/68e33039c7ea7.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;原因就是api失效了，强迫症看着很不爽，自己动手修复一下&lt;/p&gt;
&lt;p&gt;首先下载&lt;strong&gt;twikoo.min.js&lt;/strong&gt;文件到本地，随便找个编辑器打开，搜索&lt;strong&gt;api.qjqq.cn&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/06/68e3310a44299.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;将这个api修改为&lt;a href=&quot;https://api.nsmao.net/&quot;&gt;Nice猫&lt;/a&gt;api，key可以在&lt;a href=&quot;https://api.nsmao.net/&quot;&gt;Nice猫&lt;/a&gt;的控制台获取
&lt;a href=&quot;https://api.nsmao.net/&quot;&gt;Nice猫API&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://api.nsmao.net/api/qq/v1/query?key=你的KEY&amp;amp;qq=&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/06/68e331a4a61ba.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;因为请求新api后返回的昵称信息在&lt;strong&gt;data.name&lt;/strong&gt;中，所以我们还要把下面&lt;code&gt;e.name&lt;/code&gt;改为&lt;code&gt;e.data.name&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/06/68e33268719ce.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;修改完后可以选择将js保存在本地或上传到你的存储，然后在&lt;code&gt;config.anzhiyu.yml&lt;/code&gt;中引入&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/06/68e33315d677c.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;修复完成，效果可以看本站&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e11f567d732.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;</content:encoded></item><item><title>N1盒子刷入casaos，秒变家庭nas</title><link>https://blog.liang.one/posts/7/</link><guid isPermaLink="true">https://blog.liang.one/posts/7/</guid><pubDate>Sat, 04 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;前情提要&lt;a href=&quot;#前情提要&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;之前在闲鱼上买了几个n1盒子，正好假期有时间就来刷个casaos折腾一下&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e0e2376d2d9.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;准备环节&lt;a href=&quot;#准备环节&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;斐讯N1盒子&lt;/li&gt;
&lt;li&gt;u盘&lt;/li&gt;
&lt;li&gt;电脑&lt;/li&gt;
&lt;li&gt;脑子、眼睛、手&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;如果是没有刷过机的n1好像是要先降级再短接，然后adb设置从u盘启动，具体的我也不多说了，b站上都有教程&lt;/p&gt;&lt;div&gt;
    
&lt;/div&gt;&lt;p&gt;本文就默认可以从u盘启动了&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;实操&lt;a href=&quot;#实操&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;先从github上下载armbian系统镜像&lt;/li&gt;
&lt;/ol&gt;&lt;a href=&quot;https://github.com/ophub/amlogic-s9xxx-armbian&quot; target=&quot;_blank&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;ophub&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/&lt;/div&gt;&lt;div&gt;amlogic-s9xxx-armbian&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Waiting for api.github.com...&lt;/div&gt;&lt;div&gt;&lt;div&gt;00K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;span&gt;Waiting...&lt;/span&gt;&lt;/div&gt;&lt;/a&gt;&lt;p&gt;n1盒子是晶晨s905d芯片，可以 &lt;code&gt;Ctrl&lt;/code&gt; + &lt;code&gt;F&lt;/code&gt; 搜索一下&lt;/p&gt;&lt;p&gt;这四个镜像就是内核版本不同，看需求下载
&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e0e366515ac.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;把armbian刷入u盘&lt;/p&gt;
&lt;p&gt;我使用的烧录工具是&lt;a href=&quot;https://rufus.ie/zh/&quot;&gt;Rufus&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;注意&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;注意！先备份u盘内的文件，烧录会格式化u盘！&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e0e605116c4.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;把u盘插入n1盒子上靠近hdmi接口的usb接口上，怼上电源，怼上网线
不出意外的话，我们就可以登录armbian了&lt;/p&gt;
&lt;p&gt;去路由器后台看一下armbian的ip,然后随便找个终端用ssh登录&lt;code&gt;ssh root@192.168.1.xx&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;armbian的root账户默认密码为1234
&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e0e79f8bcc5.webp&quot; alt=&quot;&quot; /&gt;
然后按照提示配置一下
&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e1051371027.webp&quot; alt=&quot;&quot; /&gt;
之后输入armbian-install进行写入到emmc
&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e1063014658.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e10676c66a6.webp&quot; alt=&quot;&quot; /&gt;
选择设备这里就输入n1的id也就是&lt;strong&gt;101&lt;/strong&gt;，然后文件系统我选的是ext4
安装完成后，断电源拔u盘，然后再接电源&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因为路由器给n1分配的ip会变动，不方便我们使用，所以接下来配置网络。&lt;/p&gt;
&lt;p&gt;输入armbian-config命令&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;提示&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;最好有科学上网环境，否则有概率无法正常运行，文后有设置代理教程&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e111aae63ab.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e111b86b38c.webp&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e111c32b6d9.webp&quot; alt=&quot;&quot; /&gt;
依次选择network—&amp;gt;eth0—&amp;gt;static set ip
之后自定义一个静态ip&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;之后我们就可以安装casaos了&lt;/p&gt;
&lt;p&gt;输入命令&lt;code&gt;curl -fsSL https://get.casaos.io | sudo bash&lt;/code&gt;
&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e1139df0fe0.webp&quot; alt=&quot;&quot; /&gt;
安装后访问刚才设置的静态IP就可以看到casaos的界面了&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;科学上网&lt;a href=&quot;#科学上网&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;因为网络原因，下载文件的时候很容易卡住，我的解决办法是电脑用clash等工具局域网代理n1
&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e1146bc51b2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;之后在armbian上用以下命令设置代理，注意端口号和你的代理工具要一致&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export http_proxy=http://代理地址:端口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export https_proxy=http://代理地址:端口&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e114c8c942a.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/04/68e11f567d732.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>利用NPM和CDN加速静态文件</title><link>https://blog.liang.one/posts/6/</link><guid isPermaLink="true">https://blog.liang.one/posts/6/</guid><pubDate>Sat, 12 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;最近在折腾博客速度优化，发现浏览器控制台里总有几个文件加载得特别慢——尤其是那些体积不小的字体文件😔。想起来之前看过安知鱼大佬关于 npm 图床的文章，思路很赞。于是琢磨着不如把文件丢到 npm 上托管，再用个靠谱的 CDN 镜像加速引入，这不就快起来了？&lt;/p&gt;
&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de18e3a9f27.webp&quot; alt=&quot;PixPin_2025-07-08_15-36-12&quot; /&gt;
&lt;p&gt;实践下来效果不错，操作也不复杂，记录下步骤供参考：&lt;/p&gt;
&lt;section&gt;&lt;h3&gt;操作步骤&lt;a href=&quot;#操作步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;注册npm账号&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.npmjs.com/signup/&quot;&gt;npm注册页&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de18f5395ad.webp&quot; /&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;切换回原生源&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm config set registry https://registry.npmjs.org&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在电脑终端里登录npm&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 仅第一次使用需要添加用户，之后会提示你输入你的npm账号密码以及注册邮箱&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm adduser&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 非第一次使用直接登录即可，之后会提示你输入你的npm账号密码以及注册邮箱&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm login&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de193cd2a7f.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;​      按 &lt;code&gt;CTRL&lt;/code&gt; + &lt;code&gt;单击&lt;/code&gt; 在浏览器中打开登录页面，登录即可&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de198d6c504.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;把你想托管的文件（比如字体、图片）放进一个文件夹，在这个文件夹里打开终端，执行初始化命令：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm init&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;命令行会问你包名、版本号等信息，一路敲回车用默认值也完全 OK。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de19aa7ad0c.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;然后输入发布指令，我们就可以把包发布到 npm 上了。&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm publish&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de19b1a83d7.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;​            在npm官网中也能看到我们发布的文件&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de19b99bee5.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;加速镜像&lt;a href=&quot;#加速镜像&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;文件在 npm 上了，怎么高速引入你的博客呢？试试这些公共 CDN 镜像服务吧！直接把下面链接里的占位符换成你的包信息就行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#JSDMirror 全球cdn 速度快&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://cdn.jsdmirror.com/npm/npm/:package@:version/:file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#elemecdn 更新慢，部分包缺少&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://npm.elemecdn.com/:package@:version/:file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#Staticfile（七牛云） 同步cdnjs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://cdn.staticfile.org/${cdnjs_name}/${version}/${min_cdnjs_file}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de19c4735ad.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>利用网盘秒传原理，白嫖付费资源</title><link>https://blog.liang.one/posts/5/</link><guid isPermaLink="true">https://blog.liang.one/posts/5/</guid><pubDate>Thu, 30 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;网盘秒传&lt;/strong&gt;功能一直是许多用户津津乐道的技术亮点。它能够在几秒钟内完成大文件的上传，极大地节省了时间和带宽资源。那么&lt;strong&gt;网盘秒传&lt;/strong&gt;的原理是什么呢？我们又能如何利用它的机制呢？&lt;/p&gt;
&lt;section&gt;&lt;h1&gt;网盘秒传的奥秘（此节内容由AI生成）&lt;a href=&quot;#网盘秒传的奥秘此节内容由ai生成&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h3&gt;一、文件指纹技术：秒传的核心&lt;a href=&quot;#一文件指纹技术秒传的核心&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;文件指纹技术是网盘秒传功能的核心。其原理是对用户上传的文件进行哈希运算，生成一个唯一的指纹（哈希值），然后将这个指纹与服务器中已有的文件指纹进行比对。如果服务器中已经存在相同的指纹，说明该文件已经上传过，网盘就会直接引用服务器上的文件，而无需再次上传文件内容。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;二、去重存储技术：节省空间与提升效率&lt;a href=&quot;#二去重存储技术节省空间与提升效率&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;去重存储技术是网盘秒传功能的重要支撑。它通过以下几种方式实现：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;单实例存储&lt;/strong&gt;：每个文件只存储一份，即使多个用户上传相同的文件，也只占用一份存储空间。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;块级去重&lt;/strong&gt;：将文件分割成多个小块，对每个小块分别计算哈希值并进行去重存储。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;元数据管理&lt;/strong&gt;：通过元数据记录文件块的指纹和存储位置，实现高效的文件去重和管理。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;三、文件分块技术：优化上传效率&lt;a href=&quot;#三文件分块技术优化上传效率&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;文件分块技术是网盘秒传的另一项关键技术。它将大文件分割成多个小块，分别计算每个小块的哈希值。如果某个小块的哈希值与服务器中的某个小块匹配成功，就无需重复上传该小块。这种方法不仅提高了上传效率，还减少了网络传输的数据量。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;四、高效传输协议：提升传输速度&lt;a href=&quot;#四高效传输协议提升传输速度&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;网盘秒传功能还依赖于高效的传输协议。常见的协议包括：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;HTTP/2.0&lt;/strong&gt;：相比传统的HTTP/1.1，HTTP/2.0具有多路复用、头部压缩等特性，大幅提升传输效率。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QUIC协议&lt;/strong&gt;：由Google开发的QUIC协议，通过减少握手次数、优化传输路径等方式，提升传输速度和稳定性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;P2P技术&lt;/strong&gt;：通过点对点传输技术，直接在用户之间传输文件，减少服务器压力，提高传输速度。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;五、秒传流程：从客户端到服务器&lt;a href=&quot;#五秒传流程从客户端到服务器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;以百度网盘为例，其秒传功能的实现过程如下：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;客户端计算文件指纹&lt;/strong&gt;：用户选择要上传的文件，客户端对文件进行哈希运算，生成文件指纹。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;上传指纹信息&lt;/strong&gt;：客户端将文件指纹发送到服务器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;服务器比对指纹&lt;/strong&gt;：服务器将收到的指纹与数据库中的指纹进行比对。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;秒传判断&lt;/strong&gt;：如果指纹匹配成功，服务器返回文件的存储路径，客户端直接引用该路径，完成秒传。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;利用秒传原理，快速获取付费文件&lt;a href=&quot;#利用秒传原理快速获取付费文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;免责声明&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;本文章仅限用于学习和研究目的；不得将下述内容用于商业或者非法用途，否则，一切后果请用户自负。本站信息来自网络，版权争议与本站无关。请支持正版软件，购买注册，得到更好的正版服务。如有侵权请邮件与我们联系处理。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;知道了网盘秒传的原理我们便可以加以利用&lt;/p&gt;&lt;p&gt;在某些资源站上下载资源常常会收取&lt;strong&gt;费用&lt;/strong&gt;，&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de1871e0b5b.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;但是如果我们文件的&lt;strong&gt;md5&lt;/strong&gt;、&lt;strong&gt;文件名&lt;/strong&gt;、&lt;strong&gt;文件大小&lt;/strong&gt;，并且也得知了这个文件曾&lt;strong&gt;被上传过&lt;/strong&gt;某个网盘，那么我们便可以通过一些技术手段轻松获取文件到自己的网盘账号中。&lt;/p&gt;&lt;p&gt;废话不多说，开始实操&lt;/p&gt;&lt;section&gt;&lt;h3&gt;寻找目标&lt;a href=&quot;#寻找目标&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de1885c18dd.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;如上，我们知道了这个系统镜像的一系列校验信息，并且我也知道了这个文件被上传过123网盘&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;获取并修改文件上传请求&lt;a href=&quot;#获取并修改文件上传请求&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;打开123网盘网页端，打开浏览器的控制台并选择&lt;strong&gt;网络&lt;/strong&gt;标签页&lt;/p&gt;&lt;p&gt;随机上传一个文件&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de1895a874a.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;我们可以找到类型为&lt;strong&gt;XHR&lt;/strong&gt;的&lt;strong&gt;upload_request&lt;/strong&gt;请求&lt;/p&gt;&lt;p&gt;右键这一项，选择以&lt;strong&gt;PowerShell&lt;/strong&gt;格式复制&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de18a4f0cf1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;使用任意文本编辑器，粘贴内容，需要我们修改的只有&lt;strong&gt;etag&lt;/strong&gt;、&lt;strong&gt;filename&lt;/strong&gt;、&lt;strong&gt;size&lt;/strong&gt;这三项&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de18ace1a87.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;注意，md5值需要全部&lt;strong&gt;小写&lt;/strong&gt;英文字母，文件名称需要带后缀，文件大小单位为字节&lt;/p&gt;&lt;p&gt;修改完成后全部复制，打开系统PowerShell，粘贴内容并回车&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de18b47ae59.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;看到状态码为200即为成功&lt;/p&gt;&lt;p&gt;然后刷新网盘页面即可看到我们的目标文件&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de18bb25925.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>YesPlayMusic | 高颜值的第三方网易云播放器</title><link>https://blog.liang.one/posts/4/</link><guid isPermaLink="true">https://blog.liang.one/posts/4/</guid><pubDate>Sun, 01 Sep 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;音乐软件是我电脑上最不可缺少的软件之一，看惯了网易云的设计，有没有别的好看简洁的流媒体播放器呢？答案是有的
&lt;img src=&quot;https://bu.dusays.com/2025/10/01/68dd42dc20dbe.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;软件介绍&lt;a href=&quot;#软件介绍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;​	YesPlayMusic一款第三方&lt;strong&gt;网易云&lt;/strong&gt;播放器，界面简洁好看，功能丰富&lt;/p&gt;&lt;p&gt;支持网易云账号登录、MV 播放、&lt;strong&gt;无任何社交功能&lt;/strong&gt;、显示歌词、暗色模式等功能，最重要是比官方客户端好看，支持 Windows、macOS、Linux&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;✅ 使用 Vue.js 全家桶开发&lt;/li&gt;
&lt;li&gt;🔴 网易云账号登录&lt;/li&gt;
&lt;li&gt;📺 MV 播放&lt;/li&gt;
&lt;li&gt;📃 支持歌词显示&lt;/li&gt;
&lt;li&gt;🚫🤝 无任何社交功能&lt;/li&gt;
&lt;li&gt;🌎️ 海外用户可直接播放（需要登录网易云账号）&lt;/li&gt;
&lt;li&gt;🔐 支持 &lt;a href=&quot;https://github.com/nondanee/UnblockNeteaseMusic&quot;&gt;UnblockNeteaseMusic&lt;/a&gt;，自动使用 QQ/酷狗/酷我音源替换变灰歌曲链接 （网页版不支持）&lt;/li&gt;
&lt;li&gt;⏭️ 支持 MediaSession API，可以使用系统快捷键操作上一首下一首&lt;/li&gt;
&lt;li&gt;✔️ 每日自动签到（手机端和电脑端同时签到）&lt;/li&gt;
&lt;li&gt;🌚 Light/Dark Mode 自动切换&lt;/li&gt;
&lt;li&gt;👆 支持 Touch Bar&lt;/li&gt;
&lt;li&gt;🖥️ 支持 PWA，可在 Chrome/Edge 里点击地址栏右边的 ➕ 安装到电脑&lt;/li&gt;
&lt;li&gt;🙉 支持显示歌曲和专辑的 Explicit 标志&lt;/li&gt;
&lt;li&gt;🛠 更多特性开发中&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;软件界面&lt;a href=&quot;#软件界面&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/01/68dd41bfc9850.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/01/68dd41bfb6fb8.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/01/68dd41bfb76e2.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/01/68dd41bfb70ba.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/01/68dd41bf729a8.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;软件还支持UnblockNeteaseMusic，解锁网易云音乐客户端变灰歌曲&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/01/68dd41bfac6d8.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;软件下载&lt;a href=&quot;#软件下载&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/qier222/YesPlayMusic/releases&quot;&gt;GitHub 下载&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Lively Wallpaper开源壁纸软件</title><link>https://blog.liang.one/posts/3/</link><guid isPermaLink="true">https://blog.liang.one/posts/3/</guid><pubDate>Tue, 27 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h3&gt;前情提要&lt;a href=&quot;#前情提要&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;​	在众多电脑壁纸软件中，WallpaperEngine（壁纸引擎）以其强大的扩展性和内容丰富性位居首位&lt;/p&gt;&lt;p&gt;​	&lt;strong&gt;BUT&lt;/strong&gt;其售价在steam上为19大洋，虽然不贵，但是秉承能省则省的原则，能否找到一款免费又能与其媲美的壁纸软件呢？答案是有的&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;软件介绍&lt;a href=&quot;#软件介绍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;​	Lively Wallpaper是一款开源的视频桌面软件，功能和Wallpaper Engine类似。软件是免费的，也无需依赖steam，不过遗憾的是，视频包只能自己寻找或者社区下载。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de16d72c642.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de16e874288.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de1701502c8.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;壁纸获取及使用&lt;a href=&quot;#壁纸获取及使用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;软件自带了一些壁纸，没有喜欢的也可以在壁纸网站中下载导入&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://zhutix.com/animated/&quot;&gt;致美化 - 探索及下载丰富多彩的电脑主题、壁纸、图标、皮肤等酷炫的美化素材及教程&lt;/a&gt;
下载完壁纸之后如何使用呢？&lt;/p&gt;&lt;p&gt;下载的通常是zip压缩文件，解压出图片或视频类型文件&lt;/p&gt;&lt;p&gt;Lively Wallpaper中点击添加壁纸导入即可&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;下载&lt;a href=&quot;#下载&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.rocksdanister.com/lively/&quot;&gt;官网下载&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://apps.microsoft.com/detail/9ntm2qc6qws7?gl=CN&amp;amp;hl=zh-cn&quot;&gt;微软商店&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>PicList 强大的图片上传和管理软件</title><link>https://blog.liang.one/posts/2/</link><guid isPermaLink="true">https://blog.liang.one/posts/2/</guid><pubDate>Mon, 26 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这几天把博客搭建好了，在写文章的时候遇到了个新问题，如何便捷的上传和管理图片呢？&lt;/p&gt;
&lt;p&gt;本文推荐一款名叫PicList的开源工具，它可以完美解决此问题，帮助我们提高写作效率。&lt;/p&gt;
&lt;section&gt;&lt;h3&gt;好处优势？&lt;a href=&quot;#好处优势&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;云存储管理&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;完整的多平台云存储管理功能，上传、下载、删除一站式解决&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de0edccde37.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;图床类型丰富&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de0f0f30a4e.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;图片处理功能&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;可以添加图片水印、文字水印，转换格式、压缩等等实用功能&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de0f2b917c1.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Mini窗口&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;完美兼容PicGo&lt;/p&gt;
&lt;p&gt;基于PicGo最新版本，完美兼容已有PicGo插件和软件搭配生态&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de0f8604b83.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;软件搭配&lt;/p&gt;
&lt;p&gt;Typora可以完美搭配PicList实现粘贴上传&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de166ca3b0a.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;p&gt;PicList的功能远不止上述这些，了解更多可以前往官方文档
&lt;a href=&quot;https://piclist.cn/app.html&quot;&gt;Piclist官方文档&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h3&gt;下载安装&lt;a href=&quot;#下载安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://piclist.cn/app#%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85&quot;&gt;官网下载&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Kuingsmile/PicList/releases/latest&quot;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>Hexo永久链接优化</title><link>https://blog.liang.one/posts/1/</link><guid isPermaLink="true">https://blog.liang.one/posts/1/</guid><pubDate>Sun, 25 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;使用hexo博客时，访问文章的默认链接看起来十分杂乱，使用hexo-abbrlink插件可以完美解决这一痛点&lt;/p&gt;
&lt;a href=&quot;https://github.com/ohroy/hexo-abbrlink&quot; target=&quot;_blank&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;ohroy&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/&lt;/div&gt;&lt;div&gt;hexo-abbrlink&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Waiting for api.github.com...&lt;/div&gt;&lt;div&gt;&lt;div&gt;00K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;span&gt;Waiting...&lt;/span&gt;&lt;/div&gt;&lt;/a&gt;
&lt;section&gt;&lt;h3&gt;食用教程&lt;a href=&quot;#食用教程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;安装插件
&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de17c317318.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#安装插件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hexo-abbrlink&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--save&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;--registry=https://registry.npmmirror.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配置链接格式&lt;/p&gt;
&lt;p&gt;打开 hexo根目录/_config.yml&lt;/p&gt;
&lt;p&gt;修改permalink为如下内容，二选一即可&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#结尾无.html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;posts/:abbrlink/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#结尾有.html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;posts/:abbrlink.html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de17e715f8c.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;插件配置&lt;/p&gt;
&lt;p&gt;在当前配置文件中添加如下代码&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# hexo-abbrlink&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;abbrlink&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;alg&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;crc16&lt;/span&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;#支持crc16和crc32算法（默认crc16）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;rep&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;hex&lt;/span&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;#支持dec和hex值（默认dec）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;drafts&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;#(true)Process draft,(false)Do not process draft. false(default)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;# Generate categories from directory-tree&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;# depth: the max_depth of directory-tree you want to generate, should &amp;gt; 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;auto_category&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;enable&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;#true(default)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;depth&lt;/span&gt;&lt;span&gt;:        &lt;/span&gt;&lt;span&gt;#3(default)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;     &lt;/span&gt;&lt;span&gt;over_write&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;auto_title&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;#enable auto title, it can auto fill the title by path&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;auto_date&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;#enable auto date, it can auto fill the date by time today&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;force&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;#enable force mode,in this mode, the plugin will ignore the cache, and calc the abbrlink for every post even it already had abbrlink.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://bu.dusays.com/2025/10/02/68de181e3a13e.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;通过配置alg和rep参数可以改变链接大小，如下&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#crc16 &amp;amp; hex&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://example.com/posts/64c8.html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# crc16 &amp;amp; dec&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://example.com/posts/67535.html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# crc32 &amp;amp; hex&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://example.com/posts/8dff18eb.html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# crc32 &amp;amp; dec&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://example.com/posts/1690092958.html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;</content:encoded></item></channel></rss>