Il sistema di controllo di versione Git

L’articolo di oggi è un semplice elenco con spiegazione dei più comuni comandi del sistema di controllo di versione Git (che personalmente preferisco a SVN).
Se volete approfondire l’argomento sono presenti diversi libri su Amazon dedicati solo a Git, per nessuno di loro però è presente una traduzione italiana, sono tutti in lingua inglese:



I comandi di Git

Salto il discorso relativo all’impostazione nome utente password alla prima apertura della shell git.

Inizializzazione repository

Ci sono diversi modi di inizializzare un repository Git:

git init

E’ il metodo più semplice, mi posiziono su una cartella e creo un nuovo repository (locale). Git crea una cartella .git e da ora in poi sono disponibili tutti i comandi git all’interno di quella cartella. Se poi voglio sincronizzarlo con un’origine remota dovrò scrivere

git remote add origin PROTOCOLLO://NOME@INDIRIZZO

git clone PROTOCOLLO://NOME@INDIRIZZO [NOME_REPOSITORY_LOCALE]

Comprende l’init, la sincronizzazione con un’origine remota, ne scarica tutto il contenuto e fa il checkout nel branch attivo. Se vogliamo entrare in un progetto opensource già avviato, questo è il comando da utilizzare

Utilizzo locale del repository

git checkout [NOMEBRANCH|HASH COMMIT]

I file vengono aggiornati allo stato nel branch o del commit specificato. I commit in git sono identificati da un hash, oltre dal messaggio specificato dall’utente, ma possono essere richiamati solo per hash, non tramite il messaggio (giustamente, quest’ultimo non è univoco).

git branch

Mostra la lista del branch, evidenziando con un * al fianco del nome quello attivo

git branch [nomebranch]

Passa al branch nomebranch, se non esiste, lo crea.

git branch -d nome_branch

Elimina il branch nome_branch.

git add nomefile

Aggiunge un certo file all’indice (insieme di tutti i file che saranno compresi nel prossimo commit).

git add .

Aggiunge tutti i file nella working directory (tranne quelli ovviamente da escludere secondo il .gitignore file) all’indice.

git commit -m “messaggio”

Esegue il commit dei file indicizzati e modificati

git merge nome_branch_sperimentale

Esegue il merge tra il branch corrente e il branch chiamato nome_branch_sperimentale. Nel merge il codice viene inserito dove possibile, dove invece ci sono conflitti da risolvere viene lasciato a noi il compito di stabilire a mano, quale delle due versioni coinvolte nel merge vada tenuta e quale scartata.

git rebase master

E’ una specie di merge, ma allo stesso tempo sposta proprio il branch, innestandolo all’interno di un altro.

git reset –hard HASH_COMMIT

Elimina tutti i cambiamenti non committati e porta la situazione a quella del commit identificato da HASH_COMMIT. Ad essere onesto non capisco la differenza tra un git reset –hard ed un checkout.

git log [master] [–pretty=oneline]

Questo mostra tutti i commit effettuati su un certo branch, il secondo parametro serve a ottenere una visualizzazione più compressa e più leggibile (soprattutto nel caso i commit siano molti, cioè il branch non sia “nuovo”)

git diff [>patch_file]

Salva le differenze tra la versione corrente dei file e l’ultimo commit nel patch file

patch -p1 < patch_file

Applica il patch_file alla versione corrente. Non richiede Git. In alternativa posso avere lo stesso risultato utilizzando invece git con il comando

git apply patch_file

git show [BRANCH/HASH COMMIT]

Mostra tutte le informazioni relative all’oggetto specificato come aprametro

git stash

Salva tutti i cambiamenti uncommited, in modo da permettermi di cambiare branch senza perderli, e poi riprenderli in seguito, utilizzando
git stash apply stash@{0} (l’ultimo parametro identifica lo stash).

Utilizzo di git in modo distribuito

git fetch origin

Scarica gli aggiornamenti remoti al repository sulla mia versione locale.

git pull origin [BRANCH]

Esegue un fetch seguito da un merge.

git push origin [BRANCH]

Esegue una aggiornamento in remoto del repository utilizzando le modifiche locali

Con questo si conclude questa breve introduzione ai comandi di Git. Git è molto semplice per le operazioni base, ma offre anche funzionalità molto avanzate grazie alle opzioni più complesse, che qua non ho trattato. Se volete approfondire l’argomento, vi riporto i link ai tre libri più venduti sull’argomento su Amazon italia:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *