git 显示以查看重命名文件的先前版本?

git show to view prior version of a renamed file?

我们重命名了一个文件,其中 git log --follow my/new-file 正确显示了重命名前后的更改。

但是此命令无法显示以前的版本:git show <rev>:my/new-file

我们必须 运行 git show <rev>:my/old-file.

有什么方法可以 运行 使用我的/new-文件而不是我的/old- 这个命令文件?

简短的回答很简单,如果不满意:不。

这里的问题是 git show 首先解决要显示的内容(通过 git rev-parse,或多或少),然后显示它,而 git rev-parse 不会遍历历史试图关注一个文件并从每个提交到它的父级做一个差异,看看它是否能找到看起来像重命名的东西。

然而,使用 git log --follow 正是这样做的:查看每个提交与父提交的比较,生成差异,并查看由此产生的差异是否表明可能 my/new-file 已重命名来自 my/old-file 当时。如果是这样,它会调整其下一个较旧的检查以使用 my/old-file.

Git 或许可以使用一个单独的程序(或 git log 中的模式)来查看某些文件是否在某些提交对中被重命名,如果是的话, 提供其他 git 实用程序的先前路径,例如 git show。然后你可以说:git show $(git whatwas HEAD <rev> my/new-file),或类似的东西(取决于这个假设的 git whatwas 命令的细节)。您可以使用我在 中概述的技术编写一个脚本,基本上执行此 whatwas。我敢肯定在这个过程中会出现各种烦人的细节,但这个理论似乎是合理的。