17. Suppression dun commit dune branche

Objectifs

  • Pour apprendre à supprimer les derniers commits de la branche

Revert est une commande puissante de la section précédente qui vous permet dannuler tous les commits vers le référentiel. Cependant, les commits originaux et annulés sont visibles dans lhistorique de la branche (lors de lutilisation de la commande git log).

Souvent, après quun commit est déjà fait, on se rend compte que cétait une erreur. Ce serait bien davoir un annulez la commande qui permet de supprimer immédiatement le (s) commit (s) incorrect (s). Cette commande empêcherait lapparition dun ou plusieurs commits indésirables dans lhistorique de git log.

01 La commande de réinitialisation

Nous avons déjà utilisé la commande reset pour faire correspondre la zone tampon et le commit sélectionné (le commit HEAD a été utilisé dans la leçon précédente).

Lorsquune référence de validation est donnée (cest-à-dire, une branche, un hachage ou un nom de balise), le reset va …

  1. Écraser la branche actuelle pour quelle pointe vers le commit correct
  2. Réinitialise éventuellement la zone tampon afin quelle soit conforme au commit spécifié
  3. Réinitialisez éventuellement le répertoire de travail pour quil corresponde au commit spécifié

02 Vérifiez notre historique

Faisons une analyse rapide de notre historique de commit .

Exécuter:

git hist

Résultat:

Nous voyons que les deux derniers commits dans cette branche sont « Oups « et » Revert Oops « . Supprimons-les avec la commande reset.

03 Marquer cette branche en premier

Marquons le dernier commit avec tag, so you can find it after removing a commit(s).

Exécuter:

git tag oops

04 Réinitialiser la validation sur Oops précédent

Dans le journal dhistorique ci-dessus, le commit marqué « v1 » est avant les commits « Oops » et « Revert Oops ». Réinitialisons la branche à ce point. Comme la branche a une balise, nous pouvons utiliser le nom de la balise dans la commande reset (si elle na pas de balise, nous pouvons utiliser la valeur de hachage).

Exécuter:

git reset --hard v1git hist

Résultat:

Notre branche principale pointe vers la validation v1 et les commits « Revert Oops » et « Oops » nexistent plus dans la branche. Le paramètre --hard fait que le répertoire de travail reflète la nouvelle tête de branche.

05 Rien nest jamais perdu

Quest-il arrivé aux mauvais commits? Ils sont toujours dans le référentiel. En fait, on peut encore sy référer. Au début de la leçon, nous avons créé la balise « oops » pour le commit annulé. Jetons un coup doeil à tous les commits.

Exécuter:

git hist --all

Résultat:

Nous pouvons voir que les mauvais commits ne sont pas partis. Ils ne sont plus listés dans la branche master mais restent toujours dans le référentiel. Ils seraient toujours dans le référentiel si nous ne les étiquetions pas, mais nous pourrions les référencer uniquement par leurs noms de hachage. Les commits non référencés restent dans le référentiel jusquà ce que le logiciel de ramasse-miettes soit exécuté par le système.

06 Réinitialiser les dangers

Les réinitialisations sur les branches locales sont généralement inoffensives. Les conséquences de tout « accident » peuvent être annulées en utilisant le bon commit.

Cependant, dautres utilisateurs partageant la branche peuvent être confus si la branche est partagée sur des dépôts distants.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *