git - Blob /索引文件历史记录

时间:2016-02-11 21:29:55

标签: git

我正在寻找一种方法来在git中构建文件的完整历史记录并访问原始文件内容(而不是差异)。

为了做到这一点,我试图获取在git中暂存blob时生成的哈希值,然后我可以使用该哈希值来查找使用git add暂存的原始文件内容。

我找到了一种方法,通过查看完整的' raw'来获得分段哈希。承诺 git log --raw。

然而,这为我提供了一些我不需要的信息,例如作者,日期,提交信息。我希望能够在没有所有其他信息的情况下自己获取文件名和哈希值。我能够使用正则表达式修剪我想要的信息,但希望找到一个不需要修剪的解决方案,我希望有人可能有一个git咒语来获取它。

commit 0fef32119a00ca59b24686257fdd7e056c0bcb1a
Author: BenjaminWeber <benjamin.weber@bedarra.com>
Date:   Thu Feb 11 20:17:04 2016 +0000

commit message here

:000000 100644 0000000... e69de29... A  .deps
:000000 100644 0000000... 68af6a7... A  foo
:000000 100644 0000000... 2372199... A  bar

1 个答案:

答案 0 :(得分:0)

git help gitrevisions

中描述的旧版本中引用文件的语法
<rev>:<path>, e.g. HEAD:README, :README, master:./README
   A suffix : followed by a path names the blob or tree at the given
   path in the tree-ish object named by the part before the colon.

您可以使用git rev-list获取相关修订,并使用git show <rev>:<path>显示该时间点文件的内容。

也许这就是你想要的:

for hash in $(git rev-list HEAD -- .gitignore); do
  echo $hash
  git show $hash:.gitignore;
done

这显示了HEAD历史中.gitignore的所有版本。