git查看修改记录

本文介绍了如何使用Git进行代码审查及历史记录分析,包括查看文件修改记录、提交历史、作者信息等,适合各阶段开发者学习使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看文件中每行代码的最近一次修改人

git blame file_name
git blame <filename>
git blame -L 100,100 <filename>
git blame -L 100,+10 <filename>

查看最近两次变动及其变动点

 git log -p -2

显示增改行统计

 git log --stat

git log –pretty 选项,可以指定使用完全不同于默认格式的方式展示提交历史

按行展示spi_flash.c的每次提交

git log --pretty=oneline spi_flash.c

展示spi_flash.c的每次提交的作者和提交说明

git short --pretty=oneline spi_flash.c

展示spi_flash.c的作者提交人,日期等其他信息

git full --pretty=oneline spi_flash.c
git fuller --pretty=oneline spi_flash.c

git log –format,可以定制要显示的记录格式,这样的输出便于后期编程提取分析

git log --pretty=format:"%h - %an, %ar : %s"
选项说明
%H提交对象(commit)的完整哈希字串
%h提交对象的简短哈希字串
%T树对象(tree)的完整哈希字串
%t树对象的简短哈希字串
%P父对象(parent)的完整哈希字串
%p父对象的简短哈希字串
%an作者(author)的名字
%ae作者的电子邮件地址
%ad作者修订日期(可以用 -date= 选项定制格式)
%ar作者修订日期,按多久以前的方式显示
%cn提交者(committer)的名字
%ce提交者的电子邮件地址
%cd提交日期
%cr提交日期,按多久以前的方式显示
%s提交说明

作者(author)指的是实际作出修改的人,提交者(committer指的是最后将此工作成果提交到仓库的人。

用 oneline 或 format 时结合 –graph 选项,可以看到开头多出一些 ASCII 字符串表示的简单图形,形象地展示了每个提交所在的分支及其分化衍合情况

选项说明
-p按补丁格式显示每个更新之间的差异。
–stat显示每次更新的文件修改统计信息。
–shortstat只显示 –stat 中最后的行数修改添加移除统计。
–name-only仅在提交信息后显示已修改的文件清单。
–name-status显示新增、修改、删除的文件清单。
–abbrev-commit仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
–relative-date使用较短的相对时间显示(比如,“2 weeks ago”)。
–graph显示 ASCII 图形表示的分支合并历史。
–pretty使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。

git log 的其他命令

选项说明
-(n)仅显示最近的 n 条提交
–since, –after仅显示指定时间之后的提交。
–until, –before仅显示指定时间之前的提交。
–author仅显示指定作者相关的提交。
–committer仅显示指定提交者相关的提交。

git log –pretty=”%h - %s” –author=gitster –since=”2008-10-01” –before=”2008-11-01” –no-merges – t

 git log --pretty="%h - %s" --author=zhangyuhu --since="2016-10-01" --before="2017-11-01" --no-merges

使用 log 来查看某一行的所有操作

git log -L start,end:file
<think>我们正在处理用户的问题:查看Git中某个目录的修改历史记录。用户指定了目录,因此我们需要提供查看特定目录修改历史的命令。 根据Git知识,我们可以使用`git log`命令来查看提交历史,并通过指定目录路径来过滤该目录的修改历史。 同时,我们还可以结合其他选项来获得更详细的信息,例如使用`--name-status`来显示每次提交中修改的文件列表和状态。 步骤: 1. 基本命令:`git log <directory_path>` 这会显示该目录下的提交历史,但注意,它只会显示那些修改了指定目录下文件的提交。 2. 如果想要查看每次提交中修改的文件列表,可以加上`--name-status`选项: `git log --name-status <directory_path>` 3. 如果只想查看简单的提交信息(如单行显示),可以使用`--oneline`选项: `git log --oneline <directory_path>` 4. 还可以结合其他选项,比如`--stat`来显示文件更改的统计信息(每个文件修改的行数统计): `git log --stat <directory_path>` 5. 如果要查看某个时间段内的修改,可以结合`--since`和`--until`选项。 6. 另外,如果只想查看某个人的提交,可以使用`--author`选项。 注意:<directory_path>是相对于仓库根目录的路径,如果当前不在仓库根目录,可能需要使用相对路径或绝对路径。 示例: 假设我们想查看当前目录下的`src/utils`目录的修改历史,可以这样: `git log --oneline --name-status src/utils` 引用说明:根据提供的引用[1],我们知道`git log`是查看文件提交历史的命令,同样适用于目录。引用[3]提到了`git diff`用于查看未暂存的修改,但这里我们需要的是历史记录,所以用`git log`。 因此,我们将给出具体的命令和解释。</think>### Git 查看特定目录的修改历史 在 Git查看特定目录的修改历史,可以使用以下命令(将 `<目录路径>` 替换为你的目标目录): #### 1. **基础查看(完整提交日志)** ```bash git log -- <目录路径> ``` - 显示该目录下所有文件的提交历史 - 包含提交哈希、作者、日期和提交信息 - 示例:`git log -- src/utils`[^1] #### 2. **简化查看(单行模式)** ```bash git log --oneline -- <目录路径> ``` - 每条提交显示为单行(哈希 + 提交信息) - 示例:`git log --oneline -- docs/content` #### 3. **查看文件变更详情** ```bash git log --stat -- <目录路径> ``` - 显示每次提交的文件变更统计(增删行数) - 示例:`git log --stat -- config/` #### 4. **查看具体修改内容** ```bash git log -p -- <目录路径> ``` - 显示每次提交的详细代码差异(`+` 表示新增,`-` 表示删除) - 示例:`git log -p -- tests/` #### 5. **按时间过滤** ```bash git log --since="2024-01-01" --until="2024-06-30" -- <目录路径> ``` - 查看指定时间范围内的目录修改 - 示例:`git log --since="1 month ago" -- public/` #### 6. **按作者过滤** ```bash git log --author="用户名" -- <目录路径> ``` - 查看特定作者的目录修改记录 - 示例:`git log --author="alice" -- scripts/` #### 7. **图形化查看(分支拓扑)** ```bash git log --graph --oneline -- <目录路径> ``` - 显示分支合并关系的可视化历史 - 示例:`git log --graph --oneline -- src/components/` > ⚠️ 注意: > - 目录路径结尾**不要加斜杠**(如用 `src` 而非 `src/`) > - 使用相对路径(从 Git 仓库根目录开始) > - 添加 `--follow` 可追踪文件重命名历史(如 `git log --follow -- old_dir/ new_dir/`)[^2][^4] --- ### 操作示例 假设查看 `src/utils/` 目录的历史: ```bash # 查看最近3次修改的详细差异 git log -p -3 -- src/utils # 查看2024年5月的修改统计 git log --since="2024-05-01" --until="2024-05-31" --stat -- src/utils ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值