git push local branch с тем же именем, что и удаленный тег
Я пытаюсь подтолкнуть новую локальную ветку 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 ответов:
проверьте, какие теги связаны с вашей веткой:
git tag
в моем случае, у меня был тег с тем же именем ветви. Удаление его работало:
git tag -d [tag-name]
изменить имена.
Если вы делаете это локально или удаленно, просто измените имена.
тег и ветвь в основном одно и то же в git: они представляют собой указатель на фиксацию. Разница заключается в том, что указатель ветви продвигается по мере фиксации, а тег остается статичным.
, вы сможете выполнить
git checkout
на ветке или теге. Зачем тебе драться со всеми этими раздвоенными именами? Изменение их.
Я пытался нажать на канонический репозиторий сегодня утром и получил следующую ошибку:
$ 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
я смог нажать снова.