Nous sommes nouveaux dans git, et je souhaite définir une balise au début de notre référentiel. Notre code de production est identique à celui du référentiel de départ, mais nous avons depuis effectué des validations. Une balise au début nous permettrait de "ramener" la production à un état connu et stable.
Alors, comment ajouter une balise à un commit plus ancien et arbitraire?
Exemple:
git tag -a v1.2 9fceb02 -m "Message here"
Où 9fceb02
est la partie de début de l'ID de validation.
Vous pouvez ensuite pousser la balise à l’aide de git Push Origin v1.2
.
Vous pouvez utiliser git log
pour afficher tous les identifiants de validation de votre branche actuelle.
Il y a aussi un bon chapitre sur marquage dans le livre de Pro Git.
Attention: Ceci crée des tags avec la date courante (et cette valeur est ce qui sera affiché sur un GitHub les communiqués, par exemple). Si vous voulez que la balise soit datée avec la date de validation, veuillez regarder ne autre réponse .
# Set the HEAD to the old commit that we want to tag
git checkout 9fceb02
# temporarily set the date to the date of the HEAD commit, and add the tag
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" \
git tag -a v1.2 -m"v1.2"
# set HEAD back to whatever you want it to be
git checkout master
La réponse de @dkinzer crée des balises dont la date est la date du jour (lorsque vous avez exécuté la commande git tag
), et non la date de la validation. L'aide Git pour tag
a une section "Sur les balises antidater" qui dit:
Si vous avez importé certaines modifications d'un autre VCS et souhaitez ajouter des balises pour les versions majeures de votre travail, il est utile de pouvoir spécifier la date à intégrer à l'intérieur de l'objet balise; de telles données dans l'objet tag affectent, par exemple, l'ordre des tags dans l'interface de gitweb.
Pour définir la date utilisée dans les objets de balises futurs, définissez la variable d'environnement
GIT_COMMITTER_DATE
(voir la discussion ultérieure sur les valeurs possibles; la forme la plus courante est "AAAA-MM-JJ HH: MM").Par exemple:
$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1
La page "Comment taguer dans Git" nous montre que nous pouvons extraire l'heure du HEAD commettre via:
git show --format=%aD | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700
Nous pourrions extraire la date d'un commit spécifique via:
GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"
Cependant, au lieu de répéter la validation deux fois, il semble plus facile de simplement remplacer le HEAD par cette validation et de l'utiliser de manière implicite dans les deux commandes:
git checkout 9fceb02
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"
Le moyen le plus simple de le faire est
git tag v1.0.0 f4ba1fc
f4ba1fc
étant le début du hachage du commit que vous souhaitez taguer et v1.0.0
étant la version que vous souhaitez taguer.
Utilisez la commande:
git tag v1.0 ec32d32
Où v1.0 est le nom de la balise et ec32d32 est le commit que vous souhaitez marquer
Une fois cela fait, vous pouvez pousser les tags par:
git Push Origin --tags
Référence:
OK, vous pouvez simplement faire:
git tag -a <tag> <commit-hash>
Donc, si vous voulez ajouter la balise: 1.0.2 à commettre e50f795
, faites simplement:
git tag -a 1.0.2 e50f795
Aussi, vous ajoutez un message à la fin, en utilisant -m
, quelque chose comme ceci:
git tag -a 1.0.2 e50f795 -m "my message"
Après tout, vous devez le pousser vers le remote
. Pour ce faire, procédez comme suit:
git Push Origin 1.0.2
Si vous avez plusieurs balises que vous ne voulez pas mentionner une à une, faites simplement:
git Push Origin --tags
pousser toutes les balises ensemble ...
De plus, j’ai créé les étapes dans l’image ci-dessous, pour plus de précisions:
Vous pouvez également dd la balise dans Hub ou à l'aide d'outils tels que SourceTree , pour éviter les étapes précédentes, je me suis connecté à mon Bitbucket dans ce cas et je l'ai fait à partir de là:
No tags
et cliquez sur l'icône +
:C'est une vieille question, et les réponses donnaient déjà tout le travail, mais il y a aussi une nouvelle option qui peut être envisagée.
Si vous utilisez SourceTree pour gérer vos référentiels git, vous pouvez cliquer avec le bouton droit de la souris sur n'importe quel commit et y ajouter une balise. Avec un autre clic de souris, vous pouvez également envoyer le tag directement à la succursale d’origine.
En vous basant sur les réponses des autres, voici une solution à une ligne qui définit la date de balise au moment où cela s’est réellement produit, utilise une balise annotée et ne requiert aucun git checkout
:
tag="v0.1.3" commit="8f33a878" bash -c 'GIT_COMMITTER_DATE="$(git show --format=%aD $commit)" git tag -a $tag -m $tag $commit'
git Push --tags Origin master
où tag
est défini sur la chaîne de balise souhaitée et commit
sur le hachage de validation.
Le réponse par @Phrogz est génial, mais ne fonctionne pas sous Windows. Voici comment baliser un ancien commit avec la date d'origine du commit à l'aide de Powershell:
git checkout 9fceb02
$env:GIT_COMMITTER_DATE = git show --format=%aD | Select -First 1
git tag v1.2
git checkout master