Come utilizzare i tag git per migliorare i tuoi processi di sviluppo

Come utilizzare i tag git per migliorare i tuoi 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 perfetta capacità di creare rami. I team di sviluppo possono utilizzare le filiali per lavorare su funzionalità o versioni specifiche. Tuttavia, il tag di Git è un comando spesso trascurato che può aiutare i team a semplificare i loro flussi di lavoro. In questo articolo, ci immergeremo in ciò che è, come è e perché è di etichettatura git.

Cosa sono i tag git?

I tag Git sono suggerimenti per determinati commit. Sono come i segnalibri. Puoi usare qualsiasi tipo di convenzione che desideri creare tag. Ma la maggior parte dei team di sviluppo utilizza i numeri di versione come V1.0.1 o v.1.1-A1 per creare tag.

Creazione di tag

Esistono due tipi di tag in GIT:

  • Tag leggeri
  • Tag annotati

Tag leggeri

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

$ git tag

Questi tag sono archiviati in .cartella git del tuo repository di lavoro.

Creiamo alcuni tag GIT leggeri:

$ git tag v1.0.1
$ GIT TAG RELSED-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 fatti all'indietro, stanno indicando lo stesso commit.

Tag annotati

I tag annotati ti consentono di archiviare ulteriori informazioni. È possibile utilizzare l'opzione "-a" per creare questi tag:

$ git tag -a

Proviamo a creare un tag annotato:

Git Tag -A V1.0.2

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

#
# Scrivi un messaggio per 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 tag nel tuo codice

Ora che abbiamo creato alcuni tag, vediamo cosa abbiamo:

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

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

$ git tag -n1
Release-20190401 Readme aggiornato.MD
v1.0.1 Readme 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 indicano lo stesso commit (commit 34671):

$ git log
commit 106e0bb02a58ec3e818e9acdf3bb19a9247a0e84 (testa -> master, tag: v1.0.4)
Autore: Zak H
Data: sabato 6 aprile 21:06:02 2019 -0700
Funzione aggiunta 2
commit 161c6e564e79624623ed767397a98105426d0ec4
Autore: Zak H
Data: sabato 6 aprile 21:05:25 2019 -0700
Funzione aggiunta 1
commit 34671d824f9b9951e57f867998cb3c02a11c4805 (tag: v1.0.3, tag: V1.0.2,
Tag: V1.0.1, tag: rilascio-20190401)
Autore: Zak H
Data: sabato 6 aprile 20:24:53 2019 -0700
Readme aggiornato.MD
commit afe9b0c7c9fbce3c3d585afe67358a5eec226e2c (origine/master)
Autore: Zak H
Data: sabato 6 aprile 20:23:55 2019 -0700
Dentro

Tuttavia, i tag leggeri mostrano i commenti del commit stesso che viene "aggiornato readme.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 tag particolare, puoi utilizzare il comando "Git Show":

$ git show v1.0.3
tag v1.0.3
Tagger: Zak H
Data: sabato 6 aprile 20:43:30 2019 -0700
La mia versione 1.0.3
commit 34671d824f9b9951e57f867998cb3c02a11c4805 (tag: v1.0.3, tag: V1.0.2, tag:
v1.0.1, tag: rilascio-20190401)
Autore: Zak H
Data: sabato 6 aprile 20:24:53 2019 -0700
Readme aggiornato.MD
Diff --Git A/Readme.md b/readme.MD
INDICE 9DAEFB… 180CF83 100644
--- a/readme.MD
+++ b/readme.MD
@@ -1 +1 @@
-test
+test2

Contrassegnamento di commessi più vecchi

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

$ git log --oneline
106e0bb (testa -> master, tag: v1.0.4) Aggiunta funzione 2
161C6E5 Aggiunta Funzione 1
34671d8 (tag: V1.0.3, tag: V1.0.2, tag: v1.0.1, tag: rilascio-20190401) Readme aggiornato.MD
AFE9B0C (Origin/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

Poplerà 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 ha aggiunto tag a un commit anziano
v1.0.1 Readme aggiornato.MD
v1.0.2 La mia versione 1.0.2
v1.0.3 La mia versione 1.0.3
v1.0.4 Funzione aggiunta 2

Rimozione dei tag

Supponiamo, decidi di non voler i tag "Rilascio" in quanto sono confusi. Puoi prima trovare tutti i tag "Release-":

$ git tag -l versione*
Release-20190401
Release-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 Readme aggiornato.MD
v1.0.2 La mia versione 1.0.2
v1.0.3 La mia versione 1.0.3
v1.0.4 Funzione aggiunta 2

Tag di sovrascrittura

Supponiamo che abbiamo una situazione in cui “V1.0.Il tag da 4 "è appeso alla caratteristica 2:

$ git log --oneline
D7B18A4 (testa -> master) Funzione aggiunta 3
106e0bb (tag: v1.0.4) Aggiunta funzione 2
161C6E5 Aggiunta Funzione 1
34671d8 (tag: V1.0.3, tag: V1.0.2, tag: v1.0.1) Readme aggiornato.MD
AFE9B0C (Origin/Master) init

Ma vogliamo il tag “V1.0.4 "per indicare la funzione 3. Se proviamo a rimonta, otteniamo questo errore:

$ git tag v1.0.4 D7B18A4
Fatal: 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 registro, vediamo che il tag è passato al commit che vogliamo:

$ git log --oneline
D7B18A4 (Head -> Master, Tag: V1.0.4) Aggiunta funzione 3
106e0bb ha aggiunto funzione 2
161C6E5 Aggiunta Funzione 1
34671d8 (tag: V1.0.3, tag: V1.0.2, tag: v1.0.1) Readme aggiornato.MD
AFE9B0C (Origin/Master) init

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

Condivisione di tag con altri utenti

Quando spingi il codice nel tuo repository remoto, i tag GIT non vengono spinti automaticamente. Se vuoi condividere i tuoi tag con altri utenti, devi spingerli esclusivamente.

I tag possono essere spinti in questo modo:

$ git push origin v1.0.4
Contare gli oggetti: 12, fatto.
Compressione delta usando fino a 4 thread.
Oggetti di compressione: 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/utenti/zakh/_work/apprendimento/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 spinto ("V1.0.4 "in questo caso).

Usando i rami vs tag

I rami sono utili per nuove funzionalità o sperimentando. In generale, si desidera ramificare quando c'è un lavoro futuro che deve essere fatto e il lavoro è dirompente per il tuo sviluppo attuale. D'altra parte, i tag sono più utili come istantanee. Dovresti usarli per ricordare cose particolari che hai già fatto.

Insomma

Git Tag è una funzione sottoutilizzata in grado di fornire un ottimo modo per tenere traccia delle versioni e delle caratteristiche speciali. Se imposti buone pratiche attorno ai 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: // softwarengineering.StackExchange.com/Domande/165725/GIT-ranch-and-tagging-best-practices
  • https: // www.Atlassian.com/git/tutorial/ispecting-a-repository/git-tag
  • https: // en.Wikipedia.org/wiki/software_versioning
  • https: // www.Techopedia.com/Definition/25977/software-wioning