git 连续显示文件的旧版本



以下是在给定提交时获取文件内容的方法:

git show <commmit>:path/to/checked/in/file

列出文件所有修订版的一个好方法是:

git log [-fancy -git -log -flags] path/to/checked/in/file

但是,这是一个多步骤的过程。我必须使用后者来列出自己的一些提交,然后将其复制粘贴到前一个咒语中。

我想知道的是 git 中是否有任何语法允许我(类似于 HEAD^ 的语义,HEAD~6(指定此文件的较旧的第 n 个修订版。 HEAD:path/to/file^^此文件的倒数第二个修订版。

典型用例:

diff deployed/somewhere/file <(git show HEAD:path/to/file)

而且我真的真的只是想用一些^修改这个 shell 命令,以继续扫描file的修订版。

这种方法实际上仍然可用。只是我可能要跋涉过去HEAD~35,才能遇到file中内容的第一次变化等等......

它没有语法 - 图形运算符直接处理提交图,而您的git log -- <path>只是选择要显示的特定提交,同时仍然查看更大的图。

你可以做的是使用 git rev-list ,这是git log的姊妹命令,用于脚本编写。 用于git log的选项适用于git rev-list,但git rev-list生成提交哈希 ID 作为输出流。 因此:

git rev-list HEAD -- path/to/file > /tmp/commit_hash_list

获取git log将显示的提交的哈希 ID,每行一个。 读取行,选择第 n 行,然后git show <hash>:<path>提取文件。

(将HEAD替换为您将酌情提供给git log的分支名称、--all或其他此类选项。 无论出于何种原因,git log将默认使用 HEAD ,而git rev-list需要一个起点。

最新更新