让我们考虑两种查看提交中所有更改文件的方法。
使用 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