Git Merge
Dernière mise à jour
git merge intègre les commits d'une autre branche dans la branche courante. Lorsque la branche courante n'a pas divergé, Git effectue un fast-forward - il se contente d'avancer le pointeur. Lorsque les deux branches ont de nouveaux commits, Git crée un merge commit qui relie les deux historiques. Contrairement au rebase, le merge préserve l'historique exact des deux branches.
Essayez ceci dans le terminal playground - un vrai shell dans votre navigateur, rien à installer.
Syntaxe
| Command | What it does |
|---|---|
git merge feature | Fusionne feature dans la branche courante |
git merge --no-ff feature | Crée toujours un merge commit |
git merge --ff-only feature | Ne fusionne que si un fast-forward est possible |
git merge --squash feature | Regroupe les commits de la branche en un seul |
git merge --abort | Annule une fusion en conflit |
Fast-forward vs merge commit
| Scenario | Fast-forward | Merge commit (--no-ff) |
|---|---|---|
| Crée un nouveau commit | Non | Oui |
| Conserve une trace de la branche | Non | Oui |
| Se produit quand | La branche courante n'a pas divergé | Les deux branches ont de nouveaux commits |
Résoudre un conflit de fusion
Lorsque les deux branches ont modifié les mêmes lignes, Git s'interrompt.
| Step | Command | Result |
|---|---|---|
| 1 | Modifiez les fichiers en conflit | Choisissez les bonnes lignes, supprimez les marqueurs |
| 2 | git add <file> | Marque le conflit comme résolu |
| 3 | git commit | Termine la fusion |
FAQ git merge
Comment fusionner une branche dans une autre avec Git ?
git switch main), puis exécutez git merge feature. Git combine les commits de feature dans main, soit par fast-forward, soit en créant un merge commit si les deux branches ont divergé.Quelle est la différence entre un fast-forward et un merge commit ?
--no-ff pour toujours créer un merge commit, ou --ff-only pour exiger un fast-forward.Comment résoudre un conflit de fusion ?
<<<<<<<, ======= et >>>>>>>. Modifiez chaque fichier pour conserver le contenu correct et supprimer les marqueurs, puis faites git add sur les fichiers résolus et git commit pour terminer la fusion.Comment annuler ou abandonner une fusion ?
git merge --abort pour l'annuler et restaurer l'état d'avant la fusion. Si la fusion est déjà terminée en local, git reset --hard ORIG_HEAD ramène la branche à sa position d'avant la fusion (contrairement à HEAD~1, c'est aussi correct après un fast-forward - mais cela supprime le travail non validé). Si la fusion est poussée, utilisez git revert -m 1 <merge-hash>.Puis-je m'entraîner en ligne ?
git merge dans un vrai shell dans votre navigateur - rien à installer. Le cours Git interactif et gratuit de Coddy couvre aussi la fusion et la résolution de conflits étape par étape.