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?
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.
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.
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 .
git Push --tags production
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
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.