Git: tutorial

Git è un sistema software di controllo di versione distribuito, creato da Linus Torvalds nel 2005. Il progetto di Git è la sintesi dell'esperienza di Torvalds nel mantenere un grande progetto di sviluppo distribuito, utilizzando conoscenza e prestazioni del file system.

Git non considera i dati né li registra  come informazioni che mantengono le relative modifiche fatte nel tempo. I propri dati sono visti più come una serie di istantanee (snapshot) di un mini filesystem.Ogni volta che fai un commit, o salvi lo stato del tuo progetto, fondamentalmente Git esegue un'immagine di tutti i file in quel momento, salvando un riferimento allo snapshot

 

img1.png

 

I tuoi file in Git possono essere in tre stati: committed modified e staged . Committed significa che il file è al sicuro nel database locale. Modified significa che il file è stato modificato, ma non è ancora stato fatto un commit nel database. In stage significa che hai contrassegnato un file, modificato nella versione corrente, perché venga inserito nello snapshot alla prossima commit.

img2.png

 

Il flusso di lavoro (workflow) di base in Git funziona così:

  1. Modifica i file nella tua directory di lavoro
  2. Fanne lo stage, aggiungendone le istantanee all'area di stage
  3. Committa, ovvero salva i file nell'area di stage in un'istantanea (snapshot) permanente nella tua directory di Git.

 

Un repository in Git è semplicemente un "deposito" di un progetto. Ci sono principalmente due approcci: caricare un progetto esistente o una directory in Git, o clonare un repository Git esistente.

  1. Per tenere traccia con Git di un progetto esistente, bisogna entrare nella directory del progetto e digitare:

       git init

    Questo comando creerà una directory chiamata .git dove ci saranno tutti i file necessari per il tuo repository. Per iniziare a tracciare i file esistenti si dovrebbe fare con una commit iniziale. Più precisamente tramite i comandi

       git status
       git add
       git commit -m "messaggio"

    Con git status,possiamo determinare lo stato dei file; ottenendo il nome del file sul quale fare il commit oppure niente da commitare. Con git add si aggiungono i file per il commit dalla working directory allo stage, mentre con git commit si aggiungono i file all'Head pronti per essere inviati al repository remoto.

  2. Per lavorare su di un progetto esistente si può usare in Git il comando 
            git clone [url] [nome directory di destinazione]

Dopo aver apportato le modifiche ai file l'ultimo passaggio da fare per inviare le modifiche dall'Head al repository è eseguire il comando

git push origin master

     

Se invece si volessero prendere le modifiche apportate ad un repository remoto il comando git da utilizzare è 

git pull

I branch vengono sfruttati al fine di sviluppare in features isolate l'una dall'altra. Il branch di default è il branch master associato ad ogni repository. I branches per lo sviluppo sono infine incorporati ('merge') al master branch una volta completati. 

In Git un branch è semplicemente un puntatore ad un commit. Quando si iniziano a fare dei commit, questi verranno aggiunti al branch master che punterà all'ultimo commit che è stato eseguito. Ogni volta che invierai un commit, lui si sposterà in avanti automaticamente.

img3.png

 

 

 Per creare un nuovo branch con Git basta dare il comando

git branch testing

 Questo crea un nuovo puntatore che punta al commit corrente ottenendo qualcosa come nella figura seguente

img4.png

Quindi i branch sono puntatori alle commit che si faranno sul repository e sono raggiungibili dal puntatore Head che punta sempre al branch corrente. Per poter cambiare branch su Git si utilizza il seguente comando

git checkout testing

e tutte le commit andranno sul nuovo branch dove punta Head

img6.png

Se si torna sul branch master e si fanno nuove commit come risultato Git divide il progetto in due rami separati nel punto in cui è stato fatto il branch testing. Questo è molto utile se si vuole separare versioni nuove del progetto da quelle vecchie.

img7.png

Una volta terminato i lavori sulle varie branches si può unire il tutto con il comando 

git checkout master
git merge testing

ed eliminare il branch dando il comando

git branch -d testing

 

 

Fonte: Gitrogerdudler

Ben tornato