检查文件内容是否已在git存储库中

检查文件内容是否已在git存储库中,git,version-control,hash,Git,Version Control,Hash,如果一个具有相同内容的文件已经在git版本控制下,我如何检查呢?这似乎是一件很奇怪的事情(为什么不直接添加它呢?),但是: 如果文件foo的内容尚未在回购中,则将失败或(不太可能)打印除blob以外的内容。这会让你半途而废;接下来,您必须确定是否引用了该散列ID(即,它不是一个悬空的blob),如果是,则通过什么引用。它可能被索引引用(仅在某些提交中,或者除了在某些树中之外)。若要查看它是否位于提交中的树中,请将repo克隆到一个--bare克隆(如果尚未克隆),并查看该ID是否(仍然)在那里有

如果一个具有相同内容的文件已经在git版本控制下,我如何检查呢?

这似乎是一件很奇怪的事情(为什么不直接添加它呢?),但是:

如果文件
foo
的内容尚未在回购中,则将失败或(不太可能)打印除
blob
以外的内容。这会让你半途而废;接下来,您必须确定是否引用了该散列ID(即,它不是一个悬空的blob),如果是,则通过什么引用。它可能被索引引用(仅在某些提交中,或者除了在某些树中之外)。若要查看它是否位于提交中的树中,请将repo克隆到一个
--bare
克隆(如果尚未克隆),并查看该ID是否(仍然)在那里有效

git cat-file -t $(git hash-object -t blob foo)