git列出提交记录的文件路径

avatar
作者
筋斗云
阅读量: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> 

示例

假设你想查看从提交 a1b2c3d4b1c2d3e4 之间修改的文件:

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 logsortuniq 命令。例如,查看最近的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 

这些方法可以帮助你查看多个提交记录中修改的文件,选择适合你需求的方法即可。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!