Maison > outils de développement > git > Comment supprimer les commits historiques dans git

Comment supprimer les commits historiques dans git

PHPz
Libérer: 2023-04-26 09:51:26
original
8949 Les gens l'ont consulté

Ces dernières années, Git, en tant que puissant outil de contrôle de version, est devenu de plus en plus populaire parmi les équipes de développement. Cependant, lors de l’utilisation de Git, de mauvais commits peuvent parfois apparaître, et ces commits peuvent avoir un impact négatif sur le projet. Comment supprimer ces commits historiques est devenu un problème souvent rencontré par les utilisateurs de Git. Cet article détaillera comment supprimer les commits historiques dans Git.

1. Historique des soumissions Git

L'historique des soumissions Git est composé de nombreuses soumissions. Chaque fois que vous effectuez un commit dans Git, un nouveau commit est créé. Chaque soumission possède son propre identifiant (SHA) et contient des informations telles que l'auteur de la soumission, la date et la description de la soumission.

Vous pouvez afficher l'historique des validations dans Git via la ligne de commande Git ou l'outil client Git. Par exemple, en utilisant la ligne de commande Git, vous pouvez afficher l'historique des commits de ce projet à l'aide de la commande suivante :

git log
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cette commande listera tous les commits sur la branche actuelle, répertoriés dans l'ordre inverse. Chaque commit a son propre SHA, le nom et l'adresse e-mail du committer, la date de validation et le message de validation.

2. Pourquoi supprimer les soumissions historiques

Dans le processus de développement collaboratif, de nombreux facteurs humains conduiront à l'apparition de mauvaises soumissions. Les « mauvaises soumissions » sont des soumissions qui peuvent contenir des erreurs, des vulnérabilités de sécurité, des informations sensibles, etc. Si ces mauvais commits ont été fusionnés dans la branche principale, cela peut avoir un impact négatif sur d'autres parties du projet.

De plus, si vous incluez du contenu que vous ne souhaitez pas que les autres voient avant de soumettre le code, comme des mots de passe, des clés API et d'autres informations sensibles, il peut être exposé après la soumission. À l’heure actuelle, la suppression des soumissions historiques est un moyen de protéger la confidentialité des utilisateurs.

3. Comment supprimer les commits historiques dans Git

Dans Git, il existe deux façons de supprimer les commits historiques : réécrire l'historique et utiliser le mécanisme de filtrage de Git.

  1. Réécrire l'histoire

La réécriture de l'histoire est en fait obtenue en modifiant les commits historiques. Cela signifie apporter des modifications et des réarrangements aux commits déjà publiés. Voici les étapes pour supprimer l'historique des commits Git :

(1) Utilisez la commande suivante pour afficher l'historique des commits :

git log
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

(2) Recherchez le SHA du commit que vous souhaitez supprimer et enregistrez-le.

(3) Utilisez la commande suivante pour réécrire l'historique. Dans cette commande, remplacez SHA par le SHA du commit que vous souhaitez supprimer :

git rebase -i SHA^
Copier après la connexion

Cette commande ouvrira un éditeur avec une liste de tous les commits depuis le dernier commit du commit sélectionné.

(4) Remplacez le "pick" devant le commit que vous souhaitez supprimer par "drop" ou commentez la ligne avec un signe dièse. Enregistrez et fermez l'éditeur.

(5) Exécutez la commande suivante pour forcer l'écrasement des commits dans Git :

git push --force
Copier après la connexion

Enfin, vous pouvez utiliser la commande suivante pour vérifier si vous avez réussi à supprimer l'historique des commits :

git log
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  1. Utilisez le mécanisme de filtrage de Git

Dans Git , la commande filter-branch peut vous aider à supprimer l'historique des validations. Cette commande copie l'intégralité du référentiel et applique le filtre spécifié à chaque validation. Voici les étapes pour utiliser le mécanisme de filtrage de Git pour supprimer l'historique des commits Git :

(1) Utilisez la commande suivante pour créer un référentiel de copie :

git clone --mirror <Git URL>
Copier après la connexion

(2) Utilisez la commande suivante pour accéder au référentiel de copie :

cd <repository name>.git
Copier après la connexion

(3) Utilisez la commande suivante pour supprimer les commits historiques :

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch <filename>" --prune-empty --tag-name-filter cat -- --all
Copier après la connexion

Cette commande est utilisée pour supprimer les commits historiques du fichier nommé . Cette commande peut être modifiée selon les besoins. Ici, --tag-name-filter cat est utilisé pour corriger les balises. Enfin, cette commande sera appliquée à toutes les branches.

(4) Utilisez la commande suivante pour transmettre les modifications au référentiel Git :

git push --all --force
Copier après la connexion

Enfin, vous pouvez utiliser la commande suivante pour vérifier si l'historique des commits a été supprimé avec succès :

git log
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

IV Résumé

En réécrivant le fichier. history ou l'utilisation du mécanisme de filtrage de Git vous permet de supprimer les commits historiques dans Git. Cependant, avant de supprimer l’historique des validations, vous devez bien réfléchir et vous assurer que tous les membres de l’équipe comprennent l’impact du changement. De plus, les référentiels Git doivent être nettoyés régulièrement avant de fusionner les modifications afin de réduire les frais de stockage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal