6
votes

Définir la branche principale sur la dernière étiquette

C'est un exemple de la façon dont mon git repo est actuellement:

git commit -a -m "Commit msg"
git tag -a v1.3 -m "Tag msg"
git push --tags


3 commentaires

Quel est votre flux de travail? Pourquoi es-tu toujours dans un état de tête détaché? Pourquoi ne travaillez-vous pas sur une succursale? Je pense que c'est plus un problème avec votre flux de travail que toute autre chose.


Si vous ne consultez pas une balise directement, cela ne se produira pas. Ne faites que de nouveaux engagements après avoir vérifié une branche branche , jamais une balise .


Pour pouvoir générer des fichiers de package dans le repo, j'ai besoin de les étiqueter, sinon ils deviennent "A3FSR2", par exemple, c'est pourquoi j'ai besoin d'utiliser des balises.


5 Réponses :


2
votes

Une branche ne fait pas référence à une étiquette.
Une balise références A fixe commit.

SO tant aussi longtemps que vous Git Checkout Master , vous n'êtes pas dans un Mode tête détachée .
Vous pouvez ensuite vous engager et tag: la balise sera créée sur la dernière succursale de la branche actuelle.

Si vous étiez dans une tête de tête détachée, voir " Git: Comment puis-je réconcilier tête avec maître / origine ? " Pour diverses moyens de concilier une commission détachée avec une branche.


3 commentaires

La branche principale actuelle est obsolète, donc si je vous commande, je perds des modifications appliquées dans V1.1 et V1.2.


@Peter Avez-vous fusionné vos modifications à Master pour V1.1 et V 1.2?


@stanley_Manley Peter n'a pas connecté au débordement de pile en ... Cinq ans (dernière fois 19/05/2016). Il pourrait ou pourrait ne pas répondre;)



3
votes

Diverses réponses / commentaires déjà donnés sur pourquoi ne pas faire les choses de cette façon, mais voici la manière dont vous corrigez ce scénario particulier:

git checkout -b somebranch refs/tags/tagname    # creates a new branch starting at tag


2 commentaires

Le problème avec cette solution est que j'aurais une succursale pour chaque balise que j'ai dans le repo.


@Peter uniquement si vos tags sont toutes sur des lignes de développement distinctes, qu'il n'apparaît pas, c'est le cas de votre question initiale. Vous auriez une branche, comme maître , avec une balise v2.0 pointant vers une commission récente sur cette branche et des balises antérieures (par exemple, v1.9 < / Code>, v1.8 ....) pointant vers ANTHIER commet la même branche. Une branche est censée indiquer "quel sera le parent du prochain commettre que je fais". La commande ci-dessus Checkout est indiquée lorsque vous devez consulter une ancienne tag (-er) afin de préparer une solution de bogue pour elle ou quelque chose, pas pour le développement actuel ...



9
votes

Dans ce cas particulier, je devais procéder comme suit:

1) Définit d'abord la branche principale sur la dernière étiquette (où la tête pointe), car est la dernière étiquette. Pour ce faire, j'ai créé une nouvelle succursale et fusionné le maître. xxx

Master est identique à la dernière étiquette: xxx

2) Une fois que nous avons de la place à la place, nous devons pousser à la fois des maîtres et des tags chaque fois que nous faisons un nouveau commit: xxx

de cette façon, nous avions Le mode tête détaché et la branche principale sont mis à jour.


2 commentaires

Commentaires intéressants, plus complet que ma réponse. +1


Checkout GIT -B Head Master Effectue votre étape 1 directement.



0
votes

Les balises sont utilisées pour créer des versions stables. Pour créer une étiquette pour utiliser avec le référentiel DRUPAL GIT, assurez-vous d'abord que vous suivez la convention de nommage des balises si vous utilisez cette balise pour effectuer une libération. De l'intérieur du répertoire du projet, un exemple est:

git tag 7.x-1.0

Une fois la balise créée, vous devez appuyer sur la balise jusqu'au référentiel principal. En soi, poussoir n'envoie pas les éjaculations, vous devez également le dire d'inclure les balises dans la poussée en ajoutant le drapeau --tags:

git push -tags

Si vous ne voulez pas pousser toutes vos tags, vous pouvez également être spécifique: Exemple:

GIT Push Origin Tag 7.x-1.0

Pour vérifier et confirmer les étiquettes distantes, la commande est: -

GIT TAG -L


0 commentaires

0
votes

J'ai résolu le problème comme celui-ci:

git checkout -B master HEAD
git push --force origin master


0 commentaires