depuis https://git-scm.com/book/en/v2/Git-Tools-Advanced-Merging
Cela fera essentiellement une fausse fusion. Il enregistrera un nouveau commit de fusion avec les deux branches en tant que parents, mais il ne regardera même pas la branche dans laquelle vous fusionnez. Il enregistrera simplement comme résultat de la fusion le code exact dans votre branche actuelle.
$ git merge -s ours mundo
Fusion faite par la stratégie «nôtre».
$ git diff HEAD HEAD~
Vous pouvez voir qu'il n'y a aucune différence entre la branche sur laquelle nous étions et le résultat de la fusion.
Cela peut souvent être utile pour inciter Git à penser qu'une branche est déjà fusionnée lors d'une fusion ultérieure. Par exemple, supposons que vous ayez créé une branche de version et que vous ayez effectué un travail sur celle-ci que vous souhaiterez fusionner à nouveau dans votre branche principale à un moment donné. En attendant, certains correctifs de bogues sur master doivent être rétroportés dans votre branche de publication. Vous pouvez fusionner la branche bugfix dans la branche release et également fusionner la nôtre - la même branche dans votre branche master (même si le correctif est déjà là) donc quand vous fusionnerez plus tard la branche release, il n'y aura aucun conflit depuis le bugfix.
Une situation que j'ai trouvée utile si je veux que master reflète les changements d'une nouvelle branche de sujet. J'ai remarqué que -Xtheirs ne fusionne pas sans conflits dans certaines circonstances ... par exemple
$ git merge -Xtheirs topicFoo
CONFLICT (modify/delete): js/search.js deleted in HEAD and modified in topicFoo. Version topicFoo of js/search.js left in tree.
Dans ce cas, la solution que j'ai trouvée était
$ git checkout topicFoo
à partir de topicFoo, fusionnez d'abord dans master en utilisant la stratégie -s our, cela créera le faux commit qui n'est que l'état de topicFoo. $ git merge -s our master
vérifier le commit de fusion créé
$ git log
passez à la caisse principale
$ git checkout master
fusionnez la branche de sujet en arrière, mais cette fois utilisez la stratégie récursive -Xtheirs, cela vous présentera maintenant une branche principale avec l'état de topicFoo.
$ git merge -X theirs topicFoo