1276 votes

Comment étiqueter un ancien commit dans Git ?

Nous sommes nouveaux dans git, et je veux définir une balise au début de notre dépôt. Notre code de production est le même que celui du dépôt de départ, mais nous avons fait des modifications depuis. Une balise au début nous permettrait de ramener la production à un état stable et connu.

Alors comment ajouter une balise à un commit arbitraire et plus ancien ?

1 votes

Je suis venu ici pour trouver de l'aide pour supprimer un ancien tag localement et sur une télécommande et j'ai finalement trouvé ceci utile, peut-être que cela aidera quelqu'un d'autre aussi : gist.github.com/mobilemind/7883996

2 votes

Et n'oubliez pas Comment pousser une balise vers un dépôt distant à l'aide de Git ? parce que Git ne va pas pousser un tag sans faire quelque chose de spécial.

12voto

Il s'agit d'une vieille question, et les réponses déjà données fonctionnent toutes, mais il y a aussi une nouvelle option qui peut être envisagée.

Si vous utilisez SourceTree pour gérer vos dépôts git, vous pouvez faire un clic droit sur n'importe quel commit et lui ajouter une étiquette. Avec un autre clic de souris, vous pouvez également envoyer le tag directement à la branche d'origine.

7voto

stason Points 736

En s'appuyant sur les réponses des autres, voici une solution en une ligne qui fixe la date de la balise au moment où elle s'est réellement produite, qui utilise la balise annotée et qui ne nécessite pas d'intervention de la part de l'utilisateur. 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

donde tag est défini comme la chaîne de balises souhaitée, et commit dans le hachage de la livraison.

6voto

ccoxtn Points 464

En réponse par @Phrogz est génial, mais ne fonctionne pas sous Windows. Voici comment marquer un ancien commit avec la date d'origine du commit en utilisant Powershell :

git checkout 9fceb02
$env:GIT_COMMITTER_DATE = git show --format=%aD | Select -First 1
git tag v1.2
git checkout master

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X