2017-06-02 2 views
0

Ich habe ein Git-Repository (nennen wir es MyRepo), einen lokalen Arbeitsklon des Git-Repository und eine Kopie eines Unterverzeichnisses des Haupt-Git-Repositorys von einem anderen Rechner (nennen wir es SomeSubDirectory).Herauszufinden, von welchem ​​git ein Verzeichnis stammt?

Mein Git Repository hat ein bisschen Geschichte (~ 500 Commits oder so), und auch ein paar Zweige.

Leider, als ich ursprünglich SomeSubDirectory an einen anderen Ort kopiert habe, habe ich vergessen zu notieren, welchen git commit Hash es war! Wie kann ich herausfinden, welche git commit Hash diese Kopie von SomeSubDirectory ist?

+1

Wenn die Dateien sind * alle * die Dateien aus diesem Verzeichnis und nicht verändert wurde, versuchen Sie eine macht git-Repository für es, commit alle Dateien und überprüfen Sie den Hash des Baumobjekts, dann sehen Sie, ob dieser Hash im Quell-Repository vorhanden ist. –

+0

@ LasseV.Karlsen 'SomeSubDirectory' existiert genau, mit all seinen Dateien, in einigen Commits in meinem Repository. Leider ist es nicht das einzige Verzeichnis im Repository, also wird der Commit-Hash nicht anders sein? Außerdem hat 'SomeSubDirectory' schon eine Weile und hat sich im Laufe der Zeit sehr verändert, also bin ich nach dem Commit, bei dem' SomeSubDirectory' genau gefunden werden kann. – starbeamrainbowlabs

+0

Der Commit-Hash, ja, aber nicht der Tree-Hash. Der Baum-Hash wird basierend darauf berechnet, welche Dateien vorhanden sind und welche Hashes sie haben, nicht, wann Sie festgeschrieben haben oder wen Sie als festschreiben, noch welche Eltern für diese Festschreibung existierten. –

Antwort

0

Sie können git log verwenden und durch den Verzeichnispfad spezifiziert, wird es die Commits in Bezug auf dieses Unterverzeichnis nur herausfiltern:

git log --oneline SomeSubDirectory 

Hinweis: Ich habe die --oneline für eine einfachere Ausgabe verwendet haben, aber Sie können jedes beliebige Format verwenden.

Dies kommt mit einer Liste von Commits zurück, die von den neuesten am Anfang bis zum ersten Commit am Ende angeordnet sind. Nun, der Einfachheit halber könnte man Pfeife dies zu tail und die letzte Zeile - also die erste commit:

git log --oneline SomeSubDirectory | tail -n 1 
+0

Danke für die Antwort! Leider bin ich nach dem spezifischen Commit, das eine Version von 'SomeSubDirectory' hat, das mit einer Kopie identisch ist, die außerhalb der Versionskontrolle ist, nicht eine Liste von Commits, in denen es geändert wurde, da' SomeSubDirectory' ziemlich viel Geschichte hat besitzen. – starbeamrainbowlabs

+0

Jetzt verstehe ich es, ok. – matov

Verwandte Themen