Просто, чтобы быть чистым. Вы действительно не вернетесь «назад». Скажем, у вас есть следующая история.
A<--B<--C<--D
|
(tag:1-2-0)
Теперь скажите, что вы вернулись C
. Вот что происходит.
A<--B<--C<--D<--E
|
(tag:1-2-0)
Как вы можете видеть, вы продвинулись вперед в истории. Если этот тег уже был выпущен, вы, вероятно, захотите рассмотреть это «исправление», а тег снова - 1-2-0-1
или что-то в этом роде. Не знаете, какова ваша схема номеров версий, так что, очевидно, просто обрабатывайте исправления в вашем процессе.
Учитывая это изменение, это приведет к исправлению.
(tag:1-2-0-1)
|
A<--B<--C<--D<--E
|
(tag:1-2-0)
Однако, если вы не выпустили или даже толкнул эту бирку на пульте дистанционного управления, и просто хочу, чтобы переместить метку, чтобы указать на E
, то вы можете сделать это двумя способами. Легко запомнить способ удалить тег и воссоздать его.
git tag -d 1-2-0
git tag 1-2-0 E
Чем короче, быстрее, но бесконечно менее удобный способ изменить тег без удаления было бы использовать update-ref
.
git update-ref refs/tags/1-2-0 E
В нечетном случае вы подтолкнули бирку и хотите удалить его с пульта дистанционного управления, используйте следующий синтаксис.
git push <remote> :1-2-0
Предполагая, что это ваш пульт дистанционного управления.
Какое поведение вы хотите? Кажется маловероятным, что вы хотели бы, чтобы Git сказал вам, что у вас есть тег 1-2-0 без каких-либо изменений, когда вы совершаете после этого, даже если некоторые из коммитов перекроют некоторые другие коммиты. Если вы хотите вернуться к тегу 1-2-0, просто «git checkout 1-2-0». –
Да, я понимаю, что вы имеете в виду. Я не могу просто проверить чек 1-2-0, поскольку я хочу, чтобы фактически перевести ветвь в это состояние. Поведение, которое я хочу, чтобы оно полностью вернулось, имеет ведущую ветвь в состоянии 1-2-0. – Kriem