很多人会觉得"我一个人做项目,不需要 Git"。但 Git 的价值不只是团队协作——它是一台时间机器。
一人公司没有"有同事可以问",Git 就是你的"同事"——它记得你做过的每一次修改。
Git 对一人公司的三个核心价值:
git checkout . 回到之前的版本。Git 让你敢于实验。你只需要掌握几个命令就能工作:
# 初始化仓库
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 就是上一个可用的版本。这个习惯会让你在一个人开发时多一层安全感。
如果你觉得写 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。你只需要审查结果。
当你合并分支时,偶尔会遇到"冲突"——同一个文件的同一行在两个分支中被改成了不同的内容。Git 无法自动决定用哪个版本,需要你手动解决。
传统方式:打开冲突文件,找到 <<<<<<<、=======、>>>>>>> 标记,手动选择保留哪个版本的代码。
AI 辅助方式:
"我在合并分支时遇到了冲突,帮我解决一下。保留两个版本中更完整的代码,如果有必要,把两者合并。"
AI 会读取冲突文件,分析两段代码的逻辑,帮你决定保留哪一段、或者如何合并两段。你确认后,AI 修改文件并执行 git add。
.gitignore 告诉 Git "这些文件不要跟踪"。你需要它来保护敏感信息和避免将无关文件提交到仓库。
必须忽略的:
node_modules/——npm 安装的依赖包,每个人运行 npm install 就能重新生成。一般占用几百 MB,不应该进版本管理。.env 或 .env.local——包含 API 密钥、数据库密码等敏感信息。如果这些被提交到公共 GitHub 仓库,相当于公开了你的密码。dist/ 或 .next/ 或 build/——构建产物,每次构建都会重新生成。建议忽略的:
*.log——日志文件,随时间增长且没有版本管理价值。.DS_Store——macOS 的文件系统元数据文件。.vscode/ 或 .idea/——编辑器的个人配置文件(除非你和团队共用一套配置)。让 AI 为你生成 .gitignore:
"帮我创建一个适合 Next.js + TypeScript 项目的 .gitignore 文件,包含常见的需要忽略的目录和文件。"
AI 会生成一个完整的 .gitignore,直接写入你的项目根目录。
GitHub 不只是"放代码的地方"。即使你一个人开发,也可以利用 GitHub 的其他功能。
GitHub Issues 作为个人任务管理。 把你的开发计划写成 Issue:
每个 Issue 就是一个任务。完成一个关一个。比写在记事本上更系统,而且和你的代码仓库关联在一起。
GitHub README 作为项目文档。 在仓库根目录创建 README.md,记录项目是做什么的、怎么运行、有哪些功能。一个月后你回头看自己的项目,README 会让你快速记起当时的思路。
GitHub Actions 做自动部署(进阶)。 当你把代码推送到 GitHub 时,可以自动运行测试、构建、部署。这个在起步阶段不需要,但当你有了一个需要持续维护的项目后,它会节省你大量时间。
"我不小心在 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
在当前项目目录中运行:
"请帮我初始化一个 Git 仓库,创建一个 .gitignore 文件(排除 node_modules、.env 等常见目录),然后帮我生成第一次提交的 commit message。"
进阶练习:
创建一个 Git 分支实验:让 AI "创建一个名为 experiment/new-ui 的分支,在这个分支上修改主页面的颜色主题(把蓝色改为绿色),然后提交。接着切回 main 分支,把 experiment 分支合并回来。" 观察 AI 如何完成 branch → checkout → commit → merge 的完整流程。