2015-01-19 8 views
6

Ho bisogno di lavorare su un computer offline, in cui non riesco ad accedere al mio repository. Ora anche io non voglio perdere l'uso di Git del tutto.Copia git repository su macchina offline e spingi/tira tramite memory stick

Domande:

  • Qual è il modo migliore per copiare il mio repository su una macchina offline tramite memory stick?
  • C'è un modo per copiare le patch tramite il filesystem?

Edit: avrei detto che dovrò consegnare la chiavetta per un amministratore che farà la copia per me, vale a dire non riesco a montare il bastone con il mio utente.

risposta

10

Per copiare un repository completo Git, è sufficiente copiare la cartella .git; contiene tutto. Git utilizza nomi di file sicuri e ignora i timestamp all'interno del repository, quindi questi dati sono al sicuro dalle solite stranezze del file system.

Sulla macchina di destinazione, creare una cartella, copiare la cartella .git all'interno. Ora git checkout <branch> ti otterrà una copia di lavoro.

Se si desidera spostare le patch avanti e indietro invece dell'intero repository, quindi git format-patch <branch> creale. Il comando creerà tutte le patch necessarie per aggiornare un repository remoto (ad esempio, l'output conterrà tutto ciò che non è stato ancora spinto). puoi anche dargli ID commit (= inizia con questo commit) o ​​intervalli.

Per applicarli, utilizzare git am < 0001.... sul repository remoto.

correlati:

+0

Buon consiglio. E dopo la copia iniziale è possibile ad es. usa 'format-patch' e invia per e-mail le patch a te stesso per evitare di dover coinvolgere il tuo sysadm per mantenere sincronizzato il repository offline. – drRobertz

4

Per copiare il repository sulla memory stick, utilizzare semplicemente git clone e quindi utilizzare git pull per aggiornarlo.

Ad esempio, sul computer on-line, con la memory stick montato, fare

cd <memory-stick-mount-point> 
git clone <local-path-to-git-repo> 

ora il <local-path-to-git-repo> sarà la origin a distanza per il pronti contro termine sul vostro USB-stick, così più tardi è possibile semplicemente utilizzare git push/pull (quando montato sulla macchina online) per sincronizzare il lavoro offline.

Il repository git sulla memory stick è autonomo, quindi ora puoi lavorare contro quello su qualsiasi computer, quindi sincronizzare come sopra quando lo monti sulla tua macchina online.

Modifica, re: non avere il permesso di montare il bastone da soli:

Se si può chiedere all'amministratore di git clone il repo sulla Memory Stick è bene. In caso contrario, l'amministratore può semplicemente copiare l'intera directory project.git (se si tratta di un semplice repository) o project/.git (altrimenti) nella memory stick, e puoi lavorare contro quello, la cosa a cui prestare attenzione è che i telecomandi , ecc. saranno quelli della macchina online.

Quindi, tirare non è un problema, ma spingere potrebbe richiedere un ulteriore intervento se non ci si fida del proprio sysadm per risolvere i conflitti di unione per conto dell'utente. Se si dispone di un proprio ramo (es), la fusione non è un problema. Altrimenti per unire "offline", potresti avere due copie offline del repository, una su cui lavori e una che è la tua "origine", e quando torni, chiedi al sysadm di git pull il repository "origine", quindi, su un computer offline, esegue l'unione tra i due repository memory stick e quindi chiede al sysadm di unire il repository di origine in quello online.

Questo sembra un po 'fragile e aperto alle condizioni di gara, però, quindi proverei davvero a creare rami separati prima di "andare offline".

+0

avrei spiegato che non riesco a montare il me stesso bastone. Devo chiedere all'amministratore di copiare il contenuto sul filesystem locale. Ciò influisce sul repository git? – Beginner

+0

Aggiornamento della risposta di conseguenza. Ma la risposta di Aaron è più concisa. Basta notare che una directory contenente un repository nudo è la stessa della directory .git all'interno di un repository con una directory di lavoro. – drRobertz

+0

No. Ogni repo è un repository completo. È possibile trasferire i cambiamenti da un repository all'altro e viceversa con pull. – Jepessen