78 lines
2.0 KiB
Markdown
78 lines
2.0 KiB
Markdown
要查看 Git 仓库中**指定文件的所有修改记录**(包括谁、何时、改了什么),最直接的方法就是使用 `git log` 配合文件名。
|
||
|
||
### 📜 基本命令:显示所有影响该文件的提交
|
||
|
||
```bash
|
||
git log -- <文件路径>
|
||
```
|
||
|
||
示例:
|
||
```bash
|
||
git log -- src/main.py
|
||
```
|
||
|
||
这样会按时间倒序列出所有修改过 `src/main.py` 的提交。
|
||
|
||
### 🔍 查看每次修改的具体内容(diff)
|
||
|
||
加上 `-p` 或 `--patch` 就能看到每次提交中该文件具体的增删行:
|
||
|
||
```bash
|
||
git log -p -- src/main.py
|
||
```
|
||
|
||
### 🚶 跟踪文件重命名/移动
|
||
|
||
如果文件曾被重命名或移动过,默认 `git log` 不会自动跟踪。加上 `--follow` 即可:
|
||
|
||
```bash
|
||
git log --follow -p -- src/main.py
|
||
```
|
||
|
||
> 注意:`--follow` 在某些 Git 版本中不能与 `--reverse` 等参数同时使用,但基本场景够用。
|
||
|
||
### 📅 更紧凑的显示(一行摘要 + 统计)
|
||
|
||
```bash
|
||
git log --oneline --stat -- src/main.py
|
||
```
|
||
|
||
- `--oneline`:每个提交一行
|
||
- `--stat`:显示文件修改的统计(增加/删除行数)
|
||
|
||
### 🎯 只查看某个时间范围或作者
|
||
|
||
```bash
|
||
# 最近 5 次修改
|
||
git log -5 -- src/main.py
|
||
|
||
# 某个作者
|
||
git log --author="张三" -- src/main.py
|
||
|
||
# 某个日期之后
|
||
git log --since="2024-01-01" -- src/main.py
|
||
```
|
||
|
||
### 💡 补充:逐行查看文件每行的最后修改
|
||
|
||
如果你想知道文件每一行最后一次是谁改的,用 `git blame`:
|
||
|
||
```bash
|
||
git blame <文件路径>
|
||
```
|
||
|
||
这会输出每行的内容、提交哈希、作者、时间。如果你想忽略空白或移动过的行,可以用 `git blame -w -C`。
|
||
|
||
---
|
||
|
||
### 总结
|
||
|
||
| 需求 | 命令 |
|
||
|------|------|
|
||
| 只看提交列表 | `git log -- <file>` |
|
||
| 看每次改了什么 | `git log -p -- <file>` |
|
||
| 跟踪重命名 | `git log --follow -p -- <file>` |
|
||
| 统计改了多少行 | `git log --stat -- <file>` |
|
||
| 查看每行最后修改人 | `git blame <file>` |
|
||
|
||
这些命令足够覆盖日常查看文件历史的需求。 |