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

让我们考虑两种查看提交中所有更改文件的方法。

使用 git show 命令列出文件

以下列出文件的方式不太适合脚本,因为它是一个瓷器命令:

命令

git show --pretty="" --name-only <sha1-commit-hash>

结果如下:

index.html
javascript/application.js
javascript/ie6.js

参数

  • --pretty - 定义一个空的格式字符串,以避免在开头的 cruft。
  • --name-only - 仅显示受影响的文件名(感谢 Hank)。使用 --name-status 参数来查看每个文件发生了什么(添加、修改、删除)

git diff 命令

git diff 用于比较 Git 中提交的更改。

在 git diff 的帮助下,我们可以获取两个输入数据集并输出它们之间的修改。
它可以显示工作树和索引(或者树)之间、索引和树之间、两棵树之间、两个 blob 对象之间或者磁盘上两个文件之间的变化。

使用 git diff 列出两次提交之间所有更改的文件

如果要列出两次提交之间所有更改的文件,请使用 git diff 命令:

git diff --name-only <start-commit>..<end-commit>

我们还可以使用 --name-status 在每个文件旁边包含添加、修改或者删除的更改:

git diff --name-status <start-commit>..<end-commit>

使用 git diff-tree 命令列出文件

使用 git diff-tree 被认为是在提交中列出文件的首选方式,因为它是一个管道命令。
它用于比较通过两个树对象找到的 blob 的内容和模式。

命令

git diff-tree --no-commit-id --name-only -r <sha1-commit-hash>

结果如下:

index.html
javascript/application.js
javascript/ie6.js

参数

  • --no-commit-id - 禁止提交的 ID 输出。
  • --name-only - 仅显示受影响的文件名(感谢 Hank)。使用 --name-status 参数来查看每个文件发生了什么(添加、修改、删除)
  • -r - 递归到子树

Plumbing命令 和 Porcelain 命令

由于 Git 最初是一个工具包而不是用户友好的版本控制系统,因此有许多子命令执行低级工作。

这些命令称为Plumbing 命令,而用户友好的命令称为Porcelain命令。

较低级别的管道命令可以访问 Git 的内部工作原理,帮助演示 Git 的操作。
其中许多命令不是在命令行上手动使用的,而是用作新工具和自定义脚本的构建块。

日期:2020-06-02 22:16:40 来源:oir作者:oir