web-dev-qa-db-fra.com

Comment pousser une balise Git vers une branche en utilisant un refspec?

Je veux forcer Push, par exemple, mon tag 1.0.0 à ma branche distante master.

Je fais maintenant ce qui suit:

git Push production +1.0.0:master

Je veux forcer le Push , car tout ce qui m'importe, c'est que le code à l'intérieur du 1.0.0 est inséré dans la branche master du référentiel distant.

Qu'est-ce que je fais mal?

Mise à jour # 1

Quand je SSH sur mon serveur où mon Git référentiel est et exécute git branch -l, je ne vois pas non plus la branche master listée.

Mise à jour # 2

Après avoir exécuté git tag -l à partir du référentiel Git distant, je vois que master est répertorié, ce qui signifie que lorsque j'ai exécuté les éléments suivants:

git Push production 1.0.0:master

Il a en fait poussé la balise et a créé une balise nommée master plutôt que une nouvelle branche .

Je veux fondamentalement pousser le contenu de la balise 1.0.0 dans la master branche du référentiel Git distant.

216

Il échoue probablement parce que 1.0.0 est une balise annotée. Peut-être avez-vous vu le message d'erreur suivant:

erreur: tentative d'écriture d'un objet non-commit dans les références/têtes/maîtres de branche

Les balises annotées ont leur propre type d'objet distinct qui pointe vers l'objet de validation étiqueté. Les branches ne peuvent pas pointer utilement vers les objets de balises, mais uniquement les objets de validation. Vous devez "éplucher" la balise annotée pour valider un objet et le repousser à la place.

git Push production +1.0.0^{commit}:master
git Push production +1.0.0~0:master          # shorthand

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 commit) .

git Push production +1.0.0^{}:master

Ces syntaxes de peeling des balises sont décrites dans ( git-rev-parse (1) sous Spécification des révisions .

58
Chris Johnsen
git Push --tags production
469
bstpierre

Je crée le tag comme ceci et ensuite je le pousse sur GitHub:

git tag -a v1.1 -m "Version 1.1 is waiting for review"
git Push --tags

Counting objects: 1, done.
Writing objects: 100% (1/1), 180 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To [email protected]:neoneye/triangle_draw.git
 * [new tag]         v1.1 -> v1.1
61
neoneye

Pour pousser une seule étiquette: git Push <reponame> <tagname>

Par exemple, git Push production 1.0.0. Les tags ne sont pas liés à des branches, ils sont liés à des commits.

Lorsque vous souhaitez avoir le contenu de la balise dans la branche principale, faites-le localement sur votre ordinateur. Je suppose que vous avez continué à vous développer dans votre branche principale locale. Alors juste un git Push Origin master devrait suffire.

10
koppor