Sobes.tech
Junior

Comment fusionner plusieurs commits en un seul avec Git?

sobes.tech IA

Réponse de l'IA

Pour fusionner plusieurs commits en un seul avec Git, utilisez la commande git rebase -i <commit-ish>.

  1. Identifiez le commit jusqu'auquel vous souhaitez fusionner. Il peut s'agir d'un hash de commit, d'une branche ou d'une étiquette.
  2. Exécutez la commande git rebase -i <commit-ish>. Par exemple, pour fusionner les 3 derniers commits :
    git rebase -i HEAD~3
    
  3. Un éditeur de texte s'ouvrira avec la liste des commits. Le premier commit de la liste (en haut) doit avoir le mot pick. Les autres commits que vous souhaitez fusionner avec le premier doivent être changés de pick à squash ou s.
    pick abcd123 Commit initial
    squash efgh456 Partie 1 de la fonctionnalité A
    squash ijkl789 Partie 2 de la fonctionnalité A
    ...
    
  4. Enregistrez et fermez l'éditeur.
  5. Un nouvel éditeur s'ouvrira pour créer le message du commit. Fusionnez ou modifiez les messages des commits selon votre choix pour créer un message cohérent pour le nouveau commit fusionné.
    // Message pour le nouveau commit fusionné
    
    // Ceci est une combinaison de 3 commits.
    
    // Commit initial
    // Partie 1 de la fonctionnalité A
    // Partie 2 de la fonctionnalité A
    
  6. Enregistrez et fermez l'éditeur. Git effectuera la fusion des commits.

Si la branche sur laquelle vous travaillez a déjà été poussée vers un dépôt distant, vous devrez faire un push forcé avec l'option -f ou --force-with-lease.

git push origin <votre_branche> -f

Cela est nécessaire car l'historique des commits a été modifié. Le push forcé peut être dangereux si d'autres développeurs travaillent déjà sur cette branche. Vérifiez toujours si vous pouvez faire un push forcé sur cette branche.

Alternativement, vous pouvez utiliser les options --fixup et --autosquash lors des commits, puis exécuter git rebase -i --autosquash <commit-ish> pour une fusion automatique.