Я хочу принудительно отправить, например, мой тег 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.0.0
это аннотированный тег. Возможно, вы увидели следующее сообщение об ошибке:У аннотированных тегов есть свой собственный особый тип объекта, который указывает на отмеченный объект фиксации. Ветви не могут с пользой указывать на объекты тегов, только коммитить объекты. Вам нужно «очистить» аннотированный тег, чтобы зафиксировать объект, и вместо этого нажать его.
Существует другой синтаксис, который также будет работать в этом случае, но это означает что-то немного другое, если объект тега указывает на что-то другое, чем коммит (или объект тега, который указывает (объект тега, который указывает на…) коммит) ,
Эти синтаксисы очистки тегов описаны в git-rev-parse (1) под заголовком Specifying Revisions .
источник
git push rep +tag:master
будет создан тег с именем master .git push rep +tag~0:master
(опять же, когда мастер не существует как ветвь или тег) завершится с ошибкой «ошибка: невозможно отправить в неквалифицированное место назначения». Команда, которая сделала бы то, что вы хотели (до того, как существовал какой-либо основной ветвь / тег),git push rep +tag~0:refs/heads/master
(refs/heads/
это пространство имен, в котором хранятся ветки).~{commit}
синтаксис буквальный (то есть всегда те девять символов); словоcommit
здесь не заполнено.источник
git push production :1.0.0
.git push production :refs/tags/1.0.0
для удаления тегаЯ создаю тег, подобный этому, и затем помещаю его в GitHub:
источник
Для нажатия одного тега:
git push <reponame> <tagname>
Так , например,
git push production 1.0.0
. Теги не привязаны к веткам, они привязаны к коммитам.Если вы хотите, чтобы содержимое тега находилось в основной ветке, делайте это локально на вашем компьютере. Я бы предположил, что вы продолжаете развиваться в своей локальной ветке master. Тогда просто
git push origin master
должно быть достаточно.источник