状态查看与提交历史
20 分钟
状态查看与提交历史
日常用 Git,80% 的时间是在看「现在改了什么」和「以前改过什么」。git status 和 git log 是最常用的两个命令。
学习目标
- 读懂
git status三种状态:未跟踪、已修改、已暂存 - 用
git log及其常用参数翻历史 - 使用
.gitignore排除node_modules等目录
git status 详解
在已有提交的仓库里改文件后:
git status
典型输出片段:
On branch main
Changes not staged for commit:
modified: README.md
Untracked files:
notes.txt
| 状态 | 含义 | 下一步 |
|---|---|---|
| Untracked | 新文件,Git 未跟踪 | git add 后开始跟踪 |
| modified(未 staged) | 已跟踪文件被改,未进暂存区 | git add 或 git restore 丢弃 |
| staged | 已 add,等待 commit | git commit |
查看具体改了哪几行:
git diff # 工作区 vs 暂存区
git diff --staged # 暂存区 vs 最后一次 commit
撤销与恢复(未 push 前)
# 丢弃工作区对某文件的修改(危险,不可恢复)
git restore README.md
# 把文件从暂存区撤出,保留工作区修改
git restore --staged README.md
已
commit的内容用git log找 commit id,再用git revert或git reset(团队仓库慎用 reset)。
git log 常用写法
git log # 完整历史
git log --oneline # 一行一条,适合快速浏览
git log -5 # 最近 5 条
git log --graph --oneline --all # 分支图(学完分支后更有用)
git log -p README.md # 某文件的变更历史
git log --author="柏风" # 按作者筛(示例)
每条 commit 的 SHA(如 a1b2c3d)是唯一 id,后面合并、回退都会用到前 7 位通常就够。
.gitignore
不要把依赖和构建产物提交进仓库。在项目根创建 .gitignore:
# Node / 前端
node_modules/
.next/
dist/
release/
# Java
target/
*.class
# 环境与 IDE
.env
.env.local
.idea/
*.log
保存后:
git add .gitignore
git commit -m "chore: add gitignore"
已被跟踪的文件不会因为加入 .gitignore 而消失,需先 。