Как вы нажимаете тег Git на ветку с помощью refspec?

Я хочу заставить push, например, мой тег 1.0.0 в удаленную ветвь master.

Теперь я делаю следующее:

git push production +1.0.0:master

Я хочу заставить push, потому что мне все равно, что код внутри тега 1.0.0 помещается в ветвь master в удаленном репозитории.

Что я делаю неправильно?

Обновление # 1

Когда я нахожу SSH на своем сервере, где находится мой Git репозиторий git branch -l, я не вижу master Также указана ветка.

Обновление # 2

После запуска git tag -l из удаленного репозитория Git, я вижу, что отображается master, что означает, что при запуске:

git push production 1.0.0:master

Фактически он нажал тег и создал тег с именем master, а не новую ветку.

Я хочу в основном нажать содержимое тега 1.0.0 в ветку master удаленного репозитория Git.

Ответ 1

Вероятно, это не так, потому что 1.0.0 - аннотированный тег. Возможно, вы видели следующее сообщение об ошибке:

Ошибка: попытка написать объект, не связанный с фиксацией, для ссылки refs/heads/master

Аннотированные теги имеют свой отдельный тип объекта, который указывает на помеченный объект фиксации. Филиалы не могут с пользой указывать на тег объектов, а только на объекты. Вам нужно "очистить" аннотированный тег назад, чтобы зафиксировать объект и вместо этого нажать.

git push production +1.0.0^{commit}:master
git push production +1.0.0~0:master          # shorthand

Существует и другой синтаксис, который также будет работать в этом случае, но это означает что-то немного другое, если объект тега указывает на нечто иное, чем коммит (или объект тега, который указывает (объект тега, который указывает на...) фиксация).

git push production +1.0.0^{}:master

Эти синтаксисы пилинга синтаксиса описаны в git -rev-parse (1) под Указание изменений.

Ответ 2

git push --tags production

Ответ 3

Я создаю тег как этот, а затем я нажимаю его на GitHub:

git tag -a v1.1 -m "Version 1.1 is waiting for review"
git push --tags

Counting objects: 1, done.
Writing objects: 100% (1/1), 180 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To [email protected]:neoneye/triangle_draw.git
 * [new tag]         v1.1 -> v1.1

Ответ 4

Для нажатия одного тега: git push <reponame> <tagname>

Например, git push production 1.0.0. Теги не привязаны к ветвям, они обязаны совершать транзакции.

Если вы хотите иметь содержимое тега в главной ветке, сделайте это локально на своем компьютере. Я бы предположил, что вы продолжали развиваться в своей местной мастерской. Тогда достаточно a git push origin master.