Jak używać tagów GIT do poprawy procesów rozwoju

Jak używać tagów GIT do poprawy procesów rozwoju
W przypadku większości zespołów programistycznych Git stał się niezbędnym narzędziem do kontroli wersji. Głównym powodem popularności Git jest jego bezproblemowa zdolność do tworzenia gałęzi. Zespoły programistów mogą wykorzystywać oddziały do ​​pracy nad określonymi funkcjami lub wydaniami. Jednak tag Git jest często pomijanym poleceniem, które może pomóc zespołom uprościć ich przepływy pracy. W tym artykule zanurzymy się w tym, co jest, jak i dlaczego Git Tagging.

Co to są tagi git?

Tagi git są wskazówkami do niektórych zatrzymów. Są jak zakładki. Możesz użyć dowolnej konwencji, którą chcesz tworzyć tagi. Ale większość zespołów programistycznych używa numerów wersji, takich jak V1.0.1 lub v.1.1-A1, aby utworzyć tagi.

Tworzenie tagów

Istnieją dwa rodzaje tagów w Git:

  • Lekkie tagi
  • Adnotowane tagi

Lekkie tagi

Lekkie tagi są łatwe do utworzenia. Możesz po prostu użyć następującego wiersza poleceń:

$ git tag

Te tagi są przechowywane w .folder git twojego działającego repozytorium.

Utwórzmy kilka lekkich tagów git:

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

W pierwszym przypadku stworzyliśmy tag z „v1.0.1 ”. W drugim przypadku stworzyliśmy tag z „Release-20190401”. Lekkie znaczniki nie zwracają żadnej wartości. Należy również wskazać, że ponieważ te dwa tagi zostały wykonane z powrotem, wskazują na to samo zatwierdzenie.

Adnotowane tagi

Tagi z adnotacjami pozwalają przechowywać więcej informacji. Możesz użyć opcji „-a”, aby utworzyć te tagi:

$ git tag -a

Spróbujmy utworzyć adnotowany tag:

git tag -a v1.0.2

Wyska okno tekstowe, aby wprowadzić komentarz, który powinien wyglądać tak:

#
# Napisz wiadomość do tagu:
# v1.0.2
# Linie zaczynające się na „#” zostaną zignorowane.

Wprowadź komentarz i zapisz go. Więc teraz twój tag v1.0.2 jest zapisywane z komentarzem. Alternatywnie możesz bezpośrednio wprowadzić komentarz w wierszu poleceń w ten sposób:

git tag -a v1.0.3 -m "Moja wersja 1.0.3 "

Znalezienie tagów w swoim kodzie

Teraz, gdy stworzyliśmy kilka tagów, zobaczmy, co mamy:

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

Widzimy, że wszystkie nasze tagi są wyświetlane w kolejności alfabetycznej. Możesz uzyskać więcej informacji o tagach, używając „-n”, w którym oznacza liczbę wierszy komentarzy.

$ git tag -n1
Release-20190401 Zaktualizowany ReadMe.MD
v1.0.1 zaktualizowany Readme.MD
v1.0.2 Moja wersja 1.0.2
v1.0.3 Moja wersja 1.0.3

Tutaj możesz zauważyć różnicę między lekkimi i adnotacjami. W tym przykładzie „wydanie-20190401” i „V1.0.1 ”to lekkie tagi. „V1.0.2 ”i„ V1.0.3 ”to tagi z adnotacjami. Wszystkie wskazują na to samo zatwierdzenie (zatwierdzenie 34671):

