Idiota

Come utilizzare i tag Git per migliorare i processi di sviluppo

Come utilizzare i tag Git per migliorare i processi di sviluppo
Per la maggior parte dei team di sviluppo, Git è diventato uno strumento essenziale per il controllo della versione. Una grande ragione per la popolarità di Git è la sua capacità di creare rami senza soluzione di continuità. I team di sviluppo possono utilizzare i rami per lavorare su funzionalità o versioni specifiche. Tuttavia, il tag di Git è un comando spesso trascurato che può aiutare i team a semplificare i propri flussi di lavoro. In questo articolo, analizzeremo cosa è, come e perché del tagging di Git.

Cosa sono i tag Git?

I tag Git sono puntatori a determinati commit. Sono come segnalibri. Puoi usare qualsiasi tipo di convenzione tu voglia creare tag. Ma la maggior parte dei team di sviluppo usa numeri di versione come v1.0.1 o v.1.1-a1 per creare tag.

Creazione di tag

Ci sono due tipi di tag in Git:

Tag leggeri

I tag leggeri sono facili da creare. Puoi semplicemente usare la seguente riga di comando:

$git tag

Questi tag sono memorizzati nel .git del tuo repository di lavoro.

Creiamo alcuni tag Git leggeri:

$git tag v1.0.1
Rilascio tag $git-20190401

Nel primo caso abbiamo creato un tag con “v1.0.1". Nel secondo caso abbiamo creato un tag con “Release-20190401”. I tag leggeri non restituiscono alcun valore. Inoltre, è importante sottolineare che poiché questi due tag sono stati eseguiti uno contro l'altro, puntano allo stesso commit.

Tag annotati

I tag annotati ti consentono di memorizzare più informazioni. Puoi utilizzare l'opzione "-a" per creare questi tag:

$git tag -a

Proviamo a creare un tag annotato:

git tag -a v1.0.2

Apparirà una finestra di testo per inserire un commento che dovrebbe assomigliare a questo:

#
# Scrivi un messaggio per il tag:
#   v1.0.2
# Le righe che iniziano con '#' verranno ignorate.

Inserisci un commento e salvalo. Quindi, ora il tuo tag v1.0.2 viene salvato con un commento. In alternativa, puoi inserire direttamente il commento nella riga di comando in questo modo:

git tag -a v1.0.3 -m "La mia versione 1.0.3"

Trovare i tag nel tuo codice

Ora che abbiamo creato alcuni tag, vediamo cosa abbiamo:

$git tag -l
Rilascio-20190401
v1.0.1
v1.0.2
v1.0.3

Possiamo vedere che tutti i nostri tag sono visualizzati in ordine alfabetico. È possibile ottenere maggiori informazioni sui tag utilizzando il "-n" dove sta per il numero di righe dei commenti.

$git tag -n1
Release-20190401 README aggiornato.md
v1.0.1          LEGGIMI aggiornato.md
v1.0.2          La mia versione 1.0.2
v1.0.3          La mia versione 1.0.3

Qui puoi notare una differenza tra tag leggeri e annotati. In questo esempio, "Release-20190401" e "v1.0.1" sono tag leggeri. Il “v1.0.2” e “v1.0.3" sono tag annotati. Tutti puntano allo stesso commit (commit 34671):

$git log
commit 106e0bb02a58ec3e818e9acdf3bb19a9247a0e84 (HEAD -> master, tag: v1.0.4)
Autore: Zak H
Data: Sab 6 aprile 21:06:02 2019 -0700
 
Funzionalità aggiunta 2
 
commit 161c6e564e79624623ed767397a98105426d0ec4
Autore: Zak H
Data: Sab 6 aprile 21:05:25 2019 -0700
 
Funzionalità aggiunta 1
 
commit 34671d824f9b9951e57f867998cb3c02a11c4805 (tag: v1.0.3, etichetta: v1.0.2,
tag: v1.0.1, tag: Release-20190401)
Autore: Zak H
Data: Sab 6 aprile 20:24:53 2019 -0700
 
Leggimi aggiornato.md
 
commit afe9b0c7c9fbce3c3d585afe67358a5eec226e2c (origine/master)
Autore: Zak H
Data: Sab 6 aprile 20:23:55 2019 -0700
 
Dentro

Tuttavia, i tag leggeri mostrano i commenti del commit stesso che è "README aggiornato".md", mentre i tag annotati mostrano i singoli commenti che sono stati aggiunti durante il processo di creazione dei tag.

Mancia: Se vuoi trovare il numero di commit di un particolare tag, puoi usare il comando "git show":

$git mostra v1.0.3
tag v1.0.3
Tag: Zak H
Data: Sab 6 aprile 20:43:30 2019 -0700
 
La mia versione 1.0.3
 
commit 34671d824f9b9951e57f867998cb3c02a11c4805 (tag: v1.0.3, etichetta: v1.0.2, etichetta:
v1.0.1, tag: Release-20190401)
Autore: Zak H
Data: Sab 6 aprile 20:24:53 2019 -0700
 
Leggimi aggiornato.md
 
diff --git a/README.md b/README.md
indice 9daeafb… 180cf83 100644
--- a/README.md
+++ b/LEGGIMI.md
@@ -1 +1 @@
-test
+prova2

Taggare i commit più vecchi

Puoi anche tornare indietro e taggare un commit più vecchio. Diamo un'occhiata ai log:

$git log --oneline
106e0bb (HEAD -> master, tag: v1.0.4) Funzionalità aggiunta 2
161c6e5 Funzionalità aggiunta 1
34671d8 (tag: v1.0.3, etichetta: v1.0.2, etichetta: v1.0.1, tag: Release-20190401) README aggiornato.md
afe9b0c (origine/master) Init
$

