2016-07-30 6 views
2

Ich habe eine git diff-Ausgabe, die Zeilen wie folgt enthält: index 0056c73..92c6cbd 100644 für jede Datei. Ich weiß, aus welchem ​​Repository es stammt, habe aber leider keine Ahnung welche Revision des Repositorys es diffamiert.Wie findet man Dateirevision oder Commit von Git-Repository durch einen Datei-Hash?

Wie finde ich das Commit des Repositorys, gegen das das diff ist?

Alternativ, wie finde ich die genaue Festschreibung jeder Datei, die die Vorabbildhashes in der diff entsprechen? (Dh die Version einer Datei hat den 0056c73 Hash im Beispiel oben)

Antwort

1

Wenn Sie den Pfad der Datei kennen, können Sie beginnen alle Commits für den Weg anzeigt:

git log --all --pretty=format:%H <path> 

Wenn 0056c73 ist Ein BLOB SHA1 für diese Datei, ein git ls-tree wird alle Einträge SHA1, und Sie können grep die, die Sie suchen.

"Which commit has this blob?" schlägt vor, dieses Ein-Liners von aragaer:

git log --all --pretty=format:%H <path> | xargs -n1 -I% sh -c "git ls-tree % <path> | grep -q <hash> && echo %" 

(ersetzen <hash> mit 0056c73)