2016-06-27 7 views
12

Sto lavorando a un progetto Open Source e ho un repository git sul mio computer con tutto il codice. Il repository è abbastanza grande e mi piacerebbe continuare a lavorarci mentre non ho accesso al mio computer.Copia di un repository git su un'unità USB

Se copio il repository nella mia unità USB, si comporta ancora come se fossi sul repository originale della mia macchina (stesse configurazioni, ecc.)?

Se la copia non funziona, c'è un modo per ottenere ciò senza dover ricreare il repository da zero sull'unità USB?

+5

Sì, funzionerebbe bene. Tieni presente però che determinati comportamenti potrebbero essere diversi a causa delle (possibilmente) diverse configurazioni nel tuo file di configurazione git globale. –

+11

Una cosa a cui prestare attenzione: l'unità USB, se formattata come FAT, potrebbe non essere in grado di rappresentare determinati contenuti nel repository git come i permessi dei file, la denominazione case-sensitive (specialmente i file con lo stesso nome fino al caso "README" e 'Leggimi'), collegamenti simbolici, ecc. –

+1

sì, funzionerebbe allo stesso modo finché la copia non omette la cartella' .git' all'interno del repository. Quindi assicurati di copiare la directory radice, non tutti i file al suo interno. Per quanto riguarda il comportamento git, assicurati di configurare eveyrhing _locally_ (usa '--local' [flag] (https://git-scm.com/docs/git-config)) –

risposta

38

Funzionerà, ma alcune variabili di configurazione non viaggiano con te.

Git dispone di tre livelli di configurazione: a livello di sistema (tutti gli utenti su un PC), globali (specifici dell'utente) e specifici del repository.

Le configurazioni specifiche del repository si spostano con il repository; il sistema e le configurazioni globali non lo faranno. Vorrei controllare i tuoi file di configurazione e, se necessario, prendere una copia delle tue configurazioni specifiche dell'utente.

+6

Un grande su questo fronte sono le informazioni dell'autore (nome ed e-mail). Questi sono spesso archiviati in configurazione globale, poiché si utilizza spesso lo stesso per tutti i repository. – jpmc26

+3

@ jpmc26 Per aggiungere a questo, possono ** essere ** spostati al livello del repository, vedere http: // dereenigne.org/git/set-git-indirizzo-email-su-per-repository-base – Alexander

+0

@AMomchilov Non è quindi necessario aggiungere la config di repo al proprio .gitignore? Immagino che almeno alcuni progetti controllino una configurazione a livello di repository per controllare le impostazioni come core.autocrlf. – Doval

32

Il modo migliore è aggiungere un telecomando (anche se si tratta di una cartella locale). In questo modo puoi sempre trasferire i commit tra i due. Quando si desidera spostare

git init /mnt/usb/repo 
git remote add usb /mnt/usb/repo 
git push usb master 

L'ultimo comando può essere utilizzato per inserire qualsiasi ramo nella cartella come desiderato. Se il ramo locale non ha un telecomando attualmente impostato come upstream, potrebbe essere necessario eseguire --set-upstream.

Vedere anche git how to add a local repo and treat it as a remote one in caso di overflow dello stack.

+2

Puoi approfondire perché? – jasonszhao

+6

Prevedo di dimenticare di passare al repository USB prima di partire un giorno. – jpmc26

+4

Meglio rendilo repository: 'git init --bare' - solo i metadati git vengono trasferiti, nessun file effettivo nell'albero di lavoro. Questo presuppone che tu abbia ogni cambiamento a cui tieni impegnato nel repository (magari in un ramo work-in-the-throw-throw-away). I repository bare avranno meno problemi con i tipi di file, le modalità e le autorizzazioni o persino i nomi di file che FATFS non può riprodurre. Potrebbe anche imballare il repository prima di copiare su un dispositivo di archiviazione USB per risparmiare spazio e forse rendere l'operazione più veloce. – FooF

1

Non mi piace l'idea di copiare repository git da un posto all'altro. Invece, consiglierei assolutamente di usare un server remoto per il tuo codice.

C'è almeno 2 git eccellente come servizio in giro: il più famoso è GitHub, che ospiterà liberamente il tuo codice se non ti dispiace condividerlo in un repository pubblico. Se vuoi mantenerlo privato e non vuoi pagare, vai su BitBucket.

+0

Come ho già detto, sto lavorando per un progetto Open Source, quindi i repository remoti sono tutti a cura di. Quello che volevo era prendere le mie configurazioni con me (rami, identificazione, alias, ecc. Ecc.) – user1790813