我需要查看在提交时完成的文件重命名,并能够解析输出。我做了一些研究,这是我能得到的最好的:
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版本在尝试检索第一个提交时会抛出致命错误。