Git: фиксация тега и затем слияние коммит с мастером
Я в основном знаком с SVN. Я уже давно пользуюсь Git, но не проделал чрезвычайно продвинутых вещей. Для моего проекта я создаю теги, которые отмечают отдельные выпуски. Например, у меня есть тег с именем v1.2.3
для конкретного выпуска моего проекта. Я хочу зафиксировать исправление для этого тега, а затем объединить его с мастером. Как мне это сделать? Я посмотрел информацию о создании ветки из тега, но я не уверен, что это правильный способ сделать это. Можно ли зафиксировать тег непосредственно, а затем объединить его с мастером?
1 ответ
По моему мнению, фиксация тега совершенно неверна, хотя svn по дизайну это позволяет.
Скажем, у вас есть версия v1.2.3, и вы фиксируете этот тег - что вы получаете? Все еще v1.2.3 или 1.2.3 a или что-то подобное? Как вы восстанавливаете, какая версия 1.2.3 была позже?
Тем не менее, в Git вы можете воссоздать теги. Но я не уверен, следует ли вам делать это для любого другого случая, кроме "Я случайно пометил неверную версию" или если у вас есть "движущиеся" теги, такие как "последняя стабильная версия".
В git вы можете сделать:
git branch v1.2.3-bugfix v1.2.3 [v1.2.3-bugfix is your branch, v1.2.3 the tag]
git checkout v1.2.3-bugfix
-- do your changes --
git add ...
git commit
git tag -f v1.2.3
То есть сначала вы создаете ветку, начиная с вашего тега. Затем вы проверяете эту ветку (для этого есть ярлык с помощью git checkout -b). Вы фиксируете свои изменения и воссоздаете тег.
После этого вы можете удалить ветку исправления ошибок.