Comment désactiver les fusions en mode "fast forward" dans Git

GitGitBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Git est un puissant système de contrôle de version qui est devenu la norme de l'industrie pour la gestion des dépôts de code. L'une des fonctionnalités clés de Git est sa capacité à effectuer des fusions en mode "fast forward", qui peuvent parfois entraîner un historique de commits désordonné. Dans ce tutoriel, nous allons explorer comment désactiver les fusions en mode "fast forward" dans Git, vous permettant de maintenir un historique de commits plus organisé et informatif.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git(("Git")) -.-> git/GitHubIntegrationToolsGroup(["GitHub Integration Tools"]) git/SetupandConfigGroup -.-> git/config("Set Configurations") git/BranchManagementGroup -.-> git/merge("Merge Histories") git/BranchManagementGroup -.-> git/rebase("Reapply Commits") git/GitHubIntegrationToolsGroup -.-> git/cli_config("Configure CLI") git/GitHubIntegrationToolsGroup -.-> git/repo("Manage Repos") subgraph Lab Skills git/config -.-> lab-417327{{"Comment désactiver les fusions en mode #quot;fast forward#quot; dans Git"}} git/merge -.-> lab-417327{{"Comment désactiver les fusions en mode #quot;fast forward#quot; dans Git"}} git/rebase -.-> lab-417327{{"Comment désactiver les fusions en mode #quot;fast forward#quot; dans Git"}} git/cli_config -.-> lab-417327{{"Comment désactiver les fusions en mode #quot;fast forward#quot; dans Git"}} git/repo -.-> lab-417327{{"Comment désactiver les fusions en mode #quot;fast forward#quot; dans Git"}} end

Comprendre les fusions en mode "fast forward" de Git

La fusion en mode "fast forward" de Git est un type de fusion qui se produit lorsque vous fusionnez une branche ayant un historique linéaire, c'est-à-dire que tous les commits de la branche sont directement liés aux commits de la branche principale. Dans ce scénario, Git peut simplement "avancer rapidement" (fast-forward) la branche principale jusqu'au dernier commit de l'autre branche sans créer de nouveau commit de fusion.

C'est une manière courante et efficace de fusionner des branches dans Git, car cela évite de créer des commits de fusion inutiles et maintient l'historique des commits propre et linéaire.

graph LR A[Main Branch] --> B[Feature Branch] B --> C[Merge] A --> C

Le diagramme ci-dessus illustre un scénario de fusion en mode "fast forward", où la branche de fonctionnalité peut être fusionnée dans la branche principale sans créer de nouveau commit de fusion.

Cependant, il peut y avoir des situations où vous souhaitez éviter les fusions en mode "fast forward" et créer plutôt un nouveau commit de fusion, même si l'historique est linéaire. Cela peut être utile pour maintenir un historique de commits clair et cohérent, ou pour suivre quand et comment les branches ont été fusionnées.

Désactiver les fusions en mode "fast forward" dans Git

Désactiver les fusions en mode "fast forward" lors d'une fusion

Pour désactiver les fusions en mode "fast forward" dans Git, vous pouvez utiliser l'option --no-ff (ou -n) lors de la fusion d'une branche. Cela créera un nouveau commit de fusion, même si l'historique est linéaire.

git merge --no-ff <branch-to-merge>

L'option --no-ff garantit que l'un nouveau commit de fusion est créé, quelle que soit l'historique des commits.

graph LR A[Main Branch] --> B[Feature Branch] B --> C[Merge with --no-ff] A --> C

Dans le diagramme ci-dessus, la fusion est effectuée avec l'option --no-ff, ce qui entraîne la création d'un nouveau commit de fusion (C).

Désactiver les fusions en mode "fast forward" par défaut

Vous pouvez également configurer Git pour désactiver toujours les fusions en mode "fast forward" en définissant l'option merge.ff sur false dans votre configuration Git.

git config --global merge.ff false

Cela garantira que l'un nouveau commit de fusion est créé pour toutes les futures fusions, quelle que soit l'historique des commits.

Vérifier la stratégie de fusion

Vous pouvez vérifier la stratégie de fusion actuelle en exécutant la commande suivante :

git config --get merge.ff

Cela affichera la valeur actuelle de l'option merge.ff, qui peut être soit true (les fusions en mode "fast forward" sont activées) soit false (les fusions en mode "fast forward" sont désactivées).

En désactivant les fusions en mode "fast forward", vous pouvez maintenir un historique de commits clair et cohérent, ce qui peut être utile pour divers workflows Git et scénarios de collaboration.

Exemples pratiques de désactivation des fusions en mode "fast forward"

Scénario 1 : Fusion d'une branche de fonctionnalité

Supposons que vous ayez une branche de fonctionnalité nommée feature-x que vous souhaitez fusionner dans la branche main. Pour désactiver les fusions en mode "fast forward", vous pouvez utiliser l'option --no-ff :

git checkout main
git merge --no-ff feature-x

Cela créera un nouveau commit de fusion, même si l'historique des commits est linéaire.

graph LR A[Main Branch] --> B[Feature Branch] B --> C[Merge with --no-ff] A --> C

Scénario 2 : Désactivation des fusions en mode "fast forward" par défaut

Si vous souhaitez toujours désactiver les fusions en mode "fast forward", vous pouvez définir l'option merge.ff dans votre configuration Git :

git config --global merge.ff false

Maintenant, chaque fois que vous fusionnez une branche, Git créera automatiquement un nouveau commit de fusion, quelle que soit l'historique des commits.

graph LR A[Main Branch] --> B[Feature Branch] B --> C[Merge (default behavior)] A --> C

Vérification de la stratégie de fusion

Pour vérifier la valeur actuelle de l'option merge.ff, vous pouvez utiliser la commande suivante :

git config --get merge.ff

Cela affichera soit true (les fusions en mode "fast forward" sont activées) soit false (les fusions en mode "fast forward" sont désactivées).

En désactivant les fusions en mode "fast forward", vous pouvez maintenir un historique de commits clair et cohérent, ce qui peut être bénéfique pour divers workflows Git et scénarios de collaboration.

Résumé

En désactivant les fusions en mode "fast forward" dans Git, vous pouvez vous assurer que votre historique de commits reste clair et informatif, ce qui facilite le suivi des modifications et la collaboration avec votre équipe. Ce tutoriel vous a fourni les connaissances nécessaires et des exemples pratiques pour gérer efficacement votre flux de travail Git et maintenir un dépôt bien structuré.