In questa serie di articoli cercherò di dare delle indicazioni generali sull’uso di Git andando ad esaminare i comandi più importanti. Cercheremo inoltre di capire come funziona il versioning dei files.
Ma cosa’è Git?
Git è un software gratuito ed open source che rientra nella categoria dei VCS (Version Control System), esso permette di tenere traccia delle modifiche apportate ai files ed alle cartelle di un progetto nel corso del tempo, conservando la storia di tutti i cambiamenti effettuati in modo da poter accedere alle diverse versioni del progetto in qualunque fase dello sviluppo.
Quando si sviluppano progetti o si scrivono documenti che richiedono numerosi cambiamenti un sistema di versioning come GIT potrebbe diventare il tuo migliore amico. |
Git come detto è in grado di tener traccia delle modifiche apportate ai files e alle directory. Per funzionare, git salva le informazioni relative alle diverse versioni di file e cartelle, in un repository locale, una cartella chiamata .git, che si trova nella directory del progetto di riferimento.
Git al contrario di altri sistemi di versioning centralizzati è un VCS distribuito. L’architettura distribuita, consente di mantenere un repository locale dei files ( uno per ogni utente ), su cui si potrà lavorare e modificare i files indipendentemente dagli altri utenti in modo veloce ed efficiente ed un repository principale remoto a cui tutti gli utenti fanno riferimento.
Questa modalità non inficia i meccanismi di collaborazione, in quanto sarà sempre possibile scambiare le modifiche con altri operatori, usando il repository principale che potrà essere sincronizzato volta per volta. |
Con Git ogni utente potrà scaricare dal repository principale gli aggiornamenti e potrà applicare le modifiche alla copia locale dello stesso. In modo analogo un utente potrà inviare le proprie modifiche al repository principale eseguendo l’operazione ‘push’, di cui vedremo in seguito la sintassi.
In sintesi Git è la scelta migliore per monitorare i cambiamenti di un gruppo di files e cartelle, perché è in grado di salvare uno snapshot di intere directory e di file, di visualizzare il contenuto di un file o di una cartella ad una delle versioni salvate.
Grazie a Git in caso di errore o di necessità sarà possibile effettuare un rollback delle modifiche, ripristinando interamente un file o una cartella o confrontando un file con una precedente versione dello stesso.
Attenzione: non bisogna confondere Git con GitHub. Git come detto prima è un Version Control System, GitHub è una piattaforma online creata da Tom Preston-Werner, Chris Wanstrath e PJ Hyett nel nel 2008 che consente gratuitamente l’hosting di repository Git. |
Lista Comandi Git
Per creare un nuovo repository locale:
$ git init [nome del progetto]
Per scaricare un repository esistente:
$ git clone [url_del_progetto_git]
Per conoscere i nuovi file creati o quelli modificati non ancora “committati”:
$ git status
Per sapere la lista di tutti i branches locali
$ git branch
Per sapere la lista di tutti i branches locali e remoti
$ git branch -av
Per cambiare branch
$ git checkout [altro_branch]
Per creare uno nuovo branch chiamato “nome_branch”
$ git branch nome_branch
Per cancellare un branch esistente
$ git branch -d nome_branch
Per unire i file di un branch_A con il branch_B
$ git checkout branch_A $ git merge branch_B
Per taggare un commit di uno o più files
$ git tag nome_tag
Per conoscere le modifiche sui files:
$ git diff
Per creare la lista dei file da committare
$git add [nome_file]
per creare la lista dei files da committare di una intera directory
$ git add .
Per committare i file in lista
$ git commit -m "commento obbligatorio da inserire"
Per conoscere le ultime modifiche effettuate sul repository principale
$ git fetch
Per recuperare le ultime modifiche fatte
$ git pull
Per inserire (pushare) le ultime modifiche fatte
$ git push
Per avere la storia delle modifiche
$ git log
Per conoscere le modifiche effettuate in un file o in una directory con evidenza di tutte le differenze
git log -p [file/directory]
Per avere un help dei comandi
$ git command --help
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.
Comments