Come posso eseguire il backup di un repository git?


26

Sto pensando di passare da SVN a git. Con svn copio solo la mia cartella repo quando voglio eseguirne il backup. Comunque git non ne ha uno, quindi cosa devo fare?

Devo creare un clone su un'unità separata e aggiornarlo estraendo dal mio progetto? Quindi posso masterizzare / archiviare questa cartella e avrà tutta la cronologia?

Questo è probabilmente ovvio, ma voglio essere sicuro quando si tratta di backup. Fingo ancora che esista un repository di root.


Vedi anche: Backup di un repository GitHub (le risposte funzionano anche per progetti git non GitHub)
Martin Thoma,

Risposte:


14

Lo copi e basta. git fa utilizzare una cartella di pronti contro termine, è solo nascosto alla vista normale directory. (La cartella è denominata .gitsu sistemi * nix, quindi appare solo se si utilizza ls -a. Presumo che imposta l'attributo "nascosto" in Windows, ma non ho mai usato git in un ambiente Windows, quindi non sono sicuro di come viene gestito lì.)


C'è un paio di file di progetto nel mio baule che ignoro. Quindi posso letteralmente copiarlo? (Presumo che funzioni allo stesso modo di Linux). Quindi il clone è solo una copia del file? immagino che se tiro tutti i dati che voglio è nella cartella. Ho controllato che ci sono file .git ma ci sono file .svn nel mio trunk svn e non ho pensato di verificare se c'erano dati cronologici lì

2
Su Windows, è ancora .git, con l'attributo "Nascosto".
Grawity

1
@ acidzombie24: la .gitdirectory contiene l' intero stato del repository, inclusa la cronologia. (Questa è la parte "distribuita".)
Grawity

5
@grawity: è più la parte "auto-contenuta", la parte distribuita è quando si scambiano differenze tra i repository auto-contenuti :)
Akira

19

La risposta akira è corretta, ma è possibile aggiungere --mirror per creare un repository nudo (per un backup leggermente più piccolo).

Usiamo la seguente strategia (quasi esattamente):

git clone --mirror yourrepo backup.repo
tar cjf backup.repo.tar.bz2 backup.repo
scp backup.tar.bz2 ssh://somewhereelse

Quindi, per ripristinare dal backup:

tar xjf backup.repo.tar.bz2
git clone backup.repo yourrepo

2
Questo è utile, grazie. Come si usa il repository di cui è stato eseguito il backup per ripristinare l'albero di lavoro?
Jonathan Day

10

Sto usando il bundle git . Per eseguire un file di copia (un file di backup) eseguire:

git bundle create backup.bundle master

Per ripristinare il repository con branch master è sufficiente clonare il file backup.bundle:

git clone backup.bundle -b master my-project

2

crea un nuovo clone altrove:

 % git clone yourepo somewhereelse

tra l'altro, git ha una cartella repo, puoi trovarla nella tua copia di lavoro sotto la sottodirectory .git. ogni copia funzionante ha quella "cartella repo".


10
Non credo che un clone è accettabile come un backup, in quanto è non è una copia esatta. Almeno i rami remoti del repository clonato mancheranno nel clone e i rami del repository clonato appariranno come rami remoti nel clone.
sleske,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.