Ответ 1
Следующая команда должна работать.
git push origin refs/heads/product-0.2:refs/heads/product-0.2
Я пытаюсь нажать новую локальную ветвь 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
.
Некоторые люди работают вокруг этого, удаляя конфликтный тег локально, затем нажмите ветку, затем извлеките удаленный тег, но он кажется громоздким и подверженным ошибкам.
Как я могу создать свою ветку с минимальной суматохой?
Спасибо за ваш вклад
Следующая команда должна работать.
git push origin refs/heads/product-0.2:refs/heads/product-0.2
Измените имена. Если вы делаете это локально или удаленно, просто измените имена. Тег и ветвь принципиально одинаковы в git: они представляют собой указатель на фиксацию. Разница в том, что указатель ветки продвигается, когда вы совершаете фиксации, в то время как тег остается статичным. Однако вы можете выполнить git checkout
на ветке или теге. Зачем вам бороться со всеми этими удвоенными именами? Измените их.
Проверьте, какие теги связаны с вашей веткой:
git tag
В моем случае у меня был тег с тем же именем ветки. Удалялось:
git tag -d [tag-name]
Сегодня утром я пытался протолкнуть канонический репозиторий и получил следующую ошибку:
$ 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
Я смог снова нажать.
Это не удалось:
git push $origin $branch:$branch
Пока это сработало для меня:
git checkout $branch
git push $origin HEAD:$branch