Git repository remoto su una chiavetta usb

Non sempre ci si può connettere al server git remoto originale. In alcuni casi ho avuto la necessità di portare su una macchina temporanea il repository su cui stavo lavorando.

La cosa più semplice è stata copiare la sola cartella .git  per poter operare, questa cartella contiene tutti i dati del repository. Con una sola istruzione poi è possibile recuperare tutta la struttura o quasi.

$ git checkout master

Questo funziona a meraviglia su un ambiente windows, mentre su un ambiente linux occorre un comando diverso, altrimenti la directory di lavoro risulta incompleta.

$ git checkout master
$ git reset --hard

Le cose semplici a volte non bastano

Ma come fare per mantenere il lavoro aggiornato, ogni volta ricopio tutta la struttura?

Poi la cancello dalla macchina di appoggio e la sostituisco con la nuova vesione? Rischiando di perdere qualche modifica.

Cerchiamo di aggirare la cosa con qualche commando di git stesso.  Creo un puntamento ad una origine remota, ma la faccio puntare ad una cartella con il protocollo file://

$ git remote add usb file:///e/LavoroGIT/CartellaRepository

$ git fetch usb
remote: Counting objects: 2222, done.
remote: Compressing objects: 100% (1690/1690), done.
Rremote: Total 2052 (delteceiving objects:  89% (1827/2052),
...

Con il primo comando ho specificato dove si trova il mio repository aggiornato, ho chiamato questo path usb , essendo un ambiente Windows, la sintassi per specificare una cartella cambia dentro la shell di git. In particolare il puntamento al disco virtuale della chiavetta usb in questo caso è il seguente /e/ che sta per il disco di windows e:, dove è stata installata al chiavetta usb che stavo usando per questo esempio.

Con il secondo comando invochiamo il fetch per iniziare la sincronizzazione del nostro repository, tirando le eventuali modifiche presenti nel repository remoto usb appena definito. Se tutto funziona correttamente dovremo vedere gli opportuni messaggi di conferma nella console.

Su windows la semplicità è un optional

Non sempre le cose funzionano in modo lineare. Sopratutto quando hai a che fare con il sistema operativo Windows. La procedura che ho descritto precedentemente, ha funzionato a meraviglia un paio di volte. Poi non c’è stato verso.

Anche ripetendo gli stessi comandi, la connessione con il repository remoto usb veniva creata, ma il fetch andava in errore.

Ho provato un altro approccio senza specificare il protocollo file:// , ecco quindi i comandi che ho utilizzato in questo secondo caso:

$ git remote add chiavetta e:/LavoroGIT/CartellaRepository

$ git fetch chiavetta
remote: Counting objects: 5734, done.
remote: Compressing objects: 100% (4164/4164), done.
emote: Total 5462 (delta 4041), reused 1667 (delta 1170)

Cambiare i puntamenti al path

Può succedere che in Windows il nome del disco cambi, il riconoscimento del dispositivo esterno potrebbe cambiare o noi abbiamo cambiato chiavetta, ecco come modificare far riconoscere a git il nuovo percorso:

$ git remote set-url usb file://<path to new mount point>

Tramite questo comando andiamo a modificare la url che avevamo precedentemente definito per il path remoto usb

Ora che tutto è configurato possiamo eseguire tutti i comandi che utilizziamo di solito, compreso il push verso il percorso usb

Leave a Comment

Your email address will not be published. Required fields are marked *