Je veux forcer le push, par exemple, mon tag 1.0.0
vers ma master
branche distante .
Je fais maintenant ce qui suit:
git push production +1.0.0:master
Je veux forcer la poussée , parce que tout ce qui m'importe, c'est que le code à l'intérieur de la1.0.0
balise est poussé vers lamaster
branche du référentiel distant.
Qu'est-ce que je fais mal?
Mise à jour # 1
Lorsque je SSH sur mon serveur où se trouve mon référentiel Git et que git branch -l
je l' exécute , je ne vois pas non plus la master
branche répertoriée.
Mise à jour # 2
Après avoir exécuté git tag -l
depuis l'intérieur du référentiel Git distant, je vois que cela master
est répertorié, ce qui signifie que lorsque j'ai exécuté ce qui suit:
git push production 1.0.0:master
Il a en fait poussé la balise et créé une balise nommée master
plutôt qu'une nouvelle branche .
Je veux essentiellement pousser le contenu de la balise 1.0.0
dans la master
branche du référentiel Git distant.
Réponses:
Il échoue probablement car il
1.0.0
s'agit d'une balise annotée. Vous avez peut-être vu le message d'erreur suivant:Les balises annotées ont leur propre type d'objet distinct qui pointe vers l'objet de validation balisé. Les branches ne peuvent pas pointer utilement pour marquer des objets, mais uniquement valider des objets. Vous devez «décoller» la balise annotée pour valider l'objet et pousser à la place.
Il existe une autre syntaxe qui fonctionnerait également dans ce cas, mais cela signifie quelque chose de légèrement différent si l'objet tag pointe vers autre chose qu'un commit (ou un objet tag qui pointe vers (un objet tag qui pointe vers un…) un commit) .
Ces syntaxes de décollage de balises sont décrites dans git-rev-parse (1) sous Spécification des révisions .
la source
git push rep +tag:master
créera alors une balise nommée maître au lieu d'une branche.git push rep +tag~0:master
(là encore, lorsque le maître n'existe pas en tant que branche ou balise) échouera avec «erreur: impossible de pousser vers une destination non qualifiée». La commande qui aurait fait ce que tu voulais (avant tout maître branche / tag existait) estgit push rep +tag~0:refs/heads/master
(refs/heads/
est l'espace de noms dans lequel les branches sont stockées).~{commit}
syntaxe est littérale (c'est-à-dire toujours ces neuf caractères); le motcommit
n'est pas un espace réservé ici.la source
git push production :1.0.0
.git push production :refs/tags/1.0.0
pour supprimer la balise seulementJe crée le tag comme ceci et ensuite je le pousse vers GitHub:
la source
Pour pousser une seule balise:
git push <reponame> <tagname>
Par exemple,
git push production 1.0.0
. Les balises ne sont pas liées aux branches, elles sont liées aux commits.Lorsque vous souhaitez avoir le contenu de la balise dans la branche principale, faites-le localement sur votre machine. Je suppose que vous avez continué à vous développer dans votre branche maître locale. Alors juste un
git push origin master
devrait suffire.la source