$ git log
commit 106E0BB02A58EC3E818E9ACDF3BB19A9247A0E84 (głowa -> master, tag: v1.0.4)
Autor: Zak H
Data: Sobota 6 kwietnia 21:06:02 2019 -0700
Dodano funkcję 2
zatwierdzić 161C6E564E79624623ED767397A98105426D0EC4
Autor: Zak H
Data: Sobota 6 kwietnia 21:05:25 2019 -0700
Dodano funkcję 1
zatwierdzenie 34671D824F9B9951E57F867998CB3C02A11C4805 (Tag: v1.0.3, tag: v1.0.2,
Tag: v1.0.1, tag: wydanie-20190401)
Autor: Zak H
Data: Sobota 6 kwietnia 20:24:53 2019 -0700
Zaktualizowano Readme.MD
commit AFE9B0C7C9FBCE3C3D585AFE67358A5EEC226E2C (Origin/Master)
Autor: Zak H
Data: Sobota 6 kwietnia 20:23:55 2019 -0700
W tym

Jednak lekkie tagi pokazują komentarze z samego zatwierdzenia, które są „zaktualizowane Readme.MD ”, podczas gdy adnotowane tagi pokazują poszczególne komentarze, które zostały do ​​nich dodane podczas procesu tworzenia znacznika.

Wskazówka: Jeśli chcesz znaleźć numer zatwierdzenia konkretnego tagu, możesz użyć polecenia „git show”:

$ git show v1.0.3
Tag v1.0.3
Tagger: Zak H
Data: Sobota 6 kwietnia 20:43:30 2019 -0700
Moja wersja 1.0.3
zatwierdzenie 34671D824F9B9951E57F867998CB3C02A11C4805 (Tag: v1.0.3, tag: v1.0.2, Tag:
v1.0.1, tag: wydanie-20190401)
Autor: Zak H
Data: Sobota 6 kwietnia 20:24:53 2019 -0700
Zaktualizowano Readme.MD
diff -git a/readme.MD B/Readme.MD
indeks 9daeafb… 180cf83 100644
--- A/README.MD
+++ b/readme.MD
@@ -1 +1 @@
-test
+test2

Oznaczanie starszych zobowiązań

Możesz także wrócić i oznaczyć starsze zatwierdzenie. Spójrzmy na dzienniki:

$ git log -linia
106E0BB (głowa -> master, tag: v1.0.4) Dodano funkcję 2
161C6E5 Dodano funkcję 1
34671d8 (tag: v1.0.3, tag: v1.0.2, tag: v1.0.1, tag: wydanie-20190401) zaktualizowany readme.MD
AFE9B0C (Origin/Master) init
$

Zauważamy, że zatwierdzenie 161c6e5 nie ma powiązanego znacznika. Możemy oznaczać to zatwierdzenie:

$ git tag -a release -20190402 161c6e5

Wyska okno komentarza. Po wprowadzeniu komentarza możemy zobaczyć, że zatwierdziliśmy teraz Commit:

$ git tag -n1
Release-20190401 Zaktualizowany ReadMe.MD
Wydanie-20190402 dodano tag do starszego zatwierdzenia
v1.0.1 zaktualizowany Readme.MD
v1.0.2 Moja wersja 1.0.2
v1.0.3 Moja wersja 1.0.3
v1.0.4 Dodano funkcję 2

Usuwanie tagów

Załóżmy, że decydujesz, że nie chcesz tagów „wydania-”, ponieważ są mylące. Najpierw możesz znaleźć wszystkie tagi „Wydanie-„

$ git tag -l wydanie*
Release-20190401
Release-20190402

Teraz możesz je usunąć z opcją „-D”:

$ git tag -d wydanie -20190401
Usunięty tag „wydanie-20190401” (był 34671d8)
$ git tag -d wydanie -20190402
Usunięty tag „wydanie-20190402” (był 6ee37bc)

Jeśli ponownie sprawdzimy znaczniki, powinniśmy zobaczyć tylko tagi, które zaczynają się tylko od „V”:

$ git tag -n1
v1.0.1 zaktualizowany Readme.MD
v1.0.2 Moja wersja 1.0.2
v1.0.3 Moja wersja 1.0.3
v1.0.4 Dodano funkcję 2

Nadpisanie tagów

