Git 请参阅文件的第n个早期版本

Git 请参阅文件的第n个早期版本,git,Git,我想查看文件的旧版本,但是: git show HEAD~1:main.c 给我上一次的承诺。自从上次提交以来,该文件没有更改,因此我看到了相同的内容。为了找到该文件的旧版本,我需要开始手动增加修订规范,直到找到实际差异。这令人沮丧 在这种情况下,我不关心提交:我只想看到这个特定文件的早期版本。如何给出“第n个最旧版本”类型的修订规范?修订规范始终与提交相关,而与文件版本无关 我得到的最接近的结果是: git log --follow --pretty=oneline -- annotated

我想查看文件的旧版本,但是:

git show HEAD~1:main.c
给我上一次的承诺。自从上次提交以来,该文件没有更改,因此我看到了相同的内容。为了找到该文件的旧版本,我需要开始手动增加修订规范,直到找到实际差异。这令人沮丧

在这种情况下,我不关心提交:我只想看到这个特定文件的早期版本。如何给出“第n个最旧版本”类型的修订规范?修订规范始终与提交相关,而与文件版本无关

我得到的最接近的结果是:

git log --follow --pretty=oneline -- annotated-bower.json
这给了我一个更改此文件的提交列表。现在,我看到了这个列表,我怎么能告诉git show类似于:

git show OLDER~3:main.c
无需手动复制粘贴提交规范:

git show b27a57c6732200d8ef8b5b8c87d07fe67f37e9db:main.c
我当然可以自己实现这一点:

git-previous.sh main.c 3

解析git log的输出——follow--pretty=oneline以获取提交哈希,然后调用git show,但我希望避免重新发明轮子。此外,这似乎是一个非常有用的功能,这肯定是stock
git
的一部分,我刚刚对它进行了监督,对吗?

如果你正确地输入了
git log
,你不必解析任何东西:

git log -10 --follow --pretty=%h -- /path/to/your/file
打印文件的最后10个(
-10
)短提交哈希(
%h

获取
git log
的输出,将其放入一个列表中,并在条目上循环。完成了

也许这就是为什么没有单独的命令来实现这一点的原因。。。关于你关于

此外,这似乎是一个非常有用的功能[…]

我使用git已经有一段时间了,实际上从来没有必要按顺序查看文件的历史记录。变化很有趣。因此,您还可以向
gitk
提供一个路径,该路径将显示一个更改列表,其中显示了
gitk
中的差异:

gitk -- /path/to/your/file

“获取git日志的输出,将其放入一个列表中,并在条目上循环。Done。”我不称之为Done,因为在中,我将很快看到该文件的第5个版本。这需要大量的输入(和打字),所以如果git不支持开箱即用,我就必须将其放入脚本中。我们可能会以不同的方式使用git,因为我有时需要这种工作流(虽然不是经常需要),是的,gitk在这里做的是正确的,但我想要一个命令行版本(git似乎不提供,开箱即用?)来接受这一点。git似乎不能直接做到这一点,所以需要一些脚本。