effacer l'historique
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
Cette commande empaquetera la base de code actuelle dans un fichier ZIP et l'enregistrera dans backup.zip.
2. Effacer l'historique
- 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
. 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
表示要清除的文件路径。
- 使用命令清除 commit 的历史纪录
有时候,我们需要删除某个 commit 及其之后的历史纪录。为此,我们可以使用 Git 的 rebase
命令来实现。具体来说,我们需要执行以下步骤:
1)使用以下命令展示项目中所有的 commit
$ git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
这个命令会显示项目中所有的 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
上述示例中的 commit SHA 值是 55d4d98de4caf2ac1a8f783624c58e533500f3d7
.
3)使用以下命令将要清除的 commit 弹出
$ git rebase -i <commit-hash>^
比如,我们要删除 SHA 值为 55d4d98de4caf2ac1a8f783624c58e533500f3d7
的 commit 及其之后的历史纪录,可以执行以下命令:
$ git rebase -i 55d4d98de4caf2ac1a8f783624c58e533500f3d7^
4)编辑交互窗口以将目标 commit 弹出
在交互模式中,我们需要将需要删除的目标 commit 标记为 “drop”,然后将文件保存退出即可。示例如下所示:
pick 44a0c2c this is an invalid commit, which should be removed drop 55d4d98 Added new feature
在上例中,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
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
La valeur SHA du commit ci-dessus L'exemple est 55d4d98de4caf2ac1a8f783624c58e533500f3d7 code>.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Cet article fournit un guide pour la gestion GIT, couvrant les outils de l'interface graphique (SourceTree, Gitkraken, etc.), les commandes essentielles (Git init, Git Clone, Git Add, Git Commit, etc.), les meilleures pratiques de gestion des succursales (branches de fonctionnalités, demandes de traction) et Merge Con

Ce guide explique comment pousser un seul engagement GIT dans une branche distante. Il détaille à l'aide d'une branche temporaire pour isoler l'engagement, en poussant cette branche à la télécommande, puis en supprimant éventuellement la branche temporaire. Cette méthode évite les conflits et

Cet article détaille les méthodes de visualisation du contenu Git Commit. Il se concentre sur l'utilisation de Git Show pour afficher les messages de validation, les informations sur l'auteur et les modifications (diffs), le log -p git -p pour les difficultés de plusieurs engins et les mises en garde contre la vérification directe des validations. Alt

Cet article explique la différence entre les commandes de validation et de push de Git. Git Commit enregistre les modifications localement, tandis que Git Push télécharge ces modifications engagées dans un référentiel distant. L'article met en évidence l'importance de comprendre cette distinction

Cet article aborde les échecs communs de git. Il détaille le dépannage des étapes pour des problèmes tels que les fichiers non suivis, les modifications non stagées, la fusion des conflits et les crochets pré-engageants. Des solutions et des mesures préventives sont fournies pour garantir le git wo plus lisse

Cet article explique les rôles distincts de Git Add et Git Commit in Git. Git ajoute des modifications des étapes, en les préparant à l'inclusion dans le communiqué suivant, tandis que Git Commit enregistre les modifications de mise en scène de l'historique du référentiel. Ce processus en deux étapes permet

Cet article présente Git, un système de contrôle de version distribué. Il met en évidence les avantages de Git par rapport aux systèmes centralisés, tels que les capacités hors ligne et la ramification / fusion efficace pour une collaboration améliorée. L'article détaille également l'apprentissage r

Ce guide de débutant présente Git, un système de contrôle de version. Il couvre les commandes de base (init, ajouter, commit, statut, journal, branche, cacher, fusionner, push, pull) et résoudre les conflits de fusion. Meilleures pratiques pour une utilisation efficace du GIT, y compris une communication claire