Załóżmy, że mamy sytuację, w której „v1.0.Tag 4 ”jest poing, aby uzyskać 2:

$ git log -linia
D7B18A4 (głowa -> master) Dodano funkcję 3
106E0BB (tag: v1.0.4) Dodano funkcję 2
161C6E5 Dodano funkcję 1
34671d8 (tag: v1.0.3, tag: v1.0.2, tag: v1.0.1) Zaktualizowany Readme.MD
AFE9B0C (Origin/Master) init

Ale chcemy tagu „v1.0.4 ”wskazać na funkcję 3. Jeśli spróbujemy go ponownie opanować, otrzymamy ten błąd:

$ git tag v1.0.4 D7B18A4
Fatal: Tag 'v1.0.4 'już istnieje

Możemy przezwyciężyć ten problem z opcją „-F”:

$ git tag -f v1.0.4 D7B18A4
Zaktualizowany tag 'v1.0.4 '(był 106e0bb)

Jeśli ponownie sprawdzimy dziennik, zobaczymy, że tag przeniósł się do żądanego zatwierdzenia:

$ git log -linia
D7B18A4 (głowa -> master, tag: v1.0.4) Dodano funkcję 3
106E0BB Dodano funkcję 2
161C6E5 Dodano funkcję 1
34671d8 (tag: v1.0.3, tag: v1.0.2, tag: v1.0.1) Zaktualizowany Readme.MD
AFE9B0C (Origin/Master) init

Alternatywnie możesz również usunąć tag i ponownie dodać do nowego zatwierdzenia.

Udostępnianie tagów z innymi użytkownikami

Po naciskaniu kodu do zdalnego repozytorium, tagi git nie są pchane automatycznie. Jeśli chcesz udostępnić swoje tagi innym użytkownikom, musisz je wyłączyć.

Tagi można w ten sposób popchnąć:

$ git push pochodzenie v1.0.4
Liczenie obiektów: 12, gotowe.
Kompresja delta za pomocą maksymalnie 4 wątków.
Kompresujące obiekty: 100% (4/4), gotowe.
Pisanie obiektów: 100% (12/12), 902 bajtów | 150.00 kib/s, gotowe.
Ogółem 12 (Delta 0), ponownie użyty 0 (Delta 0)
To/Users/Zakh/_Work/Learngit/git_tagging/remote/projekt_mayhem
* [nowy tag] v1.0.4 -> v1.0.4

Teraz, jeśli inni użytkownicy sklonują zdalne repozytorium, zobaczą tylko pchany tag („V1.0.4 ”W tym przypadku).

Za pomocą gałęzi vs tagów

Gałęzie są przydatne do nowych funkcji lub eksperymentów. Ogólnie rzecz biorąc, chcesz rozgałęzić się, gdy należy wykonać przyszłe prace, a praca jest destrukcyjna dla twojego obecnego rozwoju. Z drugiej strony znaczniki są bardziej przydatne jako migawki. Powinieneś użyć ich do zapamiętania konkretnych rzeczy, które już zrobiłeś.

Podsumowując

Git Tag to niedostatecznie wykorzystywana funkcja, która może zapewnić świetny sposób na śledzenie wydań i specjalnych funkcji. Jeśli skonfigurujesz dobre praktyki wokół tagów, może to pomóc w łatwej komunikacji z zespołem programistów i uproszczenia procesów programistycznych.

Dalsze badanie:

  • https: // git-scm.com/book/en/v2/git-basics-taging
  • https: // oprogramowanie organizacyjne.Stackexchange.COM/PYTANIA/165725/GIT Branching-and-Taging Best-Praktacje
  • https: // www.Atlassian.com/git/tutorials/inspecting-a-repozytory/git-tag
  • https: // en.Wikipedia.org/wiki/oprogramowanie_wersji
  • https: // www.Techopedia.COM/Definicja/25977/Oprogramowanie