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
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 及其之后的历史纪录。为此,我们可以使用 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
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!