如何获取文件的提交哈希ID?

时间:2018-04-11 04:00:08

标签: git

我使用git checkout commit_hash path/to/file将文件回滚到旧版本。

之后,我忘记了用于检索此文件的提交哈希ID。我使用git status path/to/file,它显示此文件已被修改,即使我对此文件没有任何操作(我认为它与HEAD相比)。

有没有办法获取此检索文件的提交哈希ID?

2 个答案:

答案 0 :(得分:1)

您可以使用

git log filename

它会显示从最新开始的文件日志。如果忘记了,可以使用shell history命令。假设它不太老。

答案 1 :(得分:1)

尝试命令history | grep path/to/file

由于可能有许多提交保持相同版本的path/to/file,因此通过git命令的结果不够精确。这是其中一次尝试。

git hash-object path/to/file

你会得到一个哈希值($ hash)。它是path/to/file版本的blob名称。

for commit in $(git rev-list --all --reflog);do
    git ls-tree -r $commit -- path/to/file | if grep $hash;then echo $commit;fi
done

所有候选人都将被打印出来,你必须在他们的记忆中找出所有候选人。也许then git log -1 $commit会使其比then echo $commit更容易识别。