Maison > outils de développement > git > effacer l'historique

effacer l'historique

WBOY
Libérer: 2023-05-25 18:35:38
original
3339 Les gens l'ont consulté

Git est un outil de contrôle de version couramment utilisé et largement utilisé dans le développement de projets. Pendant le développement du projet, nous utilisons généralement diverses commandes git pour le contrôle et la gestion des versions, notamment la soumission de code, la fusion de branches et d'autres opérations. Cependant, dans certains cas, nous pouvons avoir besoin d'effacer l'historique Git, par exemple en supprimant des informations sensibles ou en effaçant des enregistrements de validation inutiles. Ci-dessous, nous verrons comment effacer l'historique de Git.

1. Sauvegarde

Avant d'effectuer l'opération de suppression de l'historique Git, nous devons effectuer une sauvegarde pour éviter des erreurs ou des situations inattendues dans l'opération. Il est important de sauvegarder la base de code actuelle dans un endroit sûr afin que nous puissions restaurer notre base de code si nécessaire. Nous pouvons utiliser la commande packaging de Git pour sauvegarder le projet dans un fichier compressé, par exemple :

git archive --format zip --output backup.zip HEAD
Copier après la connexion

Cette commande empaquetera la base de code actuelle dans un fichier ZIP et l'enregistrera dans backup.zip.

2. Effacer l'historique

  1. Utilisez la commande pour effacer l'historique d'un seul fichier

Supprimer l'historique d'un seul fichier est une opération relativement simple Nous pouvons utiliser la commande suivante pour y parvenir :

$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch path/to/file' --prune-empty -- --all
Copier après la connexion

. Cette commande Le fichier cible sera complètement supprimé de l'historique. Parmi eux, path/to/file représente le chemin du fichier à effacer. path/to/file 表示要清除的文件路径。

  1. 使用命令清除 commit 的历史纪录

有时候,我们需要删除某个 commit 及其之后的历史纪录。为此,我们可以使用 Git 的 rebase 命令来实现。具体来说,我们需要执行以下步骤:

1)使用以下命令展示项目中所有的 commit

$ git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
Copier après la connexion

这个命令会显示项目中所有的 commit 记录。

2)决定要清除的 commit 的 SHA 值

我们需要查找要删除 commit 的 SHA 值,可以从下面的 commit 日志中获取:

commit 55d4d98de4caf2ac1a8f783624c58e533500f3d7
Author: John Doe <john@doe.com>
Date:   Fri Apr 30 16:01:07 2021 -0700

    Added new feature
Copier après la connexion

上述示例中的 commit SHA 值是 55d4d98de4caf2ac1a8f783624c58e533500f3d7.

3)使用以下命令将要清除的 commit 弹出

$ git rebase -i <commit-hash>^
Copier après la connexion

比如,我们要删除 SHA 值为 55d4d98de4caf2ac1a8f783624c58e533500f3d7 的 commit 及其之后的历史纪录,可以执行以下命令:

$ git rebase -i 55d4d98de4caf2ac1a8f783624c58e533500f3d7^
Copier après la connexion

4)编辑交互窗口以将目标 commit 弹出

在交互模式中,我们需要将需要删除的目标 commit 标记为 “drop”,然后将文件保存退出即可。示例如下所示:

pick 44a0c2c this is an invalid commit, which should be removed
drop 55d4d98 Added new feature
Copier après la connexion

在上例中,55d4d98 历史纪录将被删除,而 44a0c2c

    Utilisez la commande pour effacer l'historique des commits

    Parfois, nous devons supprimer un commit et son historique ultérieur. Pour ce faire, nous pouvons utiliser la commande rebase de Git. Plus précisément, nous devons effectuer les étapes suivantes :

    1) Utilisez la commande suivante pour afficher tous les commits du projet

    $ git filter-branch --force --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch ./' --tag-name-filter cat -- --all
    Copier après la connexion

    Cette commande affichera tous les enregistrements de commit du projet.

    2) Déterminez la valeur SHA du commit à effacer

    Nous devons trouver la valeur SHA du commit à supprimer, qui peut être obtenue à partir du journal de commit ci-dessous :

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

    La valeur SHA du commit ci-dessus L'exemple est 55d4d98de4caf2ac1a8f783624c58e533500f3d7 code>.

    🎜3) Utilisez la commande suivante pour afficher le commit à effacer 🎜rrreee🎜Par exemple, si nous voulons supprimer le commit avec la valeur SHA de 55d4d98de4caf2ac1a8f78362 4c58e533500f3d7 et ses enregistrements d'historique ultérieurs, nous pouvons exécuter la commande suivante : 🎜rrreee 🎜4) Modifiez la fenêtre interactive pour faire apparaître le commit cible 🎜🎜En mode interactif, nous devons marquer le commit cible qui doit être supprimé comme "drop", puis enregistrez le fichier et quittez. Un exemple ressemble à ceci : 🎜rrreee🎜Dans l'exemple ci-dessus, l'historique <code>55d4d98 sera supprimé et l'historique 44a0c2c deviendra le dernier commit. 🎜🎜5) Utilisez la commande suivante pour effacer l'ancien historique 🎜rrreee🎜Cette commande peut effacer le commit marqué comme « drop » et les commits qui le suivent. 🎜🎜6) Push vers l'entrepôt distant🎜🎜Enfin, nous devons forcer le push vers l'entrepôt distant pour mettre à jour les enregistrements historiques dans l'entrepôt distant et garantir l'exactitude des enregistrements historiques : 🎜rrreee🎜Veuillez noter que vous devez opérer avec Soyez prudent lors de l'exécution de la commande ci-dessus et assurez-vous d'avoir sauvegardé votre base de code. Car une fois supprimé, il ne peut plus être restauré. 🎜🎜Résumé🎜🎜Cet article explique comment utiliser Git pour effacer l'historique. Avant d'effectuer ces opérations, nous devons considérer les conséquences d'opérer sur des enregistrements historiques et effectuer des sauvegardes pour éviter des pertes irréversibles. Dans le même temps, nous devrions éviter d’effacer les documents historiques et ne les utiliser que lorsque cela est nécessaire. 🎜

    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