我正在寻找一种方法来在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
答案 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
的所有版本。