Какво представляват Git таговете?
Git таговете са указатели към определени фиксирания. Те са като отметки. Можете да използвате всякакъв вид конвенция, която искате да създадете тагове. Но повечето екипи за разработка използват номера на версии като v1.0.1 или v.1.1-a1 за създаване на тагове.
Създаване на тагове
В Git има два типа тагове:
- Леки етикети
- Анотирани етикети
Леки етикети
Леките етикети са лесни за създаване. Можете просто да използвате следния команден ред:
$ git тагТези маркери се съхраняват в .git папка на вашето работещо хранилище.
Нека създадем няколко леки Git тагове:
$ git таг v1.0.1$ git tag Release-20190401
В първия случай създадохме таг с „v1.0.1 ”. Във втория случай създадохме маркер с „Release-20190401“. Леките тагове не връщат никаква стойност. Също така е важно да се отбележи, че тъй като тези два маркера са направени гръб до гръб, те сочат към един и същ коммит.
Анотирани етикети
Анотираните маркери ви позволяват да съхранявате повече информация. Можете да използвате опцията “-a”, за да създадете следните маркери:
$ git таг -aНека се опитаме да създадем анотиран маркер:
git таг -a v1.0.2Ще се покаже текстов прозорец, за да въведете коментар, който трябва да изглежда така:
## Напишете съобщение за етикет:
# V1.0.2
# Редове, започващи с '#', ще бъдат игнорирани.
Въведете коментар и го запазете. И така, сега вашият таг v1.0.2 се записва с коментар. Като алтернатива можете директно да въведете коментара в командния ред по следния начин:
git таг -a v1.0.3-m "Моята версия 1.0.3 "Намиране на етикети във вашия код
След като създадохме няколко маркера, нека видим какво имаме:
$ git таг -lИздание-20190401
v1.0.1
v1.0.2
v1.0.3
Можем да видим, че всички наши маркери се показват в азбучен ред. Можете да получите повече информация за маркерите, като използвате „-n
Release-20190401 Актуализиран README.md
v1.0.1 Актуализиран README.md
v1.0.2 Моята версия 1.0.2
v1.0.3 Моята версия 1.0.3
Тук можете да забележите разлика между леките и коментираните маркери. В този пример „Release-20190401“ и „v1.0.1 ”са леки етикети. „V1.0.2 ”и„ v1.0.3 ”са коментирани маркери. Всички те сочат към един и същ ангажимент (ангажимент 34671):
$ git logфиксиране 106e0bb02a58ec3e818e9acdf3bb19a9247a0e84 (HEAD -> master, tag: v1.0.4)
Автор: Zak H
Дата: сряда, 6 април 21:06:02 2019 -0700
Добавена функция 2
ангажиране 161c6e564e79624623ed767397a98105426d0ec4
Автор: Zak H
Дата: сряда, 6 април 21:05:25 2019 -0700
Добавена функция 1
ангажиране 34671d824f9b9951e57f867998cb3c02a11c4805 (таг: v1.0.3, таг: v1.0.2,
таг: v1.0.1, таг: Release-20190401)
Автор: Zak H
Дата: сряда, 6 април 20:24:53 2019 -0700
Актуализиран README.md
ангажиране afe9b0c7c9fbce3c3d585afe67358a5eec226e2c (произход / главен)
Автор: Zak H
Дата: сряда, 6 април 20:23:55 2019 -0700
В него
Леките етикети обаче показват коментарите от самия коммит, който е „Актуализиран README.md ”, докато анотираните маркери показват отделните коментари, които са били добавени към тях по време на процеса на създаване на маркери.
Бакшиш: Ако искате да намерите номера на фиксиране на определен маркер, можете да използвате командата “git show”:
$ git show v1.0.3таг v1.0.3
Tagger: Zak H
Дата: сряда, 6 април 20:43:30 2019 -0700
Моята версия 1.0.3
ангажиране 34671d824f9b9951e57f867998cb3c02a11c4805 (таг: v1.0.3, таг: v1.0.2, таг:
v1.0.1, таг: Release-20190401)
Автор: Zak H
Дата: сряда, 6 април 20:24:53 2019 -0700
Актуализиран README.md
diff --git a / README.md b / README.md
индекс 9daeafb ... 180cf83 100644
--- а / ПРОЧЕТЕТЕ.md
+++ б / ЧЕТЕНЕ.md
@@ -1 +1 @@
-тест
+тест2
Маркиране на по-стари ангажименти
Можете също така да се върнете назад и да маркирате по-стар комит. Нека да разгледаме дневниците:
$ git log --oneline106e0bb (HEAD -> master, tag: v1.0.4) Добавена функция 2
161c6e5 Добавена функция 1
34671d8 (таг: v1.0.3, таг: v1.0.2, таг: v1.0.1, таг: Release-20190401) Актуализирано README.md
afe9b0c (произход / главен) Init
$
Забелязваме, че фиксирането 161c6e5 няма свързан маркер. Можем да маркираме този ангажимент по следния начин:
$ git tag -a Release-20190402 161c6e5Ще се появи прозорецът за коментари. След като поставихме коментара, можем да видим, че имаме отметка, маркирана сега:
$ git таг -n1Release-20190401 Актуализиран README.md
Release-20190402 Добавен таг към по-стар комит
v1.0.1 Актуализиран README.md
v1.0.2 Моята версия 1.0.2
v1.0.3 Моята версия 1.0.3
v1.0.4 Добавена функция 2
Премахване на тагове
Да предположим, че решавате, че не искате етикетите „Release-“, тъй като те са объркващи. Първо можете да намерите всички етикети „Release-“:
$ git tag -l Release *Издание-20190401
Release-20190402
Сега можете да ги премахнете с опцията “-d”:
$ git tag -d Release-20190401Изтрит таг „Release-20190401“ (беше 34671d8)
$ git tag -d Release-20190402
Изтрит таг „Release-20190402“ (беше 6ee37bc)
Ако проверим етикетите отново, трябва да видим само етикетите, които започват с „v“:
$ git таг -n1v1.0.1 Актуализиран README.md
v1.0.2 Моята версия 1.0.2
v1.0.3 Моята версия 1.0.3
v1.0.4 Добавена функция 2
Презаписване на тагове
Да предположим, че имаме ситуация, при която „v1.0.4-инчовият маркер насочва към функция 2:
$ git log --onelined7b18a4 (HEAD -> master) Добавена функция 3
106e0bb (таг: v1.0.4) Добавена функция 2
161c6e5 Добавена функция 1
34671d8 (таг: v1.0.3, таг: v1.0.2, таг: v1.0.1) Актуализиран README.md
afe9b0c (произход / главен) Init
Но ние искаме етикетът „v1.0.4 ”, за да сочи към функция 3. Ако се опитаме да го маркираме отново, получаваме тази грешка:
$ git таг v1.0.4 d7b18a4фатално: таг 'v1.0.4 'вече съществува
Можем да преодолеем този проблем с опцията “-f”:
$ git таг -f v1.0.4 d7b18a4Актуализиран таг 'v1.0.4 '(беше 106e0bb)
Ако проверим дневника отново, виждаме, че тагът се е преместил в желания от нас коммит:
$ git log --onelined7b18a4 (HEAD -> master, tag: v1.0.4) Добавена функция 3
106e0bb Добавена функция 2
161c6e5 Добавена функция 1
34671d8 (таг: v1.0.3, таг: v1.0.2, таг: v1.0.1) Актуализиран README.md
afe9b0c (произход / главен) Init
Като алтернатива можете също да изтриете маркер и да го добавите отново към нов ангажимент.
Споделяне на етикети с други потребители
Когато натиснете кода си в отдалеченото хранилище, Git таговете не се изтласкват автоматично. Ако искате да споделите своите маркери с други потребители, трябва да ги натискате изключително.
Етикетите могат да се натискат по следния начин:
$ git push origin v1.0.4Преброяване на обекти: 12, готово.
Делта компресия с използване на до 4 нишки.
Компресиране на обекти: 100% (4/4), готово.
Писане на обекти: 100% (12/12), 902 байта | 150.00 KiB / s, готово.
Общо 12 (делта 0), повторно използвана 0 (делта 0)
До / Users / zakh / _work / LearnGIT / git_tagging / remote / project_mayhem
* [нов маркер] v1.0.4 -> v1.0.4
Сега, ако други потребители клонират отдалеченото хранилище, те ще видят само маркера, който е бил изтласкан („v1.0.4 ”в случая).
Използване на клонове срещу етикети
Клоновете са полезни за нови функции или експерименти. Като цяло искате да се разклоните, когато има бъдеща работа, която трябва да се свърши и работата е разрушителна за вашето текущо развитие. От друга страна, таговете са по-полезни като моментни снимки. Трябва да ги използвате, за да запомните конкретни неща, които вече сте направили.
В заключение
Git tag е недостатъчно използвана функция, която може да осигури чудесен начин за проследяване на изданията и специалните функции. Ако настроите добри практики около маркери, това може да ви помогне лесно да общувате с вашия екип за разработка и да опростите процесите на разработка.
Допълнително проучване:
- https: // git-scm.com / book / en / v2 / Git-Basics-Tagging
- https: // софтуерен инженеринг.обмен на стекове.com / questions / 165725 / git-разклоняване-и-маркиране-най-добри практики
- https: // www.атласки.com / git / tutorials / inspecting-a-repository / git-tag
- https: // en.wikipedia.org / wiki / Software_versioning
- https: // www.techopedia.com / definition / 25977 / версиране на софтуер