Comment git filter-branch all commande?

Comment git filter-branch all commande?

Le "Branch Git»Commande réécrit toute l'histoire de la branche, ce qui signifie que tous les engins supprimés ou modifiés seront perdus en permanence. Par conséquent, il est fortement suggéré de sauvegarder votre référentiel avant d'utiliser cette commande. De plus, cette commande crée de nouveaux commits et Sha Hash. Il n'est donc pas recommandé de l'utiliser dans une branche publique.

Cet article discutera:

    • Quelles sont les options de filtre de base disponibles pour le «Branch Git" Commande?
    • Comment utiliser le «Branch Git«Commande avec le«-filtre à arbre" Option?
    • Comment utiliser le «Branch Git«Commande avec le«-filtre d'index" Option?
    • Comment utiliser le «Branch Git«Commande avec le«-msg-filtre" Option?

Quelles sont les options de filtre de base disponibles pour la commande «Git Filter-Branch»?

Les options de filtre de base pour «Branch Git»Les commandes sont données ci-dessous:

Filtrer les options Description
-filtre env Modifier l'environnement où les utilisateurs font des commits.
-filtre à arbre Réécrivez l'arbre et son contenu.
-filtre d'index Réécrire l'index.
-pilote parent Réécrivez la liste des parents de la validation.
-msg-filtre Réécrivez les messages de validation.
-cadré Effectuer des commits.
-Tag-nom-filtre Réécrire le nom de la balise.
-prune-vide Instruisez Git-Filter-Branch pour supprimer les validations vides.

Comment utiliser la commande «Git Filter-Branch» avec l'option «-tree-filter»?

Parfois, les utilisateurs souhaitent supprimer un fichier spécifique de tous les commits pour certaines raisons, comme si le fichier contient des informations confidentielles ou secrètes. Dans cette situation, utilisez le «Git Filter-Branch -Tree-Filter 'RM -rf'”Commande pour supprimer un fichier particulier de l'historique entier d'un référentiel.

Suivez les instructions fournies pour le faire.

Étape 1: Accédez au référentiel local

Tout d'abord, rédigez la commande à crue donnée et redirigez vers le répertoire souhaité:

$ CD "C: \ git \ local_repo"


Étape 2: afficher le contenu du référentiel

Ensuite, affichez le contenu du référentiel actuel à l'aide de la commande suivante:

$ ls


Selon la sortie ci-dessous, le référentiel actuel contient deux fichiers. Choisissez un fichier particulier qui doit être supprimé. Par exemple, nous avons sélectionné le «fichier1.SMS" déposer:


Étape 3: supprimer le fichier de l'historique entier

Ensuite, exécutez la commande fournie avec le nom de fichier sélectionné pour supprimer ce fichier:

$ git Filter-Branch --Tree-Filter 'RM -RF Fichier1.SMS'


Ici:

    • "-filtre à arbre"L'option est utilisée pour spécifier une commande pour exécuter sur chaque arbre de la branche.
    • "RM -RF«L'option est utilisée pour supprimer le«fichier1.SMS" déposer:


Note: Si le fichier n'est pas présent dans certains commits, alors exécutant le «'nom de fichier RM«L'option ne fonctionnera pas pour les arbres et les commits.

Étape 4: Vérifiez les modifications

Enfin, assurez-vous si le fichier a été supprimé en affichant le contenu du référentiel:

$ ls


Comment utiliser la commande «Git Filter-Branch» avec l'option «-index-filter»?

Si l'utilisateur souhaite modifier l'index du référentiel plutôt que la branche entière, le «Git Filter-Branch -index-Filter»La commande peut être utilisée. Cela peut être utile pour supprimer des fichiers spécifiques de l'index.

Étape 1: afficher les fichiers du référentiel

Exécutez la commande ci-dessous pour répertorier les fichiers disponibles du référentiel actuel:

$ git ls-files


L'image ci-dessous affiche la liste des fichiers. Sélectionnez le fichier souhaité que vous souhaitez supprimer de l'index. Par exemple, nous avons sélectionné le «fichier4.SMS" déposer:


Étape 2: supprimer le fichier de l'index

Ensuite, supprimez le fichier sélectionné de l'index en écrivant la commande suivante:

$ git Filter-Branch - Index-Filter 'Git RM - Cached --Ignore-Unmatch File4.SMS'


Ici:

    • "-filtre d'index»Spécifie la commande qui sera utilisée pour filtrer l'index.
    • "-mis en cache"L'option supprime / supprime les fichiers de l'index.
    • "-ignorer»Ignore toutes les erreurs:



Étape 3: Vérifiez les modifications

Enfin, exécutez la commande fournie donnée pour s'assurer que le fichier a été supprimé de l'index:

$ git ls-files


Comment utiliser la commande «Git Filter-Branch» avec l'option «-msg-filter»?

Parfois, les utilisateurs souhaitent réécrire le message de validation spécifique de l'historique des journaux. À cette fin, le «git Filter-Branch -f -msg-filter 'sed "S /// g"' - -all" peut être utilisé.

Étape 1: Voir l'histoire de la validation

Tout d'abord, vérifiez l'histoire du hachage SHA Commit du référentiel de travail actuel:

$ Git Log --Oneline


Dans la capture d'écran ci-dessous, l'histoire de la validation peut être vue. Choisissez le message de validation souhaité qui doit être réécrit. Par exemple, nous avons sélectionné le «fichier2 ajouté”Commissez le message:


Étape 2: réécrivez le message de validation

Ensuite, exécutez la commande suivante pour réécrire le message de validation sélectionné:

$ git filter-Branch -f --msg-filter 'sed "s / file2 ajout / ajout de fichier2 / g"' - - tout


Ici:

    • "-msg-filtre"L'option est utilisée pour modifier le message de validation.
    • "-F»L'option effectue l'opération avec force.
    • "sed"Commande recherche la chaîne"fichier2 ajouté«Dans le message de validation et le remplace par le«Ajout de fichier2" message.
    • "- -tous«L'option applique le filtre à toutes les branches du référentiel:



Étape 3: Vérification

Enfin, vérifiez les modifications en vérifiant le commit dans l'histoire:

$ Git Log --Oneline


On peut observer que l'ancien message de validation a été remplacé par le nouveau message de validation:


Il s'agissait du «Branch Git»Commande dans Git.

Conclusion

Le "Branch Git»La commande est utilisée pour réécrire l'historique des engagements d'une branche particulière ou de toutes les branches d'un référentiel. Il permet aux utilisateurs d'effectuer diverses opérations sur des engins, tels que la suppression des fichiers, la modification des messages de validation, etc. De plus, cela peut être utilisé pour nettoyer un référentiel spécifique et supprimer des informations sensibles. Cet article a expliqué la commande «Git Filter-Branch» et ses options de filtre.