I have a file from a project that uses GIT as repository. For that file I need to find out to which revision this file belongs to. The file is stand-alone outside of an repository (not tracked) therefore the standard git commands do not work.
Is there a way to determine the revision this file belongs to only based on its filename and its content?
In case you are using the Tower Git client, you can use the reset command right from a commit's contextual menu. And in case you made a mistake: simply hit CMD+Z to undo the reset and restore the removed commits!
Use git log --all <filename> to view the commits influencing <filename> in all branches.
I don't think there's a one-shot command to do this - git's object model makes it quite laborious to work back from a blob to commits that might reference it. Here's one way of doing it, though. First of all, find the hash of the file that git would use, with:
git hash-object foo.c
Suppose that returns f414f31
. Then you can use a script like the following:
for c in $(git rev-list --all)
do
( git ls-tree -r $c | grep f414f31 ) && echo Found the blob in commit: $c
done
... to show all the commits that contain that blob. If you want to know which branches those commits are on, you can do:
git branch -a --contains 1a2b3c4d
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With