Esegui il push delle modifiche git su un'unità di rete condivisa


90

In che modo un team di quattro persone può utilizzare Git (in particolare Github per Windows ) per inviare modifiche locali a un'unità di rete condivisa?

In questo momento (senza Git) dobbiamo copiare i file dall'unità di rete al nostro computer locale, modificare i file e quindi ricaricarli sull'unità di rete condivisa. Questo è un processo meticoloso che può portare a molti errori, ma sembra che Git potrebbe aiutarci.

Possiamo semplicemente installare Git sul drive condiviso e partire da lì?

Risposte:


123

Non sono sicuro se hai trovato qualcosa che funziona per te o no, ma ho un articolo su come farlo proprio su un'unità di rete Windows:

http://tony.halcyonlane.com/blog/2011/09/22/Using-git-at-work-on-a-Windows-network-drive/

Da un prompt di cmd, modificare l'unità mappata.

$ cd g:

Quindi cd nel tuo repository git che presto diventerà.

$ cd script

Quindi crea un repository git vuoto. Se non usi l'opzione --bare, avrai problemi quindi non lasciarlo fuori.

$ git init --bare

Ora, se non hai ancora un repository git locale, puoi clonare il tuo nuovo repository dove preferisci tornando al tuo disco locale.

$ c:

$ cd lavoro / script

$ git clone file: // g: \ scripts

Quando si clona, ​​si ottiene automaticamente un telecomando chiamato "origin" e si può eseguire il push al server per conservarlo in sicurezza ogni volta che si apportano modifiche a livello locale.

$ git push origin master

Se hai già un repository git e vuoi solo eseguire il push sul drive condiviso, puoi farlo dalla tua directory git locale.

$ git remote add origin file: // g: \ scripts

$ git push origin master


1
Grazie - ho fatto esattamente questo per un progetto personale sulla mia rete domestica.
Martin Snyder

Ho seguito questi passaggi ma ottengo i seguenti errori quando eseguo l'errore master git push origin: impossibile generare sh: nessun file o directory fatale: impossibile eseguire il fork
NickStees

Grazie.
Ci è voluto

Per chiunque non abbia mappato il proprio drive condiviso, c'è pushd (e popd) per creare un temp drive virtuale a cui navigare ( vedi link )
LoJo

Quali problemi avrai se non usi --bare? Ho già un repository non nudo su un'unità di rete e vorrei usarlo come telecomando.
Fractaly

24

Il nostro team attualmente fa esattamente questo. Ogni sviluppatore ha quanto segue:

  1. Git installato sulla loro macchina locale
  2. Accesso al proprio Drive condiviso personale ( L:)
  3. Accesso a un Drive di gruppo condiviso ( V:)

Abbiamo il repository "remoto" (configurato usando init -bare) V:sull'unità, e ognuno ha un clone sul proprio L:disco personale . Tutte le modifiche vengono apportate L:all'unità e inviate V:all'unità, che vengono quindi ritirate in seguito dagli altri sviluppatori nei rispettivi repository personali sulle loro L:unità. Funziona senza problemi e mitiga la necessità di un server Git.


Va bene, fantastico! Devo prima creare un repository locale e quindi impostare un remoto di tale repository sul Drive condiviso?
user1549303

1
@ user1549303 - È così che lo facciamo. Puoi creare il repository locale (il nostro L:repository di unità) utilizzando git init, quindi creare il repository remoto (il nostro repository di v:unità) utilizzando git clone --bare(o a git init --bare, quindi un push da L:).
eykanal

@eykanal - Il mio team attualmente utilizza un'antica, orribile libreria di controllo del codice sorgente e stiamo cercando di passare a git. Una cosa che la nostra libreria attuale mi consente di fare è vedere chi ha estratto un file ma si è dimenticato di archiviare le modifiche. Con git, tutti i repository sono locali, quindi come puoi sapere se qualcuno ha dimenticato di eseguire il push a "v:"?
Kevin Buchan

3
@KevinBuchan - Ti suggerisco di pubblicare il tuo commento come nuova domanda.
eykanal

1
Come reagisce Git quando due sviluppatori tentano di eseguire il push nello stesso repository condiviso (diciamo V :) allo stesso tempo? Hai avuto problemi con le operazioni push simultanee?
Jordi

2

Puoi aggiungere un altro remoto che punta all'unità di rete (git remote)

Quindi puoi spingere e tirare in modo simile a quello che fai con GitHub

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.