Git 真正需要先学会的 12 条命令

Git 有 100 多条命令,但日常写代码 90% 的时间只用其中 12 条。这篇按「一天的工作流」把它们串起来,而不是按字母表罗列。

先搞懂三个区

不理解这三个区,Git 的命令永远像在背咒语:

工作区            暂存区           版本库
(你改的文件)  →   (git add)   →   (git commit)
                                      ↓ git push
                                   远程仓库
  • 工作区:你正在编辑的文件
  • 暂存区:你挑出来「这次要提交」的改动
  • 版本库:已经存下来的历史快照

为什么要有暂存区?因为你可能改了 5 个文件,但只想把其中 2 个作为一次提交。暂存区就是让你挑的地方。

一天的工作流

早上:把别人的改动拉下来

git pull            # 拉取远程最新代码
git status          # 看看现在什么状态(用得最多的命令)

git status 应该成为肌肉记忆。任何时候不确定现在什么情况,先敲它。

写代码时:随时看自己改了什么

git diff            # 看工作区改了什么(还没 add 的)
git diff --staged   # 看暂存区里有什么(已经 add 的)

提交前一定要 git diff 一遍。 这一步能拦下大部分「不小心把调试代码提交上去了」的事故。

提交

git add app/models.py         # 把这个文件加进暂存区
git add .                     # 把所有改动加进暂存区
git commit -m "feat: 添加文章标签功能"

提交信息推荐用这个格式(叫 Conventional Commits):

前缀 用于
feat: 新功能
fix: 修 bug
docs: 只改了文档
refactor: 重构,行为没变
chore: 杂事,比如改配置

好处:三个月后 git log 一眼能看懂自己干过什么。

推送

git push
git push -u origin main    # 第一次推新分支时用,之后直接 git push 就行

回顾

git log --oneline -10      # 看最近 10 次提交,一行一条

反悔的几种情况

这是新手最慌的部分,按「后悔程度」排:

改乱了,还没 add,想丢掉改动

git restore app/models.py     # 丢掉这个文件的修改

这个操作不可撤销

git restore 会直接丢掉你没提交的改动,找不回来。执行前确认清楚。

已经 add 了,想撤回暂存区

git restore --staged app/models.py     # 从暂存区拿出来,但改动还在

已经 commit 了,但还没 push,想改提交信息

git commit --amend -m "新的提交信息"

已经 commit 了,想撤销这次提交但保留改动

git reset --soft HEAD~1

已经 push 出去的提交,不要用 reset

强行 reset 再 force push 会把别人的工作冲掉。 正确做法是 git revert 提交号,它会生成一个「反向提交」来抵消,历史是完整的。

分支

一个人写博客其实可以只用 main 分支。但既然要练,就练对:

git switch -c feat/comments   # 建一个新分支并切过去
git switch main               # 切回主分支
git merge feat/comments       # 把新分支合并到当前分支
git branch -d feat/comments   # 删掉已经合并的分支

分支名建议带类型前缀:feat/xxxfix/xxx

必须配的两件事

1. 告诉 Git 你是谁

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

2. 配好 .gitignore

这一步比上一步重要得多。 一旦把密码提交上去并推到公开仓库,即使删掉,历史里也还在。

这个博客的 .gitignore 里第一行就是:

# 环境变量(含数据库密码)——绝对不能提交
.env

如果不小心把密码提交了

第一件事不是删文件,是立刻去改掉那个密码。 只要它进过 Git 历史,就必须当作已经泄露来处理。

完整清单

git status          # 现在什么情况
git diff            # 我改了什么
git add <file>      # 挑出要提交的
git commit -m "..."  # 存一个快照
git pull            # 拿别人的改动
git push            # 推自己的改动
git log --oneline   # 看历史
git restore         # 丢掉未提交的改动
git restore --staged # 从暂存区撤回
git switch -c       # 建并切换分支
git merge           # 合并分支
git revert          # 安全地撤销已推送的提交

12 条。先把这些用熟,剩下的等真的需要时再查。