Notiamo che il commit 161c6e5 non ha un tag associato. Possiamo taggare questo commit in questo modo:

$git tag -a Release-20190402 161c6e5

Apparirà la finestra dei commenti. Dopo aver inserito il commento, possiamo vedere che ora abbiamo il commit taggato:

$git tag -n1
Release-20190401 README aggiornato.md
Release-20190402 Aggiunto tag a un commit più vecchio
v1.0.1          LEGGIMI aggiornato.md
v1.0.2          La mia versione 1.0.2
v1.0.3          La mia versione 1.0.3
v1.0.4          Funzionalità aggiunta 2

Rimozione dei tag

Supponiamo che tu decida di non volere i tag "Release-" poiché sono confusi. Puoi prima trovare tutti i tag "Release-":

$git tag -l Rilascio*
Rilascio-20190401
Rilascio-20190402

Ora puoi rimuoverli con l'opzione "-d":

$git tag -d Release-20190401
Tag eliminato "Release-20190401" (era 34671d8)
$git tag -d Release-20190402
Tag eliminato 'Release-20190402' (era 6ee37bc)

Se controlliamo di nuovo i tag, dovremmo vedere solo i tag che iniziano con "v":

$git tag -n1
v1.0.1          LEGGIMI aggiornato.md
v1.0.2          La mia versione 1.0.2
v1.0.3          La mia versione 1.0.3
v1.0.4          Funzionalità aggiunta 2

Sovrascrivere i tag

Supponiamo di avere una situazione in cui "v1.0.Il tag da 4" sta puntando alla Caratteristica 2:

$git log --oneline
d7b18a4 (HEAD -> master) Aggiunta funzionalità 3
106e0bb (tag: v1.0.4) Aggiunta funzione 2
161c6e5 Funzionalità aggiunta 1
34671d8 (tag: v1.0.3, etichetta: v1.0.2, etichetta: v1.0.1) Leggimi aggiornato Update.md
afe9b0c (origine/master) Init

Ma vogliamo il tag "v1.0.4" che punta alla Caratteristica 3. Se proviamo a taggarlo nuovamente, otteniamo questo errore:

$git tag v1.0.4 d7b18a4
fatale: tag 'v1'.0.4' esiste già

Possiamo superare questo problema con l'opzione "-f":

$git tag -f v1.0.4 d7b18a4
Tag aggiornato 'v1'.0.4' (era 106e0bb)

Se controlliamo di nuovo il log, vediamo che il tag si è spostato sul commit che vogliamo:

$git log --oneline
d7b18a4 (HEAD -> master, tag: v1.0.4) Aggiunta funzione 3
106e0bb Funzionalità aggiunta 2
161c6e5 Funzionalità aggiunta 1
34671d8 (tag: v1.0.3, etichetta: v1.0.2, etichetta: v1.0.1) Leggimi aggiornato Update.md
afe9b0c (origine/master) Init

In alternativa, puoi anche eliminare un tag e aggiungerlo nuovamente a un nuovo commit.

Condivisione di tag con altri utenti

Quando si invia il codice al repository remoto, i tag Git non vengono inviati automaticamente pushed. Se vuoi condividere i tuoi tag con altri utenti, devi esclusivamente spingerli.

I tag possono essere spinti in questo modo:

$git push origin v1.0.4
Conteggio oggetti: 12, fatto.
Compressione delta utilizzando fino a 4 thread.
Comprimere oggetti: 100% (4/4), fatto.
Oggetti di scrittura: 100% (12/12), 902 byte | 150.00 KiB/s, fatto.
Totale 12 (delta 0), riutilizzato 0 (delta 0)
A /Users/zakh/_work/LearnGIT/git_tagging/remote/project_mayhem
* [nuovo tag]         v1.0.4 -> v1.0.4

Ora, se altri utenti clonano il repository remoto, vedranno solo il tag che è stato inserito ("v1.0.4” in questo caso).

Utilizzo di rami e tag

I rami sono utili per nuove funzionalità o per sperimentare. In genere, si desidera effettuare una diramazione quando c'è del lavoro futuro che deve essere svolto e il lavoro è dirompente per il proprio sviluppo attuale. D'altra parte, i tag sono più utili come istantanee. Dovresti usarli per ricordare cose particolari che hai già fatto.

In conclusione

Il tag Git è una funzionalità sottoutilizzata che può fornire un ottimo modo per tenere traccia delle versioni e delle funzionalità speciali. Se imposti buone pratiche sui tag, può aiutarti a comunicare facilmente con il tuo team di sviluppo e semplificare i tuoi processi di sviluppo.

Ulteriori studi:

  • https://git-scm.com/book/en/v2/Git-Basics-Tagging
  • https://ingegneria del software.stackexchange.com/questions/165725/git-branching-and-tagging-best practice
  • https://www.atlante.com/git/tutorials/inspecting-a-repository/git-tag
  • https://en.wikipedia.org/wiki/Versione_software
  • https://www.tecnopedia.com/definition/25977/software-versioning
Le migliori distribuzioni Linux per il gioco nel 2021
Il sistema operativo Linux ha fatto molta strada dal suo aspetto originale, semplice e basato su server. Questo sistema operativo è notevolmente migli...
Come acquisire e riprodurre in streaming la tua sessione di gioco su Linux
In passato, giocare era considerato solo un hobby, ma con il tempo l'industria dei giochi ha visto una crescita enorme in termini di tecnologia e nume...
I migliori giochi da giocare con il tracciamento delle mani
Oculus Quest ha recentemente introdotto la grande idea del tracciamento manuale senza controller. Con un numero sempre crescente di giochi e attività ...