paolo@bimodesign.com | +34 608 61 64 10

Unclassifiable

        

GIT: Usare Merge e proprie branch

Apro questa sezione generica, parlando di uno sei sistemi piu' comuni per il subversion del codice, ovvero GIT.
Il progetto e' stato pensado da Linus Torvalds, ed indica un termine gergale inglese per indicare una persona stupida o sgradevole. Linus lo spiego' cosi':
Sono un egoista bastardo, e do' a tutti i miei progetti un nome che mi riguardi. Prima Linux, adesso Git.
In effetti all'inizio e' un po' ostico da usare e ti da' l'impressione di essere un po' idiota nell'usarlo ;)

Tralasciando questi aspetti folkloristici, se siete curiosi vi rimando alla pagina della Wiki, mi soffermero', in maniera molto schematica, sui comandi principali, la cui spiegazione, in particolare la parte della gestione delle branch mi e' stata fornita dal mio collega Eduardo

Do' per scontato che avete gia' attiva una utenza su bitbucket.org, e avrete gia' creato un progetto.
Iniziano con i comandi di base, prima di passare all'argomento di questo articolo.
Clonare il progetto
Dalla shell, digitare il comando

git clone https://Usuario@bitbucket.org/Gruppo/Progetto.git

oppure

git clone https://Usuario@bitbucket.org/Gruppo/Progetto.git nomedir

quest'ultimo, nel caso in cui si voglia clonare il progetto in una dir differente rispetto a quella di default (in questo caso nomedir/)
Gestire le modifiche al codice
Senza scendere troppo nei dettagli e senza soffermarmi quindi su tutte le varie opzioni, nella maggior parte dei casi questi sono i comandi che usarete, rispettando questa sequenza.

git status
git add . / lista nomi dei file modificati
git pull 
git commit -m"commento al codice modificato
git push

Dove:
status: Verifica e elenca, i file che sono stati modificati in locale rispetto all'ultima versione presente nel repository
add: aggiunge tutti i file (parametro ".") oppure solo una lista dei file che saranno oggetto di aggiornamento. Si usa spesso questa seconda opzione, per evitare di aggiornare file del proprio ambiente locale (come ad esempio, file di config, di connessione alla base dati, etc..)
pull: effettua il download in locale dell'ultima versione presente nel repository NomeDelProgetto, segnalando se esistono conflitti con il vostro codice modificato
commmit crea l'aggiornamento dei file che sono stati aggiunti al branch e gli assegna un commento
push: rende effettivo l'aggiornamento e disponibile per gli altri utenti

Altri utili comandi di base

$ git reset HEAD Archivo.est 

In questo modo saranno registrati i cambi effettuati sul file, ma non saranno confermati al momento di eseguire un git add

$ git checkout Archivo.est

In questo modo tutti i cambi eseguiti sul file verranno eliminati (e non sara' possibile recuperarli)

Questi sono i comandi di base, ma quando si lavora in gruppo, sullo stesso progetto, e' fondamentale avere delle proprie versioni che vadano in "parallelo" e che siano indipendenti le une dalle altre, per poi rinunificarsi una volta che si decida che la propria versione sia stabile. Per fare questo c'e' bisogno di creare il proprio branch in locale. Questo avviene utilizzando i comandi che vi elenco qui di seguito, facendo particolare attenzione al momento di eseguire il push, come vedremo.

Creare la branch in locale

git checkout -b MyBranch


Cancellare la branch in locale (solo se necessario)

git checkout -d MyBranch


Cambiare la propria branch alla master

git checkout master

Questo e' utile ad esempio, per tornare a lavorare sulla master, lasciando inalterate le modifiche sulla propria branch. Notare, che se nella propria branch sono stati creati dei nuovi files, questi non saranno visibili nella branch master.

Mostrare l'elenco delle branch disponibili e quella attuale

git branch
	* MyBranch
	master

Attualizzare il codice nella propria branch

git push origin MyBranch

Come potete notare, occorre fare molta attenzione al momento di indicare quale branch usare, altrimenti per default attualizziamo la master.
Infine, se dalla master volessi aggregare tutti i cambi effettuati sulla MyBranch, i due comandi da eseguire sono

git merge MyBranch
git push

Il secondo indica che i cambiamenti verranno resi disponibili a tutti.