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
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: