2013-01-21 3 views
5

Ich habe einige Dateien, die ich suche, aber ich weiß nicht, wo sie in meinem Git-Repository (sowohl in Raum und Zeit) befinden. Ich spekuliere auch, dass es möglich ist, dass sowohl die Dateien als auch der Zweig, in dem sie sich befinden, gelöscht werden könnten.Liste ALLE Dateien, die jemals in einem Zweig in einem Git-Repository existierten

Wie konnte ich Liste jede Datei jemals in Existenz in dem ganz Git Repository? Ich weiß, dass gelöschte Dateien/Zweige ziemlich gut bereits Müll gesammelt haben könnten, und nun, es gibt nichts zu tun, als zu beten, dass es nicht schon passiert ist.

Danke!

Antwort

3

Das ist ein bisschen verrückt, aber es könnte tun, was Sie wollen:

#!/bin/sh 

content="[email protected]" 

for hash in $({ 
    git rev-list --objects --all 
    git rev-list --objects -g --no-walk --all 
    git rev-list --objects --no-walk \ 
     $(git fsck --unreachable | 
      grep '^unreachable commit' | 
      cut -d' ' -f3) 
    git fsck --unreachable | grep "^unreachable blob" | cut -d' ' -f3 
} 2> /dev/null | cut -d' ' -f1 | sort | uniq); do 
    if git cat-file blob $hash 2> /dev/null | grep -i $content > /dev/null ; then 
     echo $hash 
    fi 
done 

Ich versuchte, absolut jeden Klecks zugänglich, zu erhalten und für einen bestimmten Inhalt in jedem von ihnen suchen.

Sie können einen git cat-file -p hash auf jedem der generierten Hashes tun und finden Sie Ihre verlorene Datei.

Nebenbei bemerkt bin ich überrascht, keine schöne Möglichkeit zu sehen, absolut jedes Objekt im Repository verfügbar zu machen. Ich dachte daran, alles auszupacken und von dort aus zu gehen, das könnte auch eine bessere Lösung sein.


Ressourcen:

Verwandte Themen:

Verwandte Themen