2012-03-21 10 views
14

i creata backup del mio repository git come in How to backup a local Git repository? proposto conripristino repository git da backup fascio

git bundle create /tmp/foo-all --all 

posso vedere tutti refs sono lì, compreso un ref remoto creato da git-svn. Ora non riesco a capire come ripristinare di nuovo questo bundle in un repository locale. Sono abbastanza sicuro di averlo già fatto una volta. Ho provato git-clone ma questo mi dà un repository solo con il mio bundle di backup come repo remoto.

Ho anche provato

git init 
git bundle unbundle /tmp/foo --all 

, ma questo solo elenca tutti i riferimenti ...

Verifica il bundle dà:

$ git bundle verify $somewhere/foo.bundle 
The bundle contains 12 refs 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/master 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/remotes/git-svn 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx HEAD 
The bundle requires these 0 ref 
$somewhere/foo.bundle is okay 

risposta

5

Bundle contiene non i file, ma delta, è è necessario la base per ricreare il contenuto del file. Devi prima clonare, separare più tardi. Init invece di clone consentita solo nel caso in cui, in cui fascio richiede 0 arbitri

Non ignorare git bundle verify prima unbundling

git-bundle(1) - Linux man page

utilizzato per verificare che un file bundle è valida e sarà applicato in modo pulito per il repository attuale. Ciò include verifiche sul formato del pacchetto nonché sul controllo dell'esistenza dei commit dei prerequisiti e sul completo collegato nel repository corrente. git bundle stampa un elenco di mancate commit, se presenti, ed esce con uno stato diverso da zero.

Se si sta creando il repository, allora si può clonare dal fascio, come se si trattasse di un repository remoto invece di creare un repository vuoto e poi tirare o del recupero di oggetti dal fascio

+0

la verifica non si presenta con arbitri mancanti. – user1283719

+2

@ user1283719 'git clone foo.bundle'? –

+0

'git clone foo.bundle' crea un nuovo repository con il mio bundle di backup come repository remoto come sopra indicato. Il mio repository locale è irreparabile, quindi mi piacerebbe ripristinarlo dal backup inclusa la possibilità di usare git-svn sul suo ramo remoto. – user1283719

17

Risposta breve:

$ git bundle verify $somewhere/foo.bundle 
$ git clone $somewhere/foo.bundle 
Cloning into 'foo'... 
Receiving objects: 100% (10133/10133), 82.03 MiB | 74.25 MiB/s, done. 
Resolving deltas: 100% (5436/5436), done. 
$ cd foo 
$ git status 
... 

Pigro Badger ha detto questo, ma è nell'ultimo paragrafo. :)

4

ho la versione più recente di Git è sufficiente per fare:

git clone bundle.file 

tutta comandi:

mkdir ~/git 
cd ~/git 
git clone /path/to/bundle.file 

Sarà ripristinare completamente il tuo di git contenuti repository nudo (che si compila in quanto è fonte normale). Non hai bisogno di nessun altro file. Il file bundle è sufficiente.

E 'saggio di verificare sempre si bundle file prima unbundle come segue:

git bundle verify /path/to/bundle.file