Skip to content

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:一个在你电脑,一个在云上

这是最多人搞混的地方,记住一句话就行:

GitGitHub
是什么一个工具,跑在你自己电脑上一个网站,托管 Git 仓库
在哪本地,离线也能用云端,需要联网
干什么给代码拍快照、管理版本历史把本地仓库备份到云、和别人协作
类比你电脑上的"存档功能"存档的"云同步 + 共享空间"

Git 能独立使用,完全不碰 GitHub。 你一个人在本地用 Git 拍快照、回滚,全程不联网也没问题。只有当你想"把代码备份到云上"或"和别人协作"时,才需要 GitHub(或 GitLab、Gitee 等同类网站)。

类似的网站还有 GitLab、Bitbucket、国内的 Gitee。它们和 GitHub 是同一类东西,底层都用 Git。

我电脑上有 Git 吗?

不一定自带,先查一下。打开终端运行:

bash
git --version
  • 显示版本号(如 git version 2.43.0)→ 已装好,跳过安装
  • 提示"找不到命令"→ 需要安装

安装方式按系统:

bash
# macOS(装了 Homebrew)
brew install git
bash
# Ubuntu / Debian
sudo apt install git

Windows 用户去 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 步:进入项目,初始化仓库

在你的项目目录里运行:

bash
git init

你应该看到类似 Initialized empty Git repository in .../.git/ 的提示。这一步在项目里创建了一个隐藏的 .git 文件夹,Git 的所有快照都存在这。

第 2 步:配置身份(首次用 Git 才需要)

Git 给每次提交都署名,第一次用要先告诉它你是谁:

bash
git config --global user.name "你的名字"
bash
git config --global user.email "你的邮箱"

第 3 步:建 .gitignore(有敏感 / 无关文件就建)

提交前先想想:项目里有没有不该进版本库的东西(.envnode_modules/ 等)?有就在项目根建 .gitignore 写进去(模板见上方"机制解析")。没有可跳过。

第 4 步:把改动放进暂存区

bash
git add .

. 表示"当前目录所有改动"。运行后这些改动就进了暂存区,准备被打包。

第 5 步:提交,拍下第一张快照

bash
git commit -m "初始提交:接入 Claude Code 前的存档"

-m 后面是这次提交的说明。你应该看到一行统计,告诉你提交了多少文件。

第 6 步:验证

bash
git log --oneline

能看到刚才那条提交记录,就说明第一张快照拍成功了。以后任何时候改乱了,都能回到这里。

想让 Claude 帮你做这些?直接说"帮我把这个项目用 git 初始化并做第一次提交",它会替你跑完上面的命令——这也是后面 3.10 → 要展开的玩法。


进阶(可选):同步到 GitHub

到这一步,你的快照都还只在本地。如果想把代码备份到云上、或和别人协作,就把本地仓库连到一个 GitHub 远程仓库再推上去。

第 1 步:在 GitHub 上建一个空仓库

登录 GitHub,点 New repository,起个名,不要勾选"用 README 初始化"(保持空),创建后复制它的地址(形如 https://github.com/你的用户名/仓库名.git)。

第 2 步:把本地仓库连上远程

bash
git remote add origin https://github.com/你的用户名/仓库名.git

第 3 步:确认主分支叫 main

bash
git branch -M main

老版本 Git 默认分支叫 master,这一步统一改成现在通用的 main

第 4 步:推上去

bash
git push -u origin main

-u 让以后在这个分支直接 git push / git pull 就行,不用再带后面那串。推完刷新 GitHub 页面,就能看到你的代码了。

更省事的路径:gh CLI

装了 GitHub 官方命令行工具 ghcli.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 statusgit diff 看一眼这次改了啥,避免"盲推"。


想和别人协作?分支 + PR 一分钟了解

多人协作时,通常不直接往 main 推,而是各开一条分支改完再合:

bash
git checkout -b feature/我的改动     # 开一条新分支
git add -A && git commit -m "feat: 我的改动"
git push -u origin feature/我的改动   # 推上去

然后在 GitHub 上对这条分支发起 Pull Request(PR),让别人审查、合并进 main。合并后回到本地同步:

bash
git checkout main && git pull

让 Claude 自动生成 commit message、写 PR 描述、做代码审查,是 3.10 Git 工作流整合 → 的主题。单人项目用不到分支 / PR,跳过即可。


通关检定

  • [ ] 能用一句话说清 Git 和 GitHub 的区别
  • [ ] 运行过 git --version,知道自己电脑上有没有 Git
  • [ ] 理解工作区 → 暂存区 → 提交历史的流转
  • [ ] 知道 .gitignore 的作用,且明白密钥别进版本库
  • [ ] 说得出为什么用 Claude Code 时 Git 是"安全网"、以及它和"倒回"的区别
  • [ ] 给一个项目完成了 git initaddcommit 的第一次提交
  • [ ] (可选)把本地仓库推到了 GitHub

全部点亮就算通关 ✓


卡关了?翻车指南在这

git 命令找不到 / 提示不是内部命令

Git 没装或没加进环境变量。按上面"我电脑上有 Git 吗"那节装一遍,装完重开终端再试。

提交时报错 please tell me who you are

没配身份。把第 2 步的 user.nameuser.email 设一下再提交。

git add . 之后想反悔,把暂存区清空

bash
git reset

这只是把改动撤出暂存区,不会删你的文件内容,放心用。

推送到 GitHub 时让我输密码 / 报认证失败

GitHub 早就不支持用账号密码推送了。最省心的办法是装 gh 后跑 gh auth login 登录,它会自动配好认证。或者在 GitHub 后台生成一个"个人访问令牌(PAT)",推送时当密码用。

git remote add originorigin already exists

说明这个仓库是 git clone 下来的,已经有远程了,不用再 add。想改地址用:

bash
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)的基础。

面向公开用户维护,内容基于 Claude Code 官方文档与真实使用经验整理