1226 votes

Quelle est la différence entre `git merge` et `git merge --no-ff` ?

Utilisation de gitk log Je n'ai pas pu faire la différence entre les deux. Comment puis-je observer la différence (avec une commande git ou un outil quelconque) ?

4 votes

1 votes

2 votes

12voto

jsina Points 21

Le drapeau --no-ff fait que la fusion crée toujours un nouvel objet commit, même si la fusion pourrait être effectuée avec une avance rapide. Cela évite de perdre des informations sur l'existence historique d'une branche de fonctionnalité et regroupe tous les commits qui ont ajouté ensemble la fonctionnalité.

10voto

AlainD Points 59

D'autres réponses indiquent parfaitement que --no-ff donne lieu à un commit de fusion. Cela permet de conserver des informations historiques sur la branche de fonctionnalité, ce qui est utile puisque les branches de fonctionnalité sont régulièrement nettoyées et supprimées.

Cette réponse peut fournir un contexte pour savoir quand utiliser ou ne pas utiliser --no-ff .

Fusion de la fonctionnalité dans la branche principale : utiliser --no-ff

Exemple de travail :

$ git checkout -b NewFeature
[work...work...work]
$ git commit -am  "New feature complete!"
$ git checkout main
$ git merge --no-ff NewFeature
$ git push origin main
$ git branch -d NewFeature

Fusionner les changements de la branche principale vers la branche feature : laisser tomber --no-ff

Exemple de travail :

$ git checkout -b NewFeature
[work...work...work]
[New changes made for HotFix in the main branch! Lets get them...]
$ git commit -am  "New feature in progress"
$ git pull origin main
[shortcut for "git fetch origin main", "git merge origin main"]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X