GIT:根据文件确定修订版

时间:2011-09-12 12:22:26

标签: git revision

我有一个使用GIT作为存储库的项目中的文件。对于该文件,我需要找出该文件属于哪个版本。该文件在存储库外部是独立的(未跟踪),因此标准的git命令不起作用。

有没有办法根据文件的文件名及内容来确定此文件所属的修订版本?

1 个答案:

答案 0 :(得分:16)

我认为没有一次性命令可以做到这一点 - git的对象模型使得从blob返回到可能引用它的提交非常费力。不过,这是一种做法。首先,找到git将使用的文件的哈希值:

git hash-object foo.c

假设返回f414f31。然后您可以使用如下脚本:

for c in $(git rev-list --all)
do
   ( git ls-tree -r $c | grep f414f31 ) && echo Found the blob in commit: $c
done

...显示包含该blob的所有提交。如果您想知道这些提交所在的分支,您可以这样做:

git branch -a --contains 1a2b3c4d