我想看一个旧版本的文件,但是这个:
git show HEAD~1:main.c
给了我之前的提交。自上次提交以来,该文件没有更改,因此我看到相同的内容。为了找到该文件的旧版本,我需要手动增加修订版规范,直到找到实际的差异。这令人沮丧。
在这种特殊情况下,我不关心提交:我只想查看此特定文件的先前版本。如何提供“第N个最旧版本”类型的修订规范?修订规范I know始终与提交相关,而不是与文件版本相关。
我最接近的是:
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
,但我想避免重新发明轮子。此外,这似乎是一个非常有用的功能,这是肯定股票git
的一部分,我刚刚监督它,对吗?
答案 0 :(得分:3)
如果你正确地喂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