Par Anonyme (non vérifié) , 29 avril 2026

Pourquoi squasher

Une branche feature accumule souvent des commits "WIP", "fix typo" et "address review" qui enterrent l'intention. Le squash les condense en un petit nombre de commits logiquement significatifs avant le merge.

Par Anonyme (non vérifié) , 29 avril 2026

Réponse à incident

Vous avez commité une clé API, un mot de passe ou une clé privée. La supprimer du dernier commit ne suffit pas — Git garde le fichier dans chaque commit antérieur jusqu'à ce que vous réécriviez l'histoire.

Étape 1 : tourner immédiatement

Avant de toucher au repo, révoquez la credential. Supposez que toute histoire poussée a déjà été dupliquée, scrappée ou cachée par le programme d'archivage de GitHub.

Par Anonyme (non vérifié) , 29 avril 2026

Pourquoi filter-repo

git filter-repo est le remplaçant moderne du déprécié git filter-branch. Il est dramatiquement plus rapide — parfois 100x — plus sûr par défaut, et fournit les opérations de haut niveau dont la chirurgie d'historique a vraiment besoin : supprimer des fichiers, renommer des chemins, retirer des auteurs, diviser des sous-répertoires et changer les emails sur tous les commits.

Par Anonyme (non vérifié) , 29 avril 2026

Le modèle subtree

Un subtree fusionne l'histoire d'un autre dépôt dans un sous-répertoire du vôtre. Contrairement aux submodules, il n'y a pas de gitlink séparé ni de commande supplémentaire requise pour cloner — quiconque clone votre repo obtient automatiquement le contenu du subtree. Le coût est une histoire plus dense ; le bénéfice est la simplicité opérationnelle.

Par Anonyme (non vérifié) , 29 avril 2026

Liste des frustrations

Les submodules sont puissants mais font trébucher les nouveaux utilisateurs à répétition. Cette page catalogue les échecs les plus fréquents et les recettes qui les corrigent.

Par Anonyme (non vérifié) , 29 avril 2026

Ce que sont les submodules

Un submodule est un dépôt Git imbriqué dans un autre. Le repo parent enregistre l'URL du submodule et un SHA spécifique, donc quiconque clone le parent peut récupérer le code exact qui a été testé ensemble. Utilisez les submodules quand vous voulez ancrer une dépendance à un commit fixe tout en préservant son histoire indépendante.

Par Anonyme (non vérifié) , 29 avril 2026

Bissection sans les mains

Le bisect manuel nécessite un verdict humain à chaque étape. git bisect run automatise la boucle : fournissez un script qui retourne 0 pour bon, non-zéro pour mauvais et 125 pour "sauter ce commit." Bisect mènera la recherche à terme, souvent sans surveillance.

Le contrat

Votre script doit :

Par Anonyme (non vérifié) , 29 avril 2026

Recherche binaire dans l'histoire

git bisect effectue une recherche binaire à travers les commits pour trouver celui qui a introduit un bug. Étant donné un commit connu comme bon et un connu comme mauvais, Git extrait des commits au milieu et vous demande de tester. Chaque réponse divise l'espace de recherche par deux, donc 1024 commits se résolvent en environ 10 étapes.

Par Anonyme (non vérifié) , 29 avril 2026

Ce que fait cherry-pick

git cherry-pick applique le diff d'un ou plusieurs commits sur la branche actuelle comme nouveaux commits. C'est le bon outil quand vous voulez un changement spécifique sans merger toute la branche — typique pour rétroporter des correctifs vers une branche release ou pour avancer un hotfix.

Par Anonyme (non vérifié) , 29 avril 2026

Pourquoi le rebase interactif

Le rebase interactif réécrit une séquence de commits en une histoire plus propre et plus significative avant publication. C'est l'instrument chirurgical de Git : vous pouvez réordonner, éditer, fusionner (squash), corriger (fixup), supprimer, reformuler ou diviser des commits, le tout en une seule session guidée. Le maîtriser transforme une branche locale en désordre en une histoire que les relecteurs peuvent suivre.