git push локальная ветка с тем же именем, что и удаленный тег - PullRequest
85 голосов
/ 21 февраля 2012

Я пытаюсь отправить новую локальную ветку product-0.2 в удаленную систему, где уже есть тег с тем же именем (но сама ветвь не существует)

git push -v --tags --set-upstream origin product-0.2:product-0.2 
Pushing to https://****@github.com/mycompany/product.git
error: src refspec product-0.2 matches more than one.
error: failed to push some refs to 'https://****@github.com/mycompany/product.git'

То же самое с:

git push origin product-0.2:/refs/heads/product-0.2 

Хотя с другой стороны это работает, например, создайте ветку product-0.1, зафиксируйте ее, затем примените тег product-0.1.

Некоторые люди обходят это, удаляя конфликтующиепометить локально, затем нажать на ветку, затем извлечь удаленный тег, но он кажется громоздким и подвержен ошибкам.

Как создать ветку с минимальными усилиями?

Спасибо за ваш ввод

Ответы [ 6 ]

132 голосов
/ 21 февраля 2012

Следующая команда должна работать.

git push origin refs/heads/product-0.2:refs/heads/product-0.2 
30 голосов
/ 17 апреля 2015

Проверьте, какие теги связаны с вашей веткой:

git tag

В моем случае у меня был тег с тем же именем ветви. Удаление сработало:

git tag -d [tag-name]
15 голосов
/ 21 февраля 2012

Измените имена.

Делаете ли вы это локально или удаленно, просто измените имена.

Тег и ветвь в сущности одно и то же в git: они представляют указатель на коммит.Разница заключается в том, что указатель ветки перемещается по мере выполнения коммитов, а тег остается статичным.

Однако, , вы можете выполнить git checkout в ответвлении или теге.Зачем тебе бороться со всеми этими удвоенными именами?Поменяй их.

8 голосов
/ 01 июня 2017

Сегодня утром я пытался отправить в канонический репозиторий и получил следующую ошибку:

$ git push origin master
error: src refspec master matches more than one.
error: failed to push some refs to 'ssh://user@host/srv/git/repo'

Это произошло потому, что я случайно создал мастер-тег локально:

$ git tag
master
tag1
tag2
tag3
tag4

Как только я удалил этот тег локально:

git tag -d master

Я снова смог толкнуть.

5 голосов
/ 28 августа 2018

Если вы пытаетесь вставить тег с тем же именем ветви:

git push origin tag myTag
5 голосов
/ 29 января 2014

Это не удалось:

git push $origin $branch:$branch 

Пока это работало для меня:

git checkout $branch
git push $origin HEAD:$branch
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...