git-show在提交的简单输出中重命名

git-show在提交的简单输出中重命名,git,Git,我需要查看在提交时完成的文件重命名,并能够解析输出。我做了一些研究,这是我能得到的最好结果: git show commit\u hash--摘要--格式=”“ 输出: rename src/{old/location => new/place}/lib.ts (100%) rename src/{old/location => new/place}/lib.types.ts (100%) create mode 100644 src/new/place/index.ts 然

我需要查看在提交时完成的文件重命名,并能够解析输出。我做了一些研究,这是我能得到的最好结果:

git show commit\u hash--摘要--格式=”“

输出:

 rename src/{old/location => new/place}/lib.ts (100%)
 rename src/{old/location => new/place}/lib.types.ts (100%)
 create mode 100644 src/new/place/index.ts
然而,我不想使用它,因为我认为它很难解析——我必须测试不同的文件名边缘情况,以确保路径总是被正确解析

我正在寻找类似于
将src/old/location/lib.ts重命名为src/new/place/lib.ts

使用git show而不带--summary选项,打印完整的文件路径(从\n重命名为)-这将很容易解析,尽管它还显示了整个文件的差异-这是我不想要的。如果我理解正确,从oldpath重命名/重命名为newpath是diff本身的一部分

是否有任何方法可以以可靠、易于解析的方式显示提交的重命名,而无需输出差异?

使用git-diff-tree(谢谢@fluffy)

git-diff-tree——查找重命名-r——名称状态——format=”“$commit\u hash

使用gitdiff

git diff——名称状态$commit\u hash~$commit\u hash

这两个命令都将输出如下内容:

R100 src/old/location/lib.ts src/new/place/lib.ts
R095 src/old/location/lib.types.ts src/new/place/lib.types.ts
A src/new/place/index.ts

git diff tree似乎是更好的选择,因为git diff版本在尝试检索第一次提交时将抛出致命错误。

因为
git show
是一个陶瓷命令,而不是管道命令:。尝试使用git diff tree--find renames-r。效果很好。谢谢。我做了更多的研究,在上面的命令中添加--name status选项将使输出更加精简。似乎
git diff
也可以处理这个问题。