Files

78 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
要查看 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>` |
这些命令足够覆盖日常查看文件历史的需求。