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/xxx、fix/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 条。先把这些用熟,剩下的等真的需要时再查。