2.14 Git 入门
预计耗时:12 分钟
本关任务简报
读到这里你大概已经发现:前面好多章都在提 Git——"用 git 兜底""git checkout 还原""Worktree 并行""让 Claude 自动写 commit"。但 Git 到底是个啥、为什么用 Claude Code 总绕不开它,可能一直没人跟你讲清楚。
这一关就专门解决这件事:把 Git 是什么、和 GitHub 有啥区别、终端里有没有、什么时候真用得上,一次说明白。 不求把你变成 Git 高手,只求你以后看到站里任何提 Git 的地方,都知道它在说什么、为什么重要。
通关奖励:解锁以下技能
- 🧩 说清楚 Git 是什么、和 GitHub 的区别
- 🔍 知道自己电脑上有没有 Git,没有怎么装
- 🗂️ 理解 Git 的"三个区"模型(工作区 / 暂存区 / 提交历史)
- 🛟 明白为什么用 Claude Code 写代码时,Git 是你的"安全网"
- ✅ 亲手完成第一次提交
开始前先检查装备
| 前置知识 | 说明 |
|---|---|
| 2.4 权限系统 → | 理解 Claude Code 会真的改你的文件——这正是需要 Git 兜底的原因 |
| 一个终端 | 你会在终端里敲几条 git 命令,能打开终端即可 |
机制解析
Git 是什么:给代码拍快照的工具
一句话:Git 是一个本地的"版本管理工具",帮你给项目在不同时刻拍快照,随时能回到任意一张快照。
想象你在写一篇长文档,每写一段就"另存为 文档_v1、文档_v2、文档_v3……"——既乱又占地方。Git 把这件事做得优雅得多:你每完成一个有意义的改动,就提交(commit)一次,Git 记下这一刻整个项目的样子。以后无论改乱了多少,都能一键回到任意一次提交时的状态。
它解决的核心痛点就两个:
- 能后悔:改错了、删错了,回到上一个好的快照就行,不怕动手
- 看得到历史:每次提交都带一句说明,整个项目"什么时候改了什么"清清楚楚
Git ≠ GitHub:一个在你电脑,一个在云上
这是最多人搞混的地方,记住一句话就行:
| Git | GitHub | |
|---|---|---|
| 是什么 | 一个工具,跑在你自己电脑上 | 一个网站,托管 Git 仓库 |
| 在哪 | 本地,离线也能用 | 云端,需要联网 |
| 干什么 | 给代码拍快照、管理版本历史 | 把本地仓库备份到云、和别人协作 |
| 类比 | 你电脑上的"存档功能" | 存档的"云同步 + 共享空间" |
Git 能独立使用,完全不碰 GitHub。 你一个人在本地用 Git 拍快照、回滚,全程不联网也没问题。只有当你想"把代码备份到云上"或"和别人协作"时,才需要 GitHub(或 GitLab、Gitee 等同类网站)。
类似的网站还有 GitLab、Bitbucket、国内的 Gitee。它们和 GitHub 是同一类东西,底层都用 Git。
我电脑上有 Git 吗?
不一定自带,先查一下。打开终端运行:
git --version- 显示版本号(如
git version 2.43.0)→ 已装好,跳过安装 - 提示"找不到命令"→ 需要安装
安装方式按系统:
# macOS(装了 Homebrew)
brew install git# Ubuntu / Debian
sudo apt install gitWindows 用户去 git-scm.com 下载安装包,一路下一步即可。装完重开终端,再跑一次 git --version 确认。
三个区:Git 的核心模型
Git 把你的改动分成三个"区"流转,理解了这个就理解了大半个 Git:
工作区 暂存区 提交历史
(你正在改的) → (准备打包的) → (拍下的快照)
编辑文件 git add git commit- 工作区:你当前正在编辑的文件,就是你看到的项目文件夹
- 暂存区:用
git add把"这次想一起提交的改动"先挑出来放这 - 提交历史:用
git commit把暂存区的内容打包成一张快照,永久留档
为什么要中间这个"暂存区"?因为它让你能挑着提交——改了 5 个文件,只想把其中 3 个作为一次有意义的提交,就只 add 那 3 个。
.gitignore:别让某些文件进版本库
有些文件你不希望 Git 管理:密钥、依赖包、构建产物、编辑器临时文件——它们要么敏感、要么体积大、要么换台电脑重新生成就有。做法是在项目根建一个 .gitignore 文件,把这些写进去,Git 就会忽略它们。
一个常见的 .gitignore 模板:
node_modules/
dist/
build/
*.log
.env
.env.local
.DS_Store
.idea/⚠️ 密钥、token、
.env一定要在第一次提交前就 ignore 掉。.gitignore只对还没被追踪的文件生效;如果一个文件已经提交过了,再加进.gitignore也拦不住它——得用git rm --cached <文件>把它移出追踪、再提交一次。一旦敏感文件被提交并推到 GitHub,即使后来删掉,历史里仍能翻出来,最稳妥是直接作废那个密钥。不确定写什么?直接让 Claude 帮你:"帮我给这个项目生成一个合适的 .gitignore。"
为什么用 Claude Code 离不开 Git
这才是你最该关心的部分。Claude Code 会真的读写你的文件、跑命令(见 2.4 权限系统 →),能力很强,但也意味着它可能改出你不想要的结果。Git 就是这时候的安全网:
- 改崩了能秒回:Claude 一通操作把代码改乱了?
git checkout .一下回到上次提交,干净利落。没有 Git,你只能手动一处处撤,或者根本撤不回来 - 看得清它改了啥:
git diff能列出 Claude 这轮到底动了哪些行,审查它的工作比盯着屏幕滚动靠谱得多 - 大胆放手:有了随时能回滚的底气,你才敢开
accept edits甚至更激进的模式让 Claude 跑,而不必每一步都提心吊胆
所以站里凡是涉及"让 Claude 自主干活"的地方,都会建议你先把项目用 Git 管起来。
注意:Claude Code 的"倒回"≠ Git 回滚。 双击
Esc的倒回模式能还原 Claude 在本次会话里用编辑工具改的文件和对话,但它碰不到 bash 命令(rm/mv等)改的文件,也碰不到已经git commit的历史——它是"会话级的本地 undo"。真正能把整个项目还原到某个时刻、并跨会话长期留存的,是 Git。两者配合用:倒回应付会话内的小反悔,Git 兜底永久历史和 bash 误操作。
"我好像一直没用到 Git 啊?"
如果你到现在都没觉得非用不可,很正常——单人写的小项目、随手的脚本,确实可以不用 Git。 它不是 Claude Code 的强制依赖。
但下面这些情况一旦出现,你就会真切需要它:
- 让 Claude 做较大改动,想有个"反悔"的底气 → 提交前先 commit 存档
- 项目变大、改动变多,想知道什么时候改了什么 → 提交历史就是答案
- 想让 Claude 自动生成 commit message、做 PR 审查 → 见 3.10 Git 工作流整合 →
- 想让多个 Claude 实例并行在不同分支干活、互不干扰 → 见 3.3 Git Worktree 并行实例 →
换句话说:你越是放手让 Claude Code 干重活,越会需要 Git。现在花 10 分钟把它跑通,是给未来的自己买保险。
开始闯关
目标:给一个项目初始化 Git,完成第一次提交。
第 1 步:进入项目,初始化仓库
在你的项目目录里运行:
git init你应该看到类似 Initialized empty Git repository in .../.git/ 的提示。这一步在项目里创建了一个隐藏的 .git 文件夹,Git 的所有快照都存在这。
第 2 步:配置身份(首次用 Git 才需要)
Git 给每次提交都署名,第一次用要先告诉它你是谁:
git config --global user.name "你的名字"git config --global user.email "你的邮箱"第 3 步:建 .gitignore(有敏感 / 无关文件就建)
提交前先想想:项目里有没有不该进版本库的东西(.env、node_modules/ 等)?有就在项目根建 .gitignore 写进去(模板见上方"机制解析")。没有可跳过。
第 4 步:把改动放进暂存区
git add .. 表示"当前目录所有改动"。运行后这些改动就进了暂存区,准备被打包。
第 5 步:提交,拍下第一张快照
git commit -m "初始提交:接入 Claude Code 前的存档"-m 后面是这次提交的说明。你应该看到一行统计,告诉你提交了多少文件。
第 6 步:验证
git log --oneline能看到刚才那条提交记录,就说明第一张快照拍成功了。以后任何时候改乱了,都能回到这里。
想让 Claude 帮你做这些?直接说"帮我把这个项目用 git 初始化并做第一次提交",它会替你跑完上面的命令——这也是后面 3.10 → 要展开的玩法。
进阶(可选):同步到 GitHub
到这一步,你的快照都还只在本地。如果想把代码备份到云上、或和别人协作,就把本地仓库连到一个 GitHub 远程仓库再推上去。
第 1 步:在 GitHub 上建一个空仓库
登录 GitHub,点 New repository,起个名,不要勾选"用 README 初始化"(保持空),创建后复制它的地址(形如 https://github.com/你的用户名/仓库名.git)。
第 2 步:把本地仓库连上远程
git remote add origin https://github.com/你的用户名/仓库名.git第 3 步:确认主分支叫 main
git branch -M main老版本 Git 默认分支叫 master,这一步统一改成现在通用的 main。
第 4 步:推上去
git push -u origin main-u 让以后在这个分支直接 git push / git pull 就行,不用再带后面那串。推完刷新 GitHub 页面,就能看到你的代码了。
更省事的路径:gh CLI
装了 GitHub 官方命令行工具 gh(cli.github.com)后,认证和建仓一步到位:先 gh auth login 登录,再在项目里 gh repo create 就能直接创建远程仓库并关联,省去网页操作。Claude Code 显示 PR 状态、做 PR 审查也依赖 gh,建议顺手装上。
⚠️ 现在用 HTTPS 推送 GitHub 不能用账号密码了,会让你输入"个人访问令牌(PAT)"。用
gh auth login登录是最省心的方式,它会自动处理好认证。
日常节奏
把 Git 用起来之后,养成两个习惯就够了:
- 开工前:
git pull(拉下别人 / 别的设备的最新改动,单人单设备可跳过) - 收工前:
git add .→git commit -m "说明"→git push
推之前用 git status 和 git diff 看一眼这次改了啥,避免"盲推"。
想和别人协作?分支 + PR 一分钟了解
多人协作时,通常不直接往 main 推,而是各开一条分支改完再合:
git checkout -b feature/我的改动 # 开一条新分支
git add -A && git commit -m "feat: 我的改动"
git push -u origin feature/我的改动 # 推上去然后在 GitHub 上对这条分支发起 Pull Request(PR),让别人审查、合并进 main。合并后回到本地同步:
git checkout main && git pull让 Claude 自动生成 commit message、写 PR 描述、做代码审查,是 3.10 Git 工作流整合 → 的主题。单人项目用不到分支 / PR,跳过即可。
通关检定
- [ ] 能用一句话说清 Git 和 GitHub 的区别
- [ ] 运行过
git --version,知道自己电脑上有没有 Git - [ ] 理解工作区 → 暂存区 → 提交历史的流转
- [ ] 知道
.gitignore的作用,且明白密钥别进版本库 - [ ] 说得出为什么用 Claude Code 时 Git 是"安全网"、以及它和"倒回"的区别
- [ ] 给一个项目完成了
git init→add→commit的第一次提交 - [ ] (可选)把本地仓库推到了 GitHub
全部点亮就算通关 ✓
卡关了?翻车指南在这
git 命令找不到 / 提示不是内部命令
Git 没装或没加进环境变量。按上面"我电脑上有 Git 吗"那节装一遍,装完重开终端再试。
提交时报错 please tell me who you are
没配身份。把第 2 步的 user.name 和 user.email 设一下再提交。
git add . 之后想反悔,把暂存区清空
git reset这只是把改动撤出暂存区,不会删你的文件内容,放心用。
推送到 GitHub 时让我输密码 / 报认证失败
GitHub 早就不支持用账号密码推送了。最省心的办法是装 gh 后跑 gh auth login 登录,它会自动配好认证。或者在 GitHub 后台生成一个"个人访问令牌(PAT)",推送时当密码用。
git remote add origin 报 origin already exists
说明这个仓库是 git clone 下来的,已经有远程了,不用再 add。想改地址用:
git remote set-url origin 新地址推送被拒,提示 main 受保护 / protected branch
这个仓库开了分支保护,不允许直接往 main 推。改用上面"分支 + PR"的流程:开新分支推上去、再发 PR 合并。
不小心把 .env / 密钥提交了
.gitignore 对已经提交过的文件不生效。先 git rm --cached <文件> 把它移出追踪、提交一次,再把它加进 .gitignore。最重要的是:立刻去对应平台作废那个密钥——只要进过 Git 历史就应视为已泄露。
下一章预告
基础使用到此完成 🎉 你已经掌握了 Claude Code 的全部核心操作。
接下来进入 🧠 进阶使用 →,解锁真正拉开差距的高价值能力:
- 扩展思考:复杂问题让 Claude 先把推理走完再答
- 多 Agent 并行 / Git Worktree:多个实例同时干活
- Hooks 自动化、MCP 实战、Skills 专题、远程控制……
你刚学的 Git,正是其中 Worktree(3.3)和 Git 工作流(3.10)的基础。