GIT:基于文件确定修订

GIT:基于文件确定修订,git,revision,Git,Revision,我有一个使用GIT作为存储库的项目中的文件。对于该文件,我需要找出该文件属于哪个版本。该文件在存储库之外是独立的(未跟踪),因此标准git命令不起作用 有没有办法只根据文件名和内容来确定该文件所属的版本?我认为没有一个一次性命令可以做到这一点-git的对象模型使得从blob返回到可能引用它的提交非常困难。不过,这里有一种方法。首先,查找git将使用的文件的散列,使用: git hash-object foo.c 假设返回f414f31。然后可以使用如下脚本: for c in $(git re

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


有没有办法只根据文件名和内容来确定该文件所属的版本?

我认为没有一个一次性命令可以做到这一点-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

我不明白你的问题。您的文件是否被跟踪?在存储库之外意味着“未被跟踪”。@Robert“在存储库之外”,对我来说,意味着它从未被跟踪,这意味着它没有版本,因此您的问题无效。我认为你要找的措辞是文件在某个时间点被跟踪。