在git中找到第一个文件提交

bee*_*bee 10 git

情况:我有一个github项目发布的tar.gz,但想知道从哪个提交中获取.它似乎没有被标记,或者从提交消息本身看起来很明显.

所以我可以计算文件的sha1,但是想知道这些属于哪个提交?

打电话给git巫师!

Bor*_*lid 2

由于 git 存储的哈希不仅仅包括文件内容(理论上,哈希冲突无论如何都会发生),为了真正确定您拥有正确的文件版本,您需要比较内容。

for rev in $(git log --format=%H -- /path/to/file); do
   git diff --quiet $x:/path/to/file my-current-file;
   if [[ $? -eq 0 ]]; then
      echo $x;
   fi
done
Run Code Online (Sandbox Code Playgroud)

英语:以相反的顺序迭代更改文件的修订版本。对于每个此类修订,将文件版本与树外文件进行比较。如果两个文件相同,则打印修订哈希值。

如果您想对整个 tarball执行此操作,您可以执行相同的操作,但比较整个树而不是单个文件(并省略文件路径作为 的参数git log) - 使用您喜欢的任何宽容的 diff 选项。