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


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

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

git push production +1.0.0:master

Я хочу, чтобы заставить толчок, потому что все, что меня волнует, это то, что код внутри 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.

4 213

4 ответа:

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

ошибка: попытка записать объект non-commit в ветку 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) под С Указанием Изменений.

git push --tags production

Я создаю тег, как это, а затем я нажимаю его на 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 git@github.com:neoneye/triangle_draw.git
 * [new tag]         v1.1 -> v1.1

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

например, git push production 1.0.0. Теги не привязаны к ветвям, они привязаны к коммитам.

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