2013-01-21 13 views
5

Ho alcuni file che sto cercando, ma che non so dove si trovano nel mio repository git (sia nello spazio che nel tempo). Inoltre suppongo che sia possibile che sia i file che il ramo in cui risiedono possano essere cancellati.Elenca TUTTI i file che sono mai esistiti in OGNI succursale in un repository git

Come potrei elencare ogni di file sempre in atto nel tutta repository git? So che i file/rami cancellati potrebbero essere già stati raccolti e, beh, non c'è niente da fare che pregare che non sia già successo.

Grazie!

risposta

3

Questo è un po 'folle, ma potrebbe fare quello che vuoi:

#!/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 

Ho cercato di ottenere assolutamente ogni blob accessibili, e cercare un contenuto specifico in ciascuno di essi.

È possibile eseguire uno git cat-file -p hash su ciascuno degli hash generati e trovare il file perso.


Su un lato nota, sono sorpreso di non vedere alcun modo piacevole per elencare assolutamente ogni oggetto disponibile nel repository. Stavo pensando di disfare tutto e andare da lì, anche quella potrebbe essere una soluzione migliore.


Risorse:

Argomenti correlati:

Problemi correlati