Подтвердить что ты не робот

Git нажмите локальную ветвь с тем же именем, что и удаленный тег

Я пытаюсь нажать новую локальную ветвь 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.

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

Как я могу создать свою ветку с минимальной суматохой?

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

4b9b3361

Ответ 1

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

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

Ответ 2

Измените имена. Если вы делаете это локально или удаленно, просто измените имена. Тег и ветвь принципиально одинаковы в git: они представляют собой указатель на фиксацию. Разница в том, что указатель ветки продвигается, когда вы совершаете фиксации, в то время как тег остается статичным. Однако вы можете выполнить git checkout на ветке или теге. Зачем вам бороться со всеми этими удвоенными именами? Измените их.

Ответ 3

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

git tag

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

git tag -d [tag-name]

Ответ 4

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

$ git push origin master
error: src refspec master matches more than one.
error: failed to push some refs to 'ssh://[email protected]/srv/git/repo'

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

$ git tag
master
tag1
tag2
tag3
tag4

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

git tag -d master

Я смог снова нажать.

Ответ 5

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

git push $origin $branch:$branch 

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

git checkout $branch
git push $origin HEAD:$branch