Voglio tentare una risposta che includa git-flow e tre "punti" o casi d'uso, il repository centrale git, lo sviluppo locale e la macchina di produzione. Questo non è ben testato .
Sto dando comandi incredibilmente specifici. Invece di dire <your folder>
, dirò /root/git
. L'unico posto in cui sto cambiando il comando originale è la sostituzione del mio nome server specifico con example.com
. Spiegherò lo scopo delle cartelle in modo da poterlo regolare di conseguenza. Per favore fatemi sapere di qualsiasi confusione e aggiornerò la risposta.
La versione git sul server è 1.7.1. Il server è CentOS 6.3 (Final).
La versione git sulla macchina di sviluppo è 1.8.1.1. Questo è Mac OS X 10.8.4.
Il repository centrale e la macchina di produzione si trovano sulla stessa macchina.
il repository centrale, a cui gli utenti svn possono riferirsi come 'server' è configurato come segue. Ho una cartella in /root/git
cui conservo tutti i miei repository git. Voglio creare un repository git per un progetto che chiamo "fiori".
cd /root/git
git clone --bare flowers flowers.git
Il comando git ha dato due messaggi:
Initialized empty Git repository in /root/git/flowers.git/
warning: You appear to have cloned an empty repository.
Nulla di cui preoccuparsi.
Sulla macchina di sviluppo è configurato come segue. Ho una cartella in /home/kinjal/Sites
cui metto tutti i miei progetti. Ora voglio ottenere il repository git centrale.
cd /home/kinjal/Sites
git clone root@example.net:/root/git/flowers.git
Questo mi porta a un punto in cui posso iniziare ad aggiungere roba. Ho prima impostato git flow
git flow init -d
Per impostazione predefinita, questo è sul ramo develop
. Aggiungo il mio codice qui, ora. Quindi devo impegnarmi nel repository git centrale.
git add .
git commit -am 'initial'
git push
A questo punto ha spinto al ramo di sviluppo. Voglio aggiungere anche questo al ramo principale.
git flow release start v0.0.0 develop
git flow release finish v0.0.0
git push
Nota che non ho fatto nulla tra l'inizio e la fine del rilascio. E quando ho terminato il rilascio, mi è stato chiesto di modificare due file. Ciò ha spinto il ramo di sviluppo a padroneggiare.
Sul sito di produzione, che si trova sulla stessa macchina del mio repository git centrale, voglio inserire il repository /var/www/vhosts/example.net
. L'ho già fatto /var/www/vhosts
.
cd /var/www/vhosts
git clone file:///root/git/flowers.git example.net
Se anche la macchina di produzione si trovasse su una macchina diversa, il git clone
comando sarebbe simile a quello utilizzato sulla macchina di sviluppo.
git clone --bare
farà quello che pensi che farà.