Как вы нажимаете тег 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
.