<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Git on Jeanphilo Blog</title><link>https://shio-chan-dev.github.io/jeanblog/zh/categories/git/</link><description>Recent content in Git on Jeanphilo Blog</description><generator>Hugo -- 0.159.2</generator><language>zh-cn</language><lastBuildDate>Wed, 25 Feb 2026 09:27:18 +0800</lastBuildDate><atom:link href="https://shio-chan-dev.github.io/jeanblog/zh/categories/git/index.xml" rel="self" type="application/rss+xml"/><item><title>Git Worktree 使用教程：同仓库并行开发多个分支</title><link>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/git-worktree-usage-guide/</link><pubDate>Wed, 25 Feb 2026 09:27:18 +0800</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/git-worktree-usage-guide/</guid><description>一篇讲清 Git worktree 常用命令、典型场景、常见坑与最佳实践的中文教程，适合多分支并行开发与临时 hotfix。</description></item><item><title>Git 入门教程：从零开始管理代码版本</title><link>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/git-basics-getting-started/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/git-basics-getting-started/</guid><description>&lt;h3 id="标题"&gt;&lt;strong&gt;标题&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Git 入门教程：从零开始管理代码版本&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="副标题--摘要"&gt;&lt;strong&gt;副标题 / 摘要&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;一篇面向新手的 Git 基础使用指南，从初始化仓库、提交版本到远程协作，
用最少命令完成日常开发流转。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="目标读者"&gt;&lt;strong&gt;目标读者&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;初学者&lt;/strong&gt;：第一次接触 Git，希望快速上手基本命令。&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;/ul&gt;
&lt;hr&gt;
&lt;h3 id="背景--动机"&gt;&lt;strong&gt;背景 / 动机&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;没有版本管理时，常见的做法是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“先复制一份目录，改完再看看哪个好用。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这种方式很快会失控：文件版本混乱、无法回退、多人协作冲突频发。
Git 的价值在于&lt;strong&gt;记录每一次变更&lt;/strong&gt;，让你随时回到过去的任意状态，
并支持多人同时开发而不互相覆盖。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="核心概念"&gt;&lt;strong&gt;核心概念&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;仓库（Repository）&lt;/strong&gt;：一个包含代码与历史记录的目录。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工作区（Working Directory）&lt;/strong&gt;：你当前编辑的文件。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;暂存区（Staging Area）&lt;/strong&gt;：等待提交的文件清单。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提交（Commit）&lt;/strong&gt;：一次可追溯的版本快照。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;远程仓库（Remote）&lt;/strong&gt;：托管在服务器上的仓库，用于协作和备份。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="实践指南--步骤"&gt;&lt;strong&gt;实践指南 / 步骤&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;1️⃣ &lt;strong&gt;初始化仓库&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;2️⃣ &lt;strong&gt;查看当前状态&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;3️⃣ &lt;strong&gt;把文件加入暂存区&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;4️⃣ &lt;strong&gt;提交一次版本&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git commit -m &lt;span style="color:#e6db74"&gt;&amp;#34;init: first commit&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;5️⃣ &lt;strong&gt;绑定远程仓库并推送&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git remote add origin https://example.com/your/repo.git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git branch -M main
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git push -u origin main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="协作流程从克隆到提交"&gt;&lt;strong&gt;协作流程（从克隆到提交）&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;这一部分是团队协作的核心，决定了你能否安全、稳定地和他人同步代码。
掌握这些命令，能避免覆盖同事的提交，减少冲突和返工。&lt;/p&gt;</description></item><item><title>用Issue把问题写清楚，从0到TEMPLATE</title><link>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/write-clear-issues-from-zero-to-template/</link><pubDate>Tue, 11 Nov 2025 00:00:00 +0000</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/write-clear-issues-from-zero-to-template/</guid><description>&lt;h2 id="标题吸引且准确包含关键词"&gt;标题（吸引且准确，包含关键词）&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;用 Issue 模板把需求写清楚：从 0 配置 GitHub Issue Template 的完整指南&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="副标题--摘要"&gt;副标题 / 摘要&lt;/h2&gt;
&lt;p&gt;这篇文章手把手教你在 GitHub 仓库中配置「新需求 / Feature」与「Bug」Issue 模板，包括目录结构、YAML 表单、Markdown 模板以及常见坑。适合想让团队需求沟通更规范、减少反复追问的开发者和团队负责人。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="目标读者"&gt;目标读者&lt;/h2&gt;
&lt;p&gt;这篇文章适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;经常在 GitHub 仓库里开 Issue、提需求的 &lt;strong&gt;后端 / 前端 / 全栈工程师&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;想把团队需求提交流程「标准化」的 &lt;strong&gt;项目负责人 / TL / 架构师&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;对 GitHub 已经有基本使用经验、但还没用过 Issue 模板的 &lt;strong&gt;中级开发者&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;完全新手也能看懂，但会默认你知道：什么是仓库、什么是 Issue、如何提交代码等。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="背景--动机为什么要折腾-issue-模板"&gt;背景 / 动机：为什么要折腾 Issue 模板？&lt;/h2&gt;
&lt;p&gt;没有 Issue 模板时，日常可能是这样的：&lt;/p&gt;
&lt;ul&gt;
&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;/ul&gt;
&lt;p&gt;一句话 Issue：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“做个导出功能”
直接把所有人整破防。&lt;/p&gt;
&lt;/blockquote&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;：请求人脑子里很清楚，但写在 Issue 里的只有一句话；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;难以排期&lt;/strong&gt;：没有明确优先级和验收标准，大家都觉得自己的需求是 P0；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史难追踪&lt;/strong&gt;：几个月后再看这个 Issue，完全不知道当时怎么想的。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;而 GitHub 提供的 &lt;strong&gt;Issue Template&lt;/strong&gt;，其实就是一套「结构化提问」工具：&lt;/p&gt;</description></item><item><title>如何配置gitea</title><link>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/configure-gitea/</link><pubDate>Tue, 28 Oct 2025 00:00:00 +0000</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/configure-gitea/</guid><description>&lt;h1 id="-本地搭建-gitea打造你的私人-github含已有仓库导入指南"&gt;🚀 本地搭建 Gitea：打造你的私人 GitHub（含已有仓库导入指南）&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;副标题 / 摘要：&lt;/strong&gt;
本文将手把手教你在本地电脑上安装轻量级 Git 服务器 —— Gitea。
无需 root、不会影响系统环境，让你像在 GitHub 一样管理、查看和推送项目，还能导入已有仓库。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;目标读者：&lt;/strong&gt;
👉 适合个人开发者、独立工程师、小型团队技术负责人。
适用于初中级开发者，有 Git 基础即可上手。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-背景--动机"&gt;🧠 背景 / 动机&lt;/h2&gt;
&lt;p&gt;很多开发者希望：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在公司电脑或内网环境下托管代码；&lt;/li&gt;
&lt;li&gt;不想使用云端（如 GitHub、Gitee）；&lt;/li&gt;
&lt;li&gt;又希望有 Web 界面、Pull Request、代码浏览体验。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但 &lt;strong&gt;GitLab 太重&lt;/strong&gt;（动辄占用数 GB 内存），而 Gitea 则：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🌱 轻量级、单可执行文件、支持 PR、Wiki、Issue、CI/CD。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;只需几分钟，你就能拥有一个完全属于自己的“小型 GitHub”。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-核心概念"&gt;📘 核心概念&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;名称&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GitLab&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;功能最强大的开源 Git 平台，但资源占用高&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gitea&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;轻量级自托管 Git 服务，界面类似 GitHub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bare 仓库&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;只保存版本数据、不包含工作区的纯仓库&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pull Request&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;一个分支向另一个分支发起的合并请求&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SQLite&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Gitea 默认使用的轻量数据库，无需额外配置&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="-实践指南--安装步骤"&gt;🧩 实践指南 / 安装步骤&lt;/h2&gt;
&lt;h3 id="1-准备环境"&gt;1️⃣ 准备环境&lt;/h3&gt;
&lt;p&gt;系统要求：Linux / macOS / Windows 均可
推荐配置：内存 ≥ 512MB，磁盘 ≥ 1GB&lt;/p&gt;</description></item><item><title>掌握git提交规范,让团队协作更高效率</title><link>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/git-commit-conventions-team-efficiency/</link><pubDate>Sat, 25 Oct 2025 00:00:00 +0000</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/git-commit-conventions-team-efficiency/</guid><description>&lt;h3 id="标题"&gt;&lt;strong&gt;标题&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;🚀 从「feat」到「fix」：掌握 Git 提交规范，让团队协作与自动化更高效&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="副标题--摘要"&gt;&lt;strong&gt;副标题 / 摘要&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;一篇为开发者准备的实用指南，带你理解并掌握业界通行的 Git 提交信息标准（Conventional Commits），
从 commit 标签（如 &lt;code&gt;feat:&lt;/code&gt;、&lt;code&gt;fix:&lt;/code&gt;）到自动生成 changelog，一次学会写出高质量的提交记录。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="目标读者"&gt;&lt;strong&gt;目标读者&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;初学者&lt;/strong&gt;：刚开始使用 Git，想养成规范提交的习惯。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中级开发者&lt;/strong&gt;：希望让提交信息对团队和 CI 工具更友好。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;团队负责人 / 架构师&lt;/strong&gt;：想建立统一的代码提交标准，提升协作与版本管理效率。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="背景--动机"&gt;&lt;strong&gt;背景 / 动机&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;大多数开发者写提交信息的方式都是这样的：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“update code”
“fix bug”
“修改东西”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这类信息短期可读，长期无用。
当团队人数增多、项目复杂时，&lt;strong&gt;无法追踪改动意图&lt;/strong&gt;，也无法让自动化工具正确识别变更类型。
这就是为什么业界推出了 &lt;strong&gt;Conventional Commits&lt;/strong&gt;：
一个简洁统一的 commit 语法标准，让 Git 提交&lt;strong&gt;可读、可追踪、可自动化&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="核心概念"&gt;&lt;strong&gt;核心概念&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Conventional Commits&lt;/strong&gt; 是一种提交信息格式约定，它规定了提交消息的结构：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;lt;type&amp;gt;(&amp;lt;scope&amp;gt;): &amp;lt;subject&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;footer&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt;：提交类型，如 &lt;code&gt;feat&lt;/code&gt;、&lt;code&gt;fix&lt;/code&gt;、&lt;code&gt;docs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scope&lt;/code&gt;：作用范围，可选（如 &lt;code&gt;ui&lt;/code&gt;、&lt;code&gt;api&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;subject&lt;/code&gt;：简短描述（不超过 50 字）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;body&lt;/code&gt;：详细说明（可选）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;footer&lt;/code&gt;：备注（如 BREAKING CHANGE）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="实践指南--步骤"&gt;&lt;strong&gt;实践指南 / 步骤&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;1️⃣ &lt;strong&gt;设置 Git 编辑器为 Neovim（可选）&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>局域网Git Bare</title><link>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/lan-git-bare-repo/</link><pubDate>Wed, 22 Oct 2025 00:00:00 +0000</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/lan-git-bare-repo/</guid><description>&lt;h1 id="在局域网访问-windows-wsl2-上的-git-bare-仓库"&gt;在局域网访问 Windows WSL2 上的 Git Bare 仓库&lt;/h1&gt;
&lt;p&gt;在开发中，我们经常需要在多台电脑之间共享 Git 仓库。如果你在 Windows 上使用 WSL2，并且想在同一局域网的其他电脑访问 WSL2 上的 Git bare 仓库，本文将一步步教你实现。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1-在-wsl2-创建-git-bare-仓库"&gt;1. 在 WSL2 创建 Git Bare 仓库&lt;/h2&gt;
&lt;p&gt;打开 WSL2 终端，进入你想存放仓库的目录，执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git init --bare my_project.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;my_project.git&lt;/code&gt; 是 bare 仓库，不含工作区，仅用于推送和拉取。&lt;/li&gt;
&lt;li&gt;bare 仓库就像远程仓库一样，可以被克隆和操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="2-配置-wsl2-的-ssh-服务"&gt;2. 配置 WSL2 的 SSH 服务&lt;/h2&gt;
&lt;p&gt;为了让其他电脑访问仓库，需要通过 SSH 访问 WSL2。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安装 SSH 服务：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install openssh-server -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;启动 SSH 服务：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo service ssh start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;检查 SSH 服务状态：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo service ssh status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="4"&gt;
&lt;li&gt;默认端口是 22，可以在 &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt; 修改。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="3-获取-wsl2-ip-地址"&gt;3. 获取 WSL2 IP 地址&lt;/h2&gt;
&lt;p&gt;在 WSL2 终端运行：&lt;/p&gt;</description></item><item><title>git分支管理方法</title><link>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/git-branching-workflow/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/git-branching-workflow/</guid><description>&lt;h1 id="-简化-git-分支工作流个人--小团队"&gt;🌿 简化 Git 分支工作流（个人 / 小团队）&lt;/h1&gt;
&lt;p&gt;本工作流基于 Git Flow 精简而来，适合个人或小团队，既规范又不复杂。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-1-主分支长期分支"&gt;🚀 1. 主分支（长期分支）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;main&lt;/code&gt;&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;永远保持稳定、可发布的状态。&lt;/li&gt;
&lt;li&gt;部署到生产环境的代码都来自这里。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;对于小团队，通常只需要 &lt;code&gt;main&lt;/code&gt;，不需要维护 &lt;code&gt;develop&lt;/code&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="-2-功能开发feature-branch"&gt;🛠️ 2. 功能开发（Feature Branch）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;分支命名：&lt;code&gt;feature/&amp;lt;功能名&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;用途：开发新功能，完成后合并回 &lt;code&gt;main&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;示例：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
feature/login-api
feature/user-profile
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;流程：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 从 main 创建功能分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git checkout -b feature/login-api main
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 开发完成后，合并到 main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git checkout main
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git merge feature/login-api
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git branch -d feature/login-api
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="-3-bug-修复bugfix-branch"&gt;🐞 3. Bug 修复（Bugfix Branch）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;分支命名：&lt;code&gt;bugfix/&amp;lt;问题名&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;用途：修复测试或开发环境的 bug。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;示例：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;bugfix/fix-login-redirect
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;流程同 feature 分支，完成后合并回 &lt;code&gt;main&lt;/code&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-4-紧急修复hotfix-branch"&gt;🔥 4. 紧急修复（Hotfix Branch）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;分支命名：&lt;code&gt;hotfix/&amp;lt;问题名&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;用途：生产环境出现严重问题时的快速修复。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;示例：&lt;/p&gt;</description></item><item><title>在本地使用git裸仓库实现开发环境和测试环境隔离</title><link>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/git-bare-repo-dev-test-isolation/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><guid>https://shio-chan-dev.github.io/jeanblog/zh/notes/git-notes/git-bare-repo-dev-test-isolation/</guid><description>&lt;h1 id="在本地使用-git-裸仓库实现开发环境和测试环境隔离"&gt;在本地使用 Git 裸仓库实现开发环境和测试环境隔离&lt;/h1&gt;
&lt;p&gt;在全栈开发的过程中，我们常常遇到一个问题：&lt;strong&gt;开发环境和测试环境如何隔离&lt;/strong&gt;？
很多人第一反应是用 GitHub 或 GitLab 来托管代码，但如果项目涉及隐私，不方便放在公共仓库，那该怎么办呢？&lt;/p&gt;
&lt;p&gt;其实，Git 是分布式的，我们完全可以在 &lt;strong&gt;本地电脑上建立一个“裸仓库 (bare repo)”&lt;/strong&gt;，当作“远程仓库”来用，从而实现 &lt;strong&gt;开发环境 → 测试环境&lt;/strong&gt; 的代码迁移和同步。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="什么是裸仓库-bare-repository"&gt;什么是裸仓库 (bare repository)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;普通 Git 仓库（&lt;code&gt;git init&lt;/code&gt;）包含 &lt;strong&gt;工作区 + .git 元数据&lt;/strong&gt;，可以直接编辑文件。&lt;/li&gt;
&lt;li&gt;裸仓库（&lt;code&gt;git init --bare&lt;/code&gt;）只有 Git 的版本信息，没有工作区，不能直接编辑文件，通常作为 &lt;strong&gt;远程仓库&lt;/strong&gt; 来存储和同步代码。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单理解：&lt;/p&gt;
&lt;ul&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;/ul&gt;
&lt;hr&gt;
&lt;h2 id="步骤一创建裸仓库"&gt;步骤一：创建裸仓库&lt;/h2&gt;
&lt;p&gt;在本机某个目录（比如 &lt;code&gt;~/.repos&lt;/code&gt;）下创建裸仓库：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p ~/.repos
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd ~/.repos
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git init --bare scrapy.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样你得到一个路径 &lt;code&gt;~/.repos/scrapy.git&lt;/code&gt;，它就是本地的远程仓库。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="步骤二在开发仓库里添加远程"&gt;步骤二：在开发仓库里添加远程&lt;/h2&gt;
&lt;p&gt;假设你的开发仓库在 &lt;code&gt;~/scrapy&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd ~/scrapy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git remote add local ~/.repos/scrapy.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;检查一下远程是否添加成功：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git remote -v
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出类似：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;local /home/gong/.repos/scrapy.git (fetch)
local /home/gong/.repos/scrapy.git (push)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;说明配置成功。&lt;/p&gt;</description></item></channel></rss>