Quero forçar o envio, por exemplo, da minha tag 1.0.0
para minha master
ramificação remota .
Agora estou fazendo o seguinte:
git push production +1.0.0:master
Quero forçar o envio , porque tudo o que me interessa é que o código dentro da1.0.0
tag seja enviado para omaster
ramo no repositório remoto.
O que estou fazendo de errado?
Atualização # 1
Quando eu SSH no meu servidor onde meu repositório Git está e executo git branch -l
, também não vejo a master
ramificação listada.
Atualização # 2
Depois de executar git tag -l
de dentro do repositório Git remoto, vejo que master
está listado, o que significa que, quando executei o seguinte:
git push production 1.0.0:master
Na verdade, ele empurrou a tag e criou uma tag nomeada em master
vez de uma nova ramificação .
Quero basicamente enviar o conteúdo da tag 1.0.0
para o master
ramo do repositório Git remoto.
Respostas:
Provavelmente está falhando porque
1.0.0
é uma tag anotada. Talvez você tenha visto a seguinte mensagem de erro:Tags anotadas têm seu próprio tipo distinto de objeto que aponta para o objeto de confirmação marcado. As ramificações não podem apontar utilmente para marcar objetos, apenas confirmar objetos. Você precisa "descascar" a tag anotada de volta para confirmar o objeto e enviar por push.
Há outra sintaxe que também funcionaria nesse caso, mas significa algo ligeiramente diferente se o objeto de tag apontar para algo diferente de um commit (ou um objeto de tag que aponte para (um objeto de tag que aponte para ...) um commit) .
Essas sintaxes de descascamento de tags são descritas em git-rev-parse (1) em Especificando revisões .
fonte
git push rep +tag:master
criará uma marca chamada mestre em vez de um ramo.git push rep +tag~0:master
(novamente, quando o mestre não existir como filial ou tag) falhará com "erro: não é possível enviar para o destino não qualificado". O comando que teria feito o que você queria (antes de qualquer mestre ramo / etiqueta existiu) égit push rep +tag~0:refs/heads/master
(refs/heads/
é o namespace em que ramos são armazenados).~{commit}
sintaxe é literal (ou seja, sempre esses nove caracteres); a palavracommit
não é um espaço reservado aqui.fonte
git push production :1.0.0
.git push production :refs/tags/1.0.0
a tag de exclusão únicaEu crio a tag assim e depois a envio ao GitHub:
fonte
Para enviar uma única tag:
git push <reponame> <tagname>
Por exemplo
git push production 1.0.0
,. Tags não estão vinculadas a ramificações, elas são vinculadas a confirmações.Quando você quiser ter o conteúdo da tag na ramificação principal, faça-o localmente em sua máquina. Eu diria que você continuou desenvolvendo em seu ramo mestre local. Então apenas um
git push origin master
deve ser suficiente.fonte