Ricerca nel sito web

Come utilizzare il sistema di controllo della versione Git in Linux [Guida completa]


Il controllo della versione (controllo della revisione o controllo del codice sorgente) è un modo per registrare le modifiche apportate a un file o a una raccolta di file nel tempo in modo da poter richiamare versioni specifiche in seguito. Un sistema di controllo della versione (o VCS in breve) è uno strumento che registra le modifiche ai file su un filesystem.

Esistono molti sistemi di controllo della versione, ma Git è attualmente il più popolare e utilizzato, soprattutto per la gestione del codice sorgente. Il controllo della versione può effettivamente essere utilizzato per quasi tutti i tipi di file su un computer, non solo per il codice sorgente.

I sistemi/strumenti di controllo della versione offrono diverse funzionalità che consentono a individui o gruppi di persone di:

  • creare versioni di un progetto.
  • tenere traccia delle modifiche in modo accurato e risolvere i conflitti.
  • unire le modifiche in una versione comune.
  • ripristinare e annullare le modifiche ai file selezionati o a un intero progetto.
  • accedere alle versioni storiche di un progetto per confrontare le modifiche nel tempo.
  • vedere chi ha modificato per ultimo qualcosa che potrebbe causare un problema.
  • creare un backup offsite sicuro di un progetto.
  • utilizzare più macchine per lavorare su un singolo progetto e molto altro ancora.

Un progetto con un sistema di controllo della versione come Git avrà principalmente tre sezioni, vale a dire:

  • un repository: un database per registrare lo stato o le modifiche ai file di progetto. Contiene tutti i metadati e gli oggetti Git necessari per il nuovo progetto. Tieni presente che questo è normalmente ciò che viene copiato quando cloni un repository da un altro computer su una rete o su un server remoto.
  • una directory o area di lavoro: memorizza una copia dei file di progetto su cui puoi lavorare (apportare aggiunte, cancellazioni e altre azioni di modifica).
  • un'area di staging: un file (noto come indice in Git) all'interno della directory Git, che memorizza le informazioni sulle modifiche, che sei pronto per eseguire il commit (salvare lo stato di un file o un insieme di file) nel repository.

Esistono due tipi principali di VCS, la differenza principale è il numero di repository:

  • Sistemi di controllo della versione centralizzati (CVCS): qui ogni membro del team di progetto ottiene la propria directory di lavoro locale, tuttavia, applica le modifiche a un unico repository centrale.
  • Sistemi di controllo della versione distribuiti (DVCS): in questo modo, ogni membro del team di progetto ottiene la propria directory di lavoro locale e la directory Git dove può effettuare commit. Dopo che un individuo ha effettuato un commit a livello locale, gli altri membri del team non possono accedere alle modifiche finché non le invia al repository centrale. Git è un esempio di DVCS.

Inoltre, un repository Git può essere bare (repository che non ha una directory di lavoro) o non-bare (uno con una directory funzionante rubrica). I repository condivisi (o pubblici o centrali) dovrebbero sempre essere spogli: tutti i repository Github sono spogli.

Scopri il controllo della versione con Git

Git è un sistema di controllo delle versioni gratuito e open source, veloce, potente, distribuito, facile da usare e popolare, molto efficiente con progetti di grandi dimensioni e dotato di un notevole sistema di ramificazione e fusione. È progettato per gestire i dati più come una serie di istantanee di un mini filesystem, archiviato in una directory Git.

Il flusso di lavoro in Git è molto semplice: apporti modifiche ai file nella tua directory di lavoro, quindi aggiungi selettivamente solo i file che sono cambiati, nell'area di staging, per farli parte del tuo prossimo commit.

Una volta che sei pronto, esegui un commit, che prende i file dall'area di staging e salva lo snapshot in modo permanente nella directory Git.

Per installare Git in Linux, utilizza il comando appropriato per la tua distribuzione preferita:

sudo apt install git   [On Debian/Ubuntu]
sudo yum install git   [On CentOS/RHEL]

Dopo aver installato Git, ti consigliamo di dire a Git chi sei fornendo il tuo nome completo e indirizzo email, come segue:

