第十一章 · 环境及工具配置详解

11.4 Git 与 GitHub 工作流

本节最后更新:2026-05-13
验证环境:Git 2.x, GitHub

一人公司也需要版本管理

很多人会觉得"我一个人做项目,不需要 Git"。但 Git 的价值不只是团队协作——它是一台时间机器

一人公司没有"有同事可以问",Git 就是你的"同事"——它记得你做过的每一次修改。

Git 对一人公司的三个核心价值:

  1. 安全网。不知道这个改动会不会出问题?先 commit,然后放心大胆改。改坏了就 git checkout . 回到之前的版本。Git 让你敢于实验。
  2. 历史记录。一周后你可能会问自己"我当时为什么这么写?" Git log + commit message 会告诉你答案。如果你养成了写清楚 commit message 的习惯,Git 日志就是你的开发日记。
  3. 远程备份。把代码推到 GitHub/GitLab,等于多了一个异地备份。硬盘坏了不会丢代码。这是底线保障。

基本工作流

你只需要掌握几个命令就能工作:

# 初始化仓库
git init

# 查看当前状态(哪些文件改了、哪些还没 add)
git status

# 添加文件到暂存区
git add 文件名

# 添加所有改动的文件
git add .

# 提交修改
git commit -m "提交说明"

# 推送到 GitHub
git push

典型的一次开发循环:

# 开始工作前,确认仓库是干净的
git status

# 做你的修改——写代码、改代码

# 查看改了哪些文件
git status

# 查看具体改了哪些内容
git diff

# 把修改的文件添加到暂存区
git add 文件名1 文件名2

# 提交
git commit -m "添加用户登录页面的表单验证逻辑"

# 推送到远程
git push

这个循环你每天会跑很多次。不需要记住所有的 Git 命令——实际上在日常使用中,你主要用的就是 add、commit、push、status 这四个。

常见的 Git 术语(不需要深入理解,知道存在就好):

分支策略:一人公司的简单方案

团队协作中分支管理很复杂——develop、feature、release、hotfix……对一人公司来说,你只需要一个最简单的策略:

只用一个 main 分支,或者最多加一个 dev 分支。

具体做法:

创建和使用临时分支:

# 创建并切换到新分支
git checkout -b feature/new-login-page

# 在这个分支上做所有修改

# 改完之后,切回 main 分支
git checkout main

# 把新分支的改动合并进来
git merge feature/new-login-page

# 推送
git push

# 删除临时分支(已经合并完了,不需要了)
git branch -d feature/new-login-page

这个流程的关键好处:你的 main 分支始终是"可以运行的"——如果你有急事想部署,切回 main 就是上一个可用的版本。这个习惯会让你在一个人开发时多一层安全感。

让 AI 辅助写 commit message

如果你觉得写 commit message 很麻烦,让 AI 来做:

我已经修改了以下文件:
- src/components/Header.tsx
- src/pages/index.tsx
修改内容:将 Header 组件从深色主题改为浅色主题,并更新了首页的布局以适应新样式。
请帮我写一个简洁的 commit message。

AI 会返回类似这样的内容:

feat: 将 Header 组件切换为浅色主题并调整首页布局

- 更新 Header.tsx 中的主题变量和样式
- 调整 index.tsx 布局以适配新主题
- 确保深色/浅色切换时所有组件过渡平滑

你复制这个 commit message,用到 git commit -m "..." 中。

更省力的方式:让 AI 直接帮你生成并提交。

"请帮我查看当前的 git diff,生成合适的 commit message,然后执行 git commit。"

AI 会自动运行 git diff 分析修改内容,生成 message,然后执行 commit。你只需要审查结果。

让 AI 辅助解决冲突

当你合并分支时,偶尔会遇到"冲突"——同一个文件的同一行在两个分支中被改成了不同的内容。Git 无法自动决定用哪个版本,需要你手动解决。

传统方式:打开冲突文件,找到 <<<<<<<=======>>>>>>> 标记,手动选择保留哪个版本的代码。

AI 辅助方式:

"我在合并分支时遇到了冲突,帮我解决一下。保留两个版本中更完整的代码,如果有必要,把两者合并。"

AI 会读取冲突文件,分析两段代码的逻辑,帮你决定保留哪一段、或者如何合并两段。你确认后,AI 修改文件并执行 git add

.gitignore 的正确用法

.gitignore 告诉 Git "这些文件不要跟踪"。你需要它来保护敏感信息和避免将无关文件提交到仓库。

必须忽略的:

建议忽略的:

让 AI 为你生成 .gitignore:

"帮我创建一个适合 Next.js + TypeScript 项目的 .gitignore 文件,包含常见的需要忽略的目录和文件。"

AI 会生成一个完整的 .gitignore,直接写入你的项目根目录。

GitHub:不只是代码托管

GitHub 不只是"放代码的地方"。即使你一个人开发,也可以利用 GitHub 的其他功能。

GitHub Issues 作为个人任务管理。 把你的开发计划写成 Issue:

每个 Issue 就是一个任务。完成一个关一个。比写在记事本上更系统,而且和你的代码仓库关联在一起。

GitHub README 作为项目文档。 在仓库根目录创建 README.md,记录项目是做什么的、怎么运行、有哪些功能。一个月后你回头看自己的项目,README 会让你快速记起当时的思路。

GitHub Actions 做自动部署(进阶)。 当你把代码推送到 GitHub 时,可以自动运行测试、构建、部署。这个在起步阶段不需要,但当你有了一个需要持续维护的项目后,它会节省你大量时间。

常见 Git 问题速查

"我不小心在 main 分支上做了不应该做的修改怎么办?"

如果还没 commit:git checkout . 撤销所有修改。如果已经 commit:git revert HEAD 创建一个"反 commit"来撤销上一次提交。或者用 Claude Code:"我刚刚在 main 分支上做了一些改动,但本来应该在另一个分支上做。帮我恢复 main 到干净状态。"

"我想撤销最近的一次 commit,但保留修改内容。"

git reset --soft HEAD~1

这个命令撤销最近的 commit,保留修改文件在工作区中。你可以重新改、重新提交。

"commit message 写错了怎么办?"

git commit --amend -m "正确的提交说明"

"我忘了 include 一个文件,想加到上一个 commit 里。"

git add 忘记的文件
git commit --amend --no-edit
本节要点
Vibe 练习

在当前项目目录中运行:

"请帮我初始化一个 Git 仓库,创建一个 .gitignore 文件(排除 node_modules、.env 等常见目录),然后帮我生成第一次提交的 commit message。"

进阶练习:

创建一个 Git 分支实验:让 AI "创建一个名为 experiment/new-ui 的分支,在这个分支上修改主页面的颜色主题(把蓝色改为绿色),然后提交。接着切回 main 分支,把 experiment 分支合并回来。" 观察 AI 如何完成 branch → checkout → commit → merge 的完整流程。