Git è un sistema di controllo della versione distribuito. Viene utilizzato principalmente dagli sviluppatori di software per la gestione del codice sorgente. Git è un software gratuito e open source e molte grandi organizzazioni lo utilizzano per gestire la loro enorme base di codice.
In questo tutorial acquisiremo familiarità con Git. Questa sarà una guida pratica. Questo tutorial presuppone che Git sia installato sul tuo sistema.
Git configurazione iniziale utente
Per prima cosa dobbiamo configurare le impostazioni per l'utente Git. Possiamo effettuare queste impostazioni per tutti i repository presenti sul sistema corrente o per un repository particolare. Cerchiamo di capirlo con un esempio:
Identità utente
In Git possiamo specificare l'identità dell'utente fornendo il suo nome e indirizzo e-mail. Queste informazioni verranno utilizzate durante ogni operazione di commit. Esegui il comando seguente nel terminale per assegnare l'identità:
$ git config --global user.name "Linuxtechi User" $ git config --global user.email "[email protected]"
Editor
Questa impostazione configura l'editor, che verrà utilizzato durante la fornitura del messaggio di commit:
$ git config --global core.editor vim
Compressione
Questa impostazione configura il livello di compressione da utilizzare. L'intervallo valido per la compressione è compreso tra -1 e 9. Il valore -1 indica la compressione zlib ed è il livello di compressione predefinito. Il valore 0 significa nessuna compressione e da 1 a 9 sono vari compromessi velocità/dimensione, 9 è il più lento.
$ git config --global core.compression 2
Strumento differenziale
Questa impostazione configura lo strumento di visualizzazione delle differenze. Ad esempio, il comando seguente configura vimdiff come strumento diff:
$ git config --global diff.tool vimdiff
Nei comandi precedenti abbiamo usato –global opzione ovunque, che renderà questa configurazione globale. Significa che la stessa configurazione verrà applicata a tutti i repository presenti sul sistema corrente. Per rendere specifico il repository di configurazione, rimuovi l'opzione –global.
Configurazione elenco
Per elencare la configurazione di Git, esegui il comando seguente nel terminale:
$ git config -l
Questo comando genererà il seguente output:
core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true core.editor=vim core.compression=2 user.name=Linuxtechi User [email protected] diff.tool=vimdiff
Repository Git
Il repository è una posizione in cui è archiviato il codice sorgente. Possiamo creare un nuovo repository o utilizzare un repository esistente. Per creare un nuovo repository vuoto, esegui il comando seguente:
$ mkdir my-repo.git $ cd my-repo.git $ git init --bare Initialized empty Git repository in my-repo.git
Questo metodo sarà utile quando inizi con un nuovo progetto. Un altro metodo consiste nell'utilizzare il repository esistente. Tale repository è ospitato su un server remoto come GitHub. Per scaricare il repository remoto usa il comando clone come segue:
$ git clone https://github.com/linuxtechiuser/my-repo.git
Nel comando precedente l'ultimo argomento è il percorso del repository remoto.
Flusso di lavoro Git
In questa sezione parleremo del flusso di lavoro git.
Introduci nuove modifiche
Il primo passo è introdurre nuove modifiche. Può essere l'aggiunta di un nuovo file o l'aggiornamento di file esistenti. Creiamo un nuovo file e modifichiamo il file esistente
$ touch AUTHORS # Create new file $ echo "New Contents" >> README # Update existing file
Controlla lo stato del repository
Git è un sistema di tracciamento dei contenuti, identificherà sopra due modifiche. Controlliamo lo stato del repository:
$ git status -s M README ?? AUTHORS
Nell'output sopra la lettera M appare prima di README che indica che il file esistente è stato modificato. Invece ?? appare prima di AUTHORS che indica che si tratta di un nuovo file e Git non ne è a conoscenza, quindi tale file viene chiamato file non tracciato.
Aggiungi file al changeset
Diciamo a Git di tenere traccia di questo nuovo file. Possiamo raggiungere questo obiettivo usando il comando add. Questa operazione inizierà a tenere traccia delle modifiche apportate a questo file.
$ git add AUTHORS
Controlliamo ora lo stato del repository:
$ git status -s A AUTHORS M README
L'output sopra mostra A prima di AUTORI che indica che questo file è stato appena aggiunto in Git. Possiamo aggiungere un numero qualsiasi di file usando questo comando.
Rimuovi il file dal changeset
Diciamo a Git di annullare la traccia di questo file appena aggiunto. Possiamo raggiungere questo obiettivo usando il comando di ripristino. Questa operazione rimuoverà il file dal changeset
$ git reset AUTHORS $ git status -s M README ?? AUTHORS
L'output sopra mostra che il file AUTHORS non è tracciato da Git.
Imposta modifiche
In Git, i file che fanno parte di changeset formeranno un commit. Ogni commit riceverà un ID univoco. Creiamo prima il changeset
$ git add AUTHORS $ git add README
Ora eseguiamo il commit delle modifiche al repository locale con il messaggio di commit. Nel comando sottostante -m argomento indica il messaggio di commit.
$ git commit -m "Updated README and added AUTHORS"
Quando esegui il comando sopra, genererà il seguente output:
[master 0b124eb] Updated README and added AUTHORS 2 files changed, 1 insertion(+) create mode 100644 AUTHORS
Esamina le modifiche
In questa sezione parleremo dei comandi che ci permetteranno di rivedere le modifiche al repository.
Visualizza registro commit
Il repository può contenere più commit di più autori. Possiamo usare il comando log per visualizzare tutti i commit disponibili:
$ git log
Quando esegui il comando sopra, genererà il seguente output:
commit 0b124eb6d0109d837f6f9396c9937406abd3f456 (HEAD -> master) Author: Linuxtechi User <[email protected]> Date: Fri Jul 27 21:06:55 2018 +0530 Updated README and added AUTHORS
Questo è il commit che avevamo creato in precedenza. Nel comando sopra:
- L'ID esadecimale rappresenta un ID commit
- La sezione Autore del commit mostra i dettagli su chi ha apportato queste modifiche
- La sezione Data mostra la data e il timestamp del commit
Visualizza un breve registro dei commit
Il comando sopra mostrerà informazioni dettagliate su ogni commit. Per visualizzare una breve descrizione di ogni commit, utilizzare l'opzione –oneline come segue:
$ git log --oneline
Quando esegui il comando sopra, genererà il seguente output:
0b124eb (HEAD -> master) Updated README and added AUTHORS
Visualizza commit
L'ID commit è associato a ogni changeset. Possiamo usare questo ID con il comando show per visualizzare i contenuti del commit.
$ git show 0b124eb6d0109d837f6f9396c9937406abd3f456
Quando esegui il comando sopra, genererà il seguente output:
commit 0b124eb6d0109d837f6f9396c9937406abd3f456 (HEAD -> master) Author: Linuxtechi User <[email protected]> Date: Fri Jul 27 21:06:55 2018 +0530 Updated README and added AUTHORS diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/README b/README index 980a0d5..5680123 100644 --- a/README +++ b/README @@ -1 +1,2 @@ Hello World! +New Contents
Visualizza differenze
Il comando Diff ci consente di rivedere le modifiche prima di creare il changeset. Il comando Diff mostra le differenze tra repository e spazio di lavoro locale. Modifichiamo il file README e vediamo le differenze
$ echo "Generating diff" >> README $ git diff diff --git a/README b/README index 5680123..3158230 100644 --- a/README +++ b/README @@ -1,2 +1,3 @@ Hello World! New Contents +Generating diff
Nel comando sopra:
- Il segno + indica le modifiche che vengono aggiunte al file
- – il segno indica le modifiche che vengono rimosse dal file
Lavorare con repository remoti
Finora stavamo lavorando solo con il repository locale. Altri sviluppatori non possono utilizzare le modifiche apportate da noi poiché sono locali. Quindi la collaborazione del codice non è possibile. Questa sezione descriverà i comandi che ci permetteranno di interagire con repository remoti
Pubblica le modifiche nel repository remoto
Possiamo pubblicare le modifiche locali nel repository remoto in modo che altri sviluppatori possano usarlo. Prima di pubblicare le modifiche dobbiamo creare changeset e commit locale. Possiamo pubblicare le modifiche utilizzando il comando push come segue:
$ git push
Questo comando copia le modifiche dall'area di lavoro locale al repository remoto. In Git, questa operazione viene definita operazione push.
Sincronizza l'area di lavoro con il repository remoto
Molti sviluppatori possono pubblicare le modifiche dell'area di lavoro nel repository remoto. Git ci consente di scaricare tali modifiche e sincronizzare l'area di lavoro con il repository. Possiamo ottenerlo usando il comando pull:
$ git pull
In Git, questa operazione viene definita operazione pull.
Comandi Git vari
Questa sezione discute vari comandi Git che saranno utili per eseguire attività quotidiane:
Modifica ultimo commit
Git ci consente di modificare l'ultimo commit. Possiamo usare questo metodo per evitare la creazione di nuovi commit. Viene utilizzato principalmente per modificare il messaggio di commit precedente. Per modificare l'ultimo commit, usa –amend opzione come segue:
$ echo "Yet another new change" >> README $ git add README $ git commit --amend -m "This is amended commit
Ora controlliamo il log dei commit:
$ git log commit 8bf67aec1d1de87f03ab6aae93940b17826fde1c (HEAD -> master) Author: Linuxtechi User <[email protected]> Date: Fri Jul 27 21:54:55 2018 +0530 This is amended commit
Se osservi attentamente l'output sopra, possiamo vedere il nuovo messaggio di commit, il suo ID e il nuovo timestamp.
Rimuovi i file non tracciati
I file non tracciati sono quelli sconosciuti a Git. Possiamo rimuovere tutti i file non tracciati usando il comando clean.
Creiamo alcuni file non tracciati:
$ touch delete-me-1 delete-me-2 delete-me-3
Per rimuovere tutto il file non tracciato sopra, usa il comando clean con -f opzione come segue:
$ git clean -f Removing delete-me-1 Removing delete-me-2 Removing delete-me-3
Tieni presente che questo comando rimuoverà i file in modo permanente, quindi utilizzalo con cautela.
Visualizza i commit di un determinato autore
Se utilizziamo il comando log, mostra i commit di tutti gli autori. Per visualizzare i commit di un particolare autore, usa –author flag come segue:
$ git log --author=Linuxtechi
Quando esegui il comando sopra, elencherà tutti i commit degli autori di Linuxtechi come segue:
commit 8bf67aec1d1de87f03ab6aae93940b17826fde1c (HEAD -> master) Author: Linuxtechi User <[email protected]> Date: Fri Jul 27 21:54:55 2018 +0530 This is amended commit
Visualizza la cronologia di ogni file riga per riga
Per visualizzare la cronologia riga per riga possiamo usare il comando di colpa.
$ git blame README
Quando esegui il comando sopra, genererà il seguente output:
76294131 (Linuxtechi User 2018-07-27 21:12:11 -0700 1) Hello World! 8bf67aec (Linuxtechi User 2018-07-27 21:54:55 +0530 2) New changes 8bf67aec (Linuxtechi User 2018-07-27 21:54:55 +0530 3) Yet another changes
Nel comando sopra:
- La prima colonna indica l'ID commit
- La seconda colonna indica l'autore
- La terza colonna indica i timestamp
- L'ultima colonna indica il numero di riga e il contenuto del file
Visualizza differenze dall'area di sosta
Quando crei changeset usando il comando aggiungi, il file viene spostato logicamente nell'area di staging. Vediamo con questo esempio:
$ echo "Let us demonstrate staging area" >> README $ git add README $ git diff
Il comando sopra non mostrerà alcuna differenza poiché il file viene spostato nell'area di gestione temporanea. Usiamo l'operazione a fasi per visualizzare le differenze:
$ git diff --staged diff --git a/README b/README index 74729a2..8bc5ffd 100644 --- a/README +++ b/README @@ -1,3 +1,4 @@ Hello World! New changes Yet another changes +Let us demonstrate staging area
Conclusione
In questo tutorial abbiamo discusso le operazioni di base di Git con semplici esempi. Questo tutorial è un buon punto di partenza per i neofiti di Git.
Ulteriori informazioni : Impara il comando Git con esempi pratici su Linux - Parte 2