Il Git è un software Free utilizzato dagli sviluppatori che permette lo sviluppo condiviso di un singolo progetto, in più programmatori tenendo traccia di ogni singola fase di sviluppo e versione, con la possibilità di gestire eventuali conflitti e in caso di errori, ritornare alla versione di sviluppo precedente (roll back), avere un back-up condiviso.
Il Git viene comunque utilizzato normalmente anche da singoli sviluppatori che operano in un singolo progetto, proprio grazie alle caratteristiche sopra indicate.
Il Git tendenzialmente ha una struttura di questo tipo:
– Un Server Git Remoto (dove al suo interno vengono memorizzate tutte le modifiche Pushate)
– Uno o più Client Git che possono ricevere (Pullare) dal Server Git Remoto le varie modifiche fatte, anche da altri utenti, fino a quel momento o inviare (Pushare) al Server Git Remoto le modifiche apportate al progetto dallo sviluppatore.
Se non si volesse, per qualche motivo, intaccare il progetto principale (master) con le nuove modifiche apportate, è anche possibile lavorare in sezioni parallele chiamate (branch) memorizzate comunque nello stesso progetto Git.
Git è nato per essere usato via Command Line (Console), ma sul mercato ci sono vari tool, free o a pagamento, che permettono l’utilizzo del Git tramite interfaccia (GUI); Il più noto tra questi è SmartGit
Dopo questa piccola descrizione sulle caratteristiche principale del Git, passiamo ai suoi comandi principali.

Installazione di Git

Git sia che venga usato come Server Git Remoto che come Client ha un unico pacchetto di istallazione. Nell’esempio a seguire utilizzeremo un Server Ubuntu 18.04. Per coloro che non avessero a disposizione un Server Ubuntu 18.04 consiglio di visitare il sito internet di Hostinger, un Hosting Provider con i prezzi tra i più competitivi sul mercato.
Per installare Git digitare il seguente comando:

 sudo apt-get install git

Server Git Remoto – Inizializzare un Progetto Git

Ipotizziamo di dover sviluppare un nuovo progetto; La prima operazione da fare è creare la Cartella di Progetto all’interno del Server Remoto, dove un Client Git potrà Pushare al suo interno il primo Commit.
Nell’esempio successivo si andrà a creare un nuova Path denominata /opt/Git/myProject all’interno di un Server Ubuntu 18.04.

 mkdir /opt/Git
 mkdir /opt/Git/myProject 
 cd /opt/Git/myProject
 git init --bare

Grazie a questi comandi è stata creata all’interno del Server Git Remoto, la repository “myProject”. Il passaggio successivo consiste nel clonare la repository appena creata in un Client Git.

Installazione di Git nel Client e Clonazione Repository

Per istallare Git in un altro Server Ubuntu 18.04, il quale verrà utilizzato come Client, sarà sufficiente ripetere il comando di installazione precedentemente descritto:

 sudo apt-get install git

Istallato Git sarà sufficiente clonare la repository in /opt/ mediante il seguente comando:

 cd /opt/
 sudo git clone ssh://root@vostro_IP_o_Dominio:22/opt/Git/myProject

Il prossimo passaggio sarà quello di scaricare dal Server Git Remoto la repository inizializzata (ovviamente vuota). Questo comando dovrà essere ripetuto tutte le volte che si inizierà a lavorare sul progetto.

 cd /opt/myProject
 git pull

Modifica della repository nel Client

Da questo momento in poi si potrà lavorare sul progetto aggiungendo, modificando e rimuovendo files. Terminato l’avanzamento lavori, sarà sufficiente:
– verificare lo stato di Git
– aggiornare l’elenco dei files aggiunti o rimossi
– Committare (descrivere) le modifiche apportate fino a quel momento
– Pushare (inviare) le modifiche al Server Git Remoto
con i seguenti comandi:

 git status 
 sudo git add *
 sudo git checkout -- *
 sudo git commit -m "commento da aggiungere"
 sudo git push origin master --force 

Come scaricare l’ultima versione di un progetto dal Server Git Remoto, sovrascrivendo tutte le modifiche apportate nel Client Git

Ipotizzando di voler sovrascrivere le modifiche apportate in locale, le operazioni che si dovranno fare sono le seguenti:
– hard reset del codice locale
– pull dell’ultima versione memorizzata in git

 sudo git reset --hard 
 sudo git pull 

Cambiare collegamento del Git Client verso un altro Server Git Remoto

Nel caso in cui si necessiti di cambiare Server Git Remoto e di dover pullare o pushare da o verso un altro Server, i comandi sono i seguenti:

 git remote set-url origin ssh://root@nuovo_IP_o_DNS:22/opt/Git/myProject
 git remote -v 

Cambiare Branch

Per poter operare su un altro branch lasciando intatto quello principale (master) il comando da eseguire nel Git Client è il seguente:

 git checkout altro_branch 

Modificati i files nel progetto, si dovrà pushare le modifiche con il nuovo branch, creandone uno relativo anche nel Server Git Remoto con i seguenti comandi:

 sudo git add *
 sudo git checkout -- *
 sudo git commit -m "commento da aggiungere"
 sudo git push origin altro_branch 

Per tornare al branch principale (master), usare il seguente comando:

git checkout master

“Mergeare” (Unire) le modifiche apportate in un altro branch nel branch principale (master)

Dopo aver lavorato in un altro branch ed aver testato che il lavoro svolto e salvato fino a quel momento è pronto per andare in produzione, si potrà procedere ad unire (nel gergo degli sviluppatori, “mergeare” ovvero fare un merge) i due branch.
Per unire altro_branch in master si dovrà prima switchare su master e successivamente fare il merge di altro_branch con i seguenti comandi:

 git checkout master
 git merge altro_branch 

Pushare un progetto già sviluppato in Locale verso un Server Git Remoto appena creato

Supponendo di aver già sviluppato un progetto nel computer locale e di volerlo Pushare sul Server Git Remoto alla quale è stata appena inizializzata la repository “myProject”, le operazioni da eseguire nel Client Git (Computer locale) sono le seguenti:
– inizializzare la cartella locale contenente il progetto già sviluppato
– aggiungere l’indirizzo del Sever Git Remoto
– verificare che la connessione sia corretta
– aggiungere tutti i files all’inizializzazione del Git Locale
– fare il checkout
– creare il primo commit
– pushare al Server Git Remoto con branch master
– allineamento tramite il primo pull
I comandi sono i seguenti:

 cd /opt/myProject
 git init
 git add origin ssh://root@vostro_IP_o_Dominio:22/opt/Git/myProject
 git remote -v
 git add *
 git checkout -- *
 git commit -m "First Commit"
 git push origin master
 git pull origin master

Errori che possono essere riscontrati

un tipico errore che può essere riscontrato è il seguete:

git status
error: bad index file sha1 signature
fatal: index file corrupt

l’errore può essere risolto resettando l’index. Pertanto accedere alla cartella di progetto ed eseguire i seguenti comandi:

rm -f .git/index
git reset