阅读量:0
一、如何列出某次提交记录中修改过/新增的文件?
方法1:使用 git diff-tree
命令来查看某个提交记录中修改过/新增的文件。具体来说,你可以使用以下命令:
git diff-tree --no-commit-id --name-only -r <commit-hash>
命令解释
git diff-tree
:比较提交记录与其父提交记录的差异。--no-commit-id
:不显示提交的哈希值。--name-only
:仅显示文件名。-r
:递归显示所有文件的差异。
示例
假设你想查看提交记录 a1b2c3d4
中修改过的文件,可以使用以下命令:
git diff-tree --no-commit-id --name-only -r a1b2c3d4
示例输出
src/main/java/com/example/App.java src/main/resources/application.properties README.md
这种方式只会列出该次提交中实际修改过的文件,而不是所有文件。
方法2:详细的查看文件变更
如果你还想查看每个文件具体的修改内容,可以使用 git show
命令:
git show --name-only <commit-hash>
这将显示提交记录的详细信息,包括提交信息、作者、日期以及文件的修改内容。
示例
git show --name-only a1b2c3d4
输出示例
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0 Author: Your Name <your.email@example.com> Date: Mon Jul 1 12:34:56 2023 +0000 Initial commit src/main/java/com/example/App.java src/main/resources/application.properties README.md
二、如何列出多次提交记录中修改过/新增的文件?
如果你想查看多个提交记录中修改的文件,可以使用 git log
结合 git diff
,或者直接使用 git log
的 --name-only
选项。以下是几种方法来查看多个提交记录中修改的文件。
方法1:使用 git log
的 --name-only
选项
你可以使用 git log --name-only
来列出多个提交记录中修改的文件。这个命令将显示每个提交记录及其修改的文件。
git log --name-only --oneline
示例
git log --name-only --oneline
示例输出
a1b2c3d4e5 Initial commit src/main/java/com/example/App.java src/main/resources/application.properties README.md b1c2d3e4f5 Added new feature src/main/java/com/example/Feature.java
方法2(推荐):使用 git diff
比较多个提交记录
如果你想查看特定范围的提交记录中修改的文件,可以使用 git diff
命令。例如,查看两个提交记录之间的差异:时间小到大,左开右闭
git diff --name-only <commit-hash1> <commit-hash2>
示例
假设你想查看从提交 a1b2c3d4
到 b1c2d3e4
之间修改的文件:
git diff --name-only a1b2c3d4 b1c2d3e4
示例输出
src/main/java/com/example/App.java src/main/java/com/example/Feature.java src/main/resources/application.properties README.md
方法3:查看最近的N次提交中的修改文件
如果你想查看最近的N次提交中的修改文件,可以使用以下命令:
git log -n <N> --name-only --oneline
示例
查看最近的5次提交中的修改文件:
git log -n 5 --name-only --oneline
示例输出
b1c2d3e4f5 Added new feature src/main/java/com/example/Feature.java a1b2c3d4e5 Initial commit src/main/java/com/example/App.java src/main/resources/application.properties README.md
方法4:过滤唯一的文件列表
如果你想过滤出一段时间内所有唯一修改过的文件,可以结合使用 git log
和 sort
、uniq
命令。例如,查看最近的10次提交中的唯一修改文件:
由于有uniq命令,需要在 git bash
中执行
git log -n 10 --name-only --pretty=format: | sort | uniq
示例
查看最近的10次提交中的唯一修改文件:
git log -n 10 --name-only --pretty=format: | sort | uniq
示例输出
README.md src/main/java/com/example/App.java src/main/java/com/example/Feature.java src/main/resources/application.properties
这些方法可以帮助你查看多个提交记录中修改的文件,选择适合你需求的方法即可。