git config --global user.name “Aaron Kili”
git config --global user.email “[email ”

Per verificare le impostazioni di Git, utilizza il comando seguente.

git config --list 

Crea un nuovo repository Git

Repository condivisi o flussi di lavoro centralizzati sono molto comuni ed è ciò che dimostreremo qui. Ad esempio, supponiamo che ti sia stato assegnato il compito di configurare un archivio centrale remoto per amministratori/programmatori di sistema di vari dipartimenti della tua organizzazione, per lavorare su un progetto chiamato bashscripts, che sarà archiviato in /projects/scripts/ sul server.

SSH nel server remoto e crea la directory necessaria, crea un gruppo chiamato sysadmins (aggiungi tutti i membri del team di progetto a questo gruppo, ad esempio utente admin), e imposta le autorizzazioni appropriate su questa directory.

mkdir-p /projects/scripts/
groupadd sysadmins
usermod -aG sysadmins admin
chown :sysadmins -R /projects/scripts/
chmod 770 -R /projects/scripts/

Quindi inizializza un repository di progetto nudo.

git init --bare /projects/scripts/bashscripts

A questo punto, hai inizializzato con successo una semplice directory Git che è la struttura di archiviazione centrale per il progetto. Prova a fare un elenco della directory per vedere tutti i file e le directory al suo interno:

ls -la /projects/scripts/bashscripts/

Clonare un repository Git

Ora clona il repository Git condiviso remoto sul tuo computer locale tramite SSH (puoi anche clonare tramite HTTP/HTTPS se hai un server web installato e configurato in modo appropriato, così come lo è caso con la maggior parte dei repository pubblici su Github), ad esempio:

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts 

Per clonarlo in una directory specifica (~/bin/bashscripts), utilizza il comando seguente.

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts ~/bin/bashscripts

Ora hai un'istanza locale del progetto in un repository non nudo (con una directory di lavoro), puoi creare la struttura iniziale del progetto (ovvero aggiungere un README.md file, sottodirectory per diverse categorie di script, ad esempio recon per archiviare script di ricognizione, sysadmin ro per archiviare script sysadmin ecc.):

cd ~/bin/bashscripts/
ls -la

Controlla un riepilogo dello stato di Git

Per visualizzare lo stato della tua directory di lavoro, utilizza il comando status che ti mostrerà tutte le modifiche apportate; quali file non vengono tracciati da Git; quei cambiamenti che sono stati messi in scena e così via.

git status 

Modifiche e commit della fase Git

Successivamente, esegui tutte le modifiche utilizzando il comando aggiungi con l'opzione -A ed esegui il commit iniziale. Il flag -a indica al comando di organizzare automaticamente i file che sono stati modificati e -m viene utilizzato per specificare un messaggio di commit:

git add -A
git commit -a -m "Initial Commit"

Pubblica commit locali nel repository Git remoto

In qualità di responsabile del team di progetto, ora che hai creato la struttura del progetto, puoi pubblicare le modifiche nel repository centrale utilizzando il comando push come mostrato.

git push origin master

In questo momento, il tuo repository git locale dovrebbe essere aggiornato con il repository centrale del progetto (origine), puoi confermarlo eseguendo ancora una volta il comando status.

git status

Puoi anche informare i tuoi colleghi di iniziare a lavorare sul progetto clonando il repository sui loro computer locali.

Crea un nuovo ramo Git

La ramificazione ti consente di lavorare su una funzionalità del tuo progetto o risolvere rapidamente i problemi senza toccare la base di codice (ramo principale). Per creare un nuovo ramo e poi passare ad esso, utilizza rispettivamente i comandi branch e checkout.

git branch latest
git checkout latest

In alternativa, puoi creare un nuovo ramo e passare ad esso in un solo passaggio utilizzando il comando checkout con il flag -b.

git checkout -b latest

Puoi anche creare un nuovo ramo basato, ad esempio, su un altro ramo.

git checkout -b latest master

Per verificare in quale ramo ti trovi, usa il comando ramo (un asterisco indica il ramo attivo):

git branch

Dopo aver creato e passato al nuovo ramo, apporta alcune modifiche al suo interno ed esegui alcuni commit.

vim sysadmin/topprocs.sh
git status
git commit add  sysadmin/topprocs.sh
git commit -a -m 'modified topprocs.sh'

Unisci le modifiche da un ramo all'altro

Per unire le modifiche sottoposte al test del ramo nel ramo principale, passa al ramo principale ed esegui l'unione.

git checkout master 
git merge test 

Se non hai più bisogno di un ramo particolare, puoi eliminarlo utilizzando l'opzione -d.

git branch -d test

Scarica le modifiche dal repository centrale remoto

Supponendo che i membri del tuo team abbiano inviato le modifiche al repository centrale del progetto, puoi scaricare qualsiasi modifica nell'istanza locale del progetto utilizzando il comando pull.

git pull origin
OR
git pull origin master	#if you have switched to another branch

Ispeziona il repository Git ed esegui confronti

In quest'ultima sezione, tratteremo alcune utili funzionalità di Git che tengono traccia di tutte le attività svolte nel tuo repository, consentendoti così di visualizzare la cronologia del progetto.

La prima funzionalità è il log Git, che visualizza i log dei commit:

git log

Un'altra caratteristica importante è il comando show che visualizza vari tipi di oggetti (come commit, tag, alberi ecc..):

git show

La terza caratteristica fondamentale che devi conoscere è il comando diff, utilizzato per confrontare o mostrare la differenza tra i rami, visualizzare le modifiche tra la directory di lavoro e l'indice, le modifiche tra due file su disco e molto altro ancora.

Ad esempio, per mostrare la differenza tra il ramo principale e quello più recente, puoi eseguire il comando seguente.

git diff master latest

Leggi anche: 10 migliori alternative Git per ospitare progetti open source

Riepilogo

Git consente a un team di persone di lavorare insieme utilizzando gli stessi file, registrando al contempo le modifiche ai file nel tempo in modo che possano richiamare versioni specifiche in seguito.

In questo modo, puoi utilizzare Git per gestire il codice sorgente, i file di configurazione o qualsiasi file archiviato su un computer. Potresti voler fare riferimento alla documentazione Git Online per ulteriore documentazione.