在提交的简单输出中显示重命名



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

git show commit_hash --summary --format=""

输出:

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

然而,我不想使用它,因为我认为它很难解析——我必须测试不同的文件名边缘情况,以确保路径始终正确解析。

我在找类似rename src/old/location/lib.ts to src/new/place/lib.ts的东西

使用git show without--summary选项,打印完整的文件路径(rename from rename to(-这很容易解析,尽管它也显示了整个文件的diff-这是我不想要的。如果我理解正确的话,从oldpath/rename到newpath的重命名是diff本身的一部分。

有没有什么方法可以在不输出diff的情况下,以可靠、易于解析的方式显示提交的重命名?

使用git-diff树(感谢@floffy(

git diff-tree --find-renames -r --name-status --format="" $commit_hash

使用git-diff

git diff --name-status $commit_hash~ $commit_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

gitdiff树似乎是更好的选择,因为gitdiff版本在尝试检索第一个提交时会抛出致命错误。

最新更新