Git唯一校验和

时间:2014-05-05 19:49:26

标签: git hash checksum

有没有人知道Git是否可以为本地计算机上的当前代码提供哈希值。

基本上,GIT承认整个文件系统的SHA1哈希值(a.k.a留下未跟踪的文件),可能还要保留文件权限吗?

一直在寻找它,但却无法找到它。

我犯了经典的错误,就是在生产服务器上进行修改,然后进行提交,现在我想要自杀。

问候

1 个答案:

答案 0 :(得分:2)

对于任何提交的完整树内容,可以使用快速且脏的校验和(根据定义,它仅包括跟踪文件,但也包括文件的执行位)。这是附加到提交的树对象的SHA-1:

$ git rev-parse HEAD^{tree}
61c3891747a3c82338ac995524e5d5958ec473b4
$ git rev-parse HEAD~3^{tree}
36812666a6ea99efc7455c7437a5e560f3803d46

要获取当前索引的树ID, 1 将索引写入存储库: 2

$ git write-tree
61c3891747a3c82338ac995524e5d5958ec473b4

如果这与某些现有提交的树ID匹配,那么您的工作树(当然不考虑未跟踪文件)与该提交中的树匹配。


1 因此,如果您的索引与工作树不匹配,则需要git add和/或git rm --cached任何文件。

2 如果您只想与HEAD树进行比较,这基本上只是git status的限制版本,其副作用是将树对象写入可能只需要在以后进行垃圾回收的存储库。所以git status通常是要做的事情。