Git 基础操作:给代码买一份"后悔药"
完成时间:约 25 分钟。读完后你能看懂 AI 帮你执行的 Git 操作,自己也能完成最基本的版本管理。
CS 入门那一章我们提过:Git 就像 Word 的修订历史,但管的是整个项目。这一章不讲概念了,直接讲怎么用。
为什么现在就要学 Git
Section titled “为什么现在就要学 Git”很多人觉得”等我开始写代码了再学 Git”。错了——AI 帮你写代码的时候,你就已经需要 Git 了。
当你用 Claude Code 开发项目时,它会直接帮你执行 git commit、git push 这些命令。如果你完全看不懂它在做什么,就像坐在副驾驶却不认识仪表盘——出了问题你都不知道发生了什么。
类比:Git 就像游戏的”存档”功能。
- 打 Boss 之前先存个档
- 打输了?读档重来
- 想试试不同路线?开一个新存档槽
写代码也一样:改代码之前先 commit(存档),改坏了就回退(读档),想试新方案就开分支(新存档槽)。
核心概念:四个区域
Section titled “核心概念:四个区域”Git 的工作流程可以理解为文件在四个区域之间流动:
┌──────────┐ git add ┌──────────┐ git commit ┌──────────┐ git push ┌──────────┐│ │ ────────► │ │ ──────────► │ │ ────────► │ ││ 工作区 │ │ 暂存区 │ │ 本地仓库 │ │ 远程仓库 ││ │ │ (staging) │ │ │ │ (GitHub) ││ │ ◄──────── │ │ │ │ ◄──────── │ │└──────────┘ 编辑文件 └──────────┘ └──────────┘ git pull └──────────┘一句话理解每个区域:
| 区域 | 是什么 | 类比 |
|---|---|---|
| 工作区 | 你正在编辑的文件 | 你面前的草稿纸 |
| 暂存区 | 执行 git add 后,准备提交的文件 | 把写好的草稿放进信封 |
| 本地仓库 | 执行 git commit 后,已保存的历史记录 | 信封封好,归档到你的文件柜 |
| 远程仓库 | 执行 git push 后,上传到 GitHub 的备份 | 把文件柜的副本寄到银行保险箱 |
第一次使用:配置身份
Section titled “第一次使用:配置身份”Git 需要知道”谁在提交代码”,所以第一次用之前要配置你的名字和邮箱:
git config --global user.name "你的名字"git config --global user.email "你的邮箱"这只需要做一次,以后所有项目都会使用这个身份。
提示:邮箱建议用你注册 GitHub 时的邮箱,这样提交记录能关联到你的 GitHub 账号。
日常最常用的 6 个命令
Section titled “日常最常用的 6 个命令”这 6 个命令覆盖了 90% 的日常使用场景。
1. git clone — 把项目下载到本地
Section titled “1. git clone — 把项目下载到本地”git clone https://github.com/用户名/项目名.git一句话:从 GitHub 复制一份完整的项目到你的电脑上。
什么时候用:第一次获取一个项目的时候。类似于从网盘下载一个文件夹,但它还带着完整的历史记录。
2. git status — 查看当前状态
Section titled “2. git status — 查看当前状态”git status一句话:告诉你哪些文件被改了、哪些已经放进暂存区、哪些还没有。
什么时候用:随时都可以用,就像低头看一眼仪表盘。不确定当前情况的时候就敲一下,不会有任何副作用。
输出示例:
Changes not staged for commit: modified: src/App.js ← 改了,但还没 git add
Untracked files: src/NewComponent.js ← 新文件,Git 还不知道它的存在3. git add — 把改动放进暂存区
Section titled “3. git add — 把改动放进暂存区”git add src/App.js # 添加指定文件git add . # 添加当前目录下所有改动一句话:选择哪些改动要包含在下一次提交里。
什么时候用:改完文件后、commit 之前。就像考试交卷前先检查一遍要交的答题卡。
4. git commit — 提交一个版本
Section titled “4. git commit — 提交一个版本”git commit -m "添加用户登录功能"一句话:把暂存区的内容保存为一个版本,附上一条说明。
什么时候用:完成一个小功能、修复一个 bug、或者做到一个可以”存档”的节点。
好的 commit 信息应该说清楚”做了什么”,比如
"修复登录页面密码校验bug"而不是"改了点东西"。
5. git push — 推送到 GitHub
Section titled “5. git push — 推送到 GitHub”git push一句话:把本地仓库的提交上传到远程仓库(GitHub)。
什么时候用:commit 之后,想把代码同步到 GitHub 的时候。推送后别人就能看到你的更新了。
6. git pull — 拉取最新代码
Section titled “6. git pull — 拉取最新代码”git pull一句话:把远程仓库的最新内容下载到本地并合并。
什么时候用:开始工作前,先拉取一下,确保你的代码是最新的。就像开工前先看看有没有新的通知。
完整工作流一览
Section titled “完整工作流一览”# 日常操作流程git pull # 1. 先拉取最新代码# ...编辑文件...git status # 2. 看看改了什么git add . # 3. 把改动放进暂存区git commit -m "完成了XX功能" # 4. 提交一个版本git push # 5. 推送到 GitHub分支:平行宇宙
Section titled “分支:平行宇宙”想象你正在玩一个 RPG 游戏,主线剧情推到了第五章。你想试试一个冒险的决定,但又怕搞砸主线。怎么办?开一个新存档槽,在那里随便折腾,成功了再把结果搬回主线。
这就是 Git 分支的作用。
main ●───●───●───●───●───● ← 主线(稳定版本) \ / feature ●───●───● ← 支线(试验新功能)常用分支命令
Section titled “常用分支命令”git branch feature-login # 创建一个叫 feature-login 的分支git switch feature-login # 切换到这个分支# ...在分支上开发...git switch main # 切换回主线git merge feature-login # 把分支的成果合并到主线
git checkout 分支名也能切换分支,效果和git switch一样。你在网上会看到两种写法,都对。
什么时候用分支?
- 要开发一个新功能,但不想影响当前能用的版本
- 要尝试一个不确定的方案
- 多人协作,每人在自己的分支上开发
.gitignore:哪些文件不要提交
Section titled “.gitignore:哪些文件不要提交”不是所有文件都应该上传到 GitHub。项目根目录下有一个叫 .gitignore 的文件,列在里面的文件会被 Git 忽略。
# .gitignore 示例node_modules/ # 依赖包,太大了(几百 MB),别人 npm install 就能重新生成.env # 环境变量,里面有密钥、密码等敏感信息dist/ # 编译产物,可以从源码重新生成.DS_Store # macOS 系统文件,没用为什么要忽略这些?
| 文件 | 原因 |
|---|---|
node_modules/ | 体积巨大,从 package.json 就能重新安装 |
.env | 包含密钥和密码,上传到 GitHub 等于公开你的密码 |
编译产物 (dist/, build/) | 可以从源码重新生成,没必要存 |
常见问题处理
Section titled “常见问题处理”出了问题不要慌,下面是最常见的”后悔药”:
| 场景 | 命令 | 说明 |
|---|---|---|
| 改了文件但还没 add,想撤销 | git checkout -- 文件名 | 把文件恢复到上次 commit 的状态 |
| 已经 add 了,想从暂存区撤回 | git reset HEAD 文件名 | 文件回到”已修改但未暂存”状态,改动不会丢 |
| 已经 commit 了,想撤回 | git reset HEAD~1 | 撤销最近一次 commit,改动保留在工作区 |
| commit 信息写错了 | git commit --amend -m "新信息" | 修改最近一次 commit 的信息 |
| 想看历史提交记录 | git log --oneline | 查看简洁的提交历史 |
提示:
HEAD表示”当前最新的 commit”,HEAD~1表示”上一个 commit”。
现在就动手试一试,整个过程不超过 5 分钟:
- 在 GitHub 上点右上角 ”+“,选 “New repository”,创建一个新仓库(名字随便起,比如
git-practice) - 复制仓库的 HTTPS 地址,在终端执行:
Terminal window git clone https://github.com/你的用户名/git-practice.gitcd git-practice - 创建一个文件并提交:
Terminal window echo "Hello Git!" > hello.txtgit add hello.txtgit commit -m "我的第一次提交"git push - 回到 GitHub 页面刷新,你应该能看到
hello.txt文件出现了
恭喜,你已经完成了一次完整的 Git 工作流:创建 → 暂存 → 提交 → 推送。
| 命令 | 作用 | 记忆口诀 |
|---|---|---|
git clone <url> | 下载项目到本地 | 第一次拿代码 |
git status | 查看当前状态 | 低头看仪表盘 |
git add <file> | 放进暂存区 | 选好要交的答题卡 |
git commit -m "描述" | 提交一个版本 | 存档 |
git push | 推送到 GitHub | 备份到云端 |
git pull | 拉取最新代码 | 开工前先同步 |
你不需要记住所有命令。 日常开发中,Claude Code 会帮你执行大部分 Git 操作。但你需要:
- 看懂它在做什么(commit 了什么、push 到哪里)
- 出问题时知道怎么回退
- 理解分支的概念,因为团队协作会用到
下一步:回到主线,开始动手构建你的第一个项目。