乐闻世界logo
搜索文章和话题

Git 如何列出提交中的所有文件?

9 个月前提问
5 个月前修改
浏览次数131

6个答案

1
2
3
4
5
6

如何列出提交中的所有文件?,要列出一个 Git 提交中的所有文件,你可以使用 git show 命令结合 --name-only 或者 --name-status 选项。这里是如何操作的:

  1. 使用 --name-only 选项:
sh
git show --name-only <commit-hash>

<commit-hash> 是你想要查看的提交的哈希值。这个命令会列出那个提交中更改(包括添加和删除)的所有文件名。

  1. 使用 --name-status 选项:
sh
git show --name-status <commit-hash>

这个命令不仅会列出文件名,还会显示每个文件的状态,比如 M 代表修改(Modified),A 代表添加(Added),D 代表删除(Deleted)。

如果你只是想要获得文件列表,而不想看到提交的其他信息(比如 diff 或者提交信息),你可以使用 --pretty=format: 来避免打印提交的其他信息:

sh
git show --pretty=format: --name-only <commit-hash>

或者:

sh
git show --pretty=format: --name-status <commit-hash>

如果你不知道提交的哈希值,但是知道是最近的提交,你可以使用 HEAD 指向最新的提交,或者使用 HEAD~1 来表示最新提交的前一个提交,以此类推。例如,列出最近提交中的所有文件:

sh
git show --pretty=format: --name-only HEAD

此外,如果你想要查看某个特定分支或标签中最后一次提交修改了哪些文件,你可以将分支名或标签名替换 HEAD。例如,查看名为 feature-branch 的分支的最后一次提交:

sh
git show --pretty=format: --name-only feature-branch

使用这些方法,你可以很容易地查看 Git 提交中包含的所有文件。

2024年6月29日 12:07 回复

首选方式(因为它是一个_管道_命令;旨在编程):

shell
$ git diff-tree --no-commit-id --name-only bd61ad98 -r index.html javascript/application.js javascript/ie6.js

另一种方式(对于脚本来说不太受欢迎,因为它是一个_瓷器_命令;意味着面向用户)

shell
$ git show --pretty="" --name-only bd61ad98 index.html javascript/application.js javascript/ie6.js

  • 抑制--no-commit-id提交 ID 输出。
  • --pretty参数指定一个空格式字符串以避免开头出现混乱。
  • --name-only参数仅显示受影响的文件名(感谢 Hank)。--name-status如果您想查看每个文件发生了什么(删除修改添加) ,请改为使用
  • 参数-r是递归到子树
2024年6月29日 12:07 回复

如果你想获取已更改文件的列表:

shell
git diff-tree --no-commit-id --name-only -r <commit-ish>

如果你想获取一次提交中所有文件的列表,你可以使用

shell
git ls-tree --name-only -r <commit-ish>
2024年6月29日 12:07 回复

我只是假设这gitk不是我们所希望的。在这种情况下,请尝试git show --name-only <sha>

2024年6月29日 12:07 回复

我个人将--stat和**--onelineshow**命令结合使用:

shell
git show --stat --oneline HEAD git show --stat --oneline b24f5fb git show --stat --oneline HEAD^^..HEAD

如果您不喜欢/想要添加/删除统计信息,可以将**--stat替换为--name-only**

shell
git show --name-only --oneline HEAD git show --name-only --oneline b24f5fb git show --name-only --oneline HEAD^^..HEAD
2024年6月29日 12:07 回复

你也可以做

shell
git log --name-only

您可以浏览各种提交、提交消息和更改的文件。

输入 q 即可恢复提示。

2024年6月29日 12:07 回复

你的答案