from https://git-scm.com/book/en/v2/Git-Tools-Advanced-Merging
Isso basicamente fará uma fusão falsa. Ele gravará um novo commit de mesclagem com os dois ramos como pais, mas nem olhará para o ramo no qual você está mesclando. Ele simplesmente registrará como resultado da mesclagem do código exato no seu ramo atual.
$ git merge -s ours mundo
Mesclagem feita pela estratégia 'nossa'.
$ git diff HEAD HEAD~
Você pode ver que não há diferença entre o ramo em que estávamos e o resultado da mesclagem.
Geralmente, isso pode ser útil para convencer o Git a pensar que um ramo já foi mesclado ao fazer uma mesclagem posteriormente. Por exemplo, digamos que você ramificou um ramo de lançamento e fez algum trabalho nele que desejará mesclar de volta ao seu ramo mestre em algum momento. Enquanto isso, algumas correções de bugs no mestre precisam ser portadas para o seu ramo de lançamento. Você pode mesclar o ramo de correções de erros no ramo de lançamento e também mesclar o mesmo ramo em seu ramo mestre (mesmo que a correção já esteja lá); portanto, quando você mesclar o ramo de lançamento mais tarde, não haverá conflitos com o ramo de correção.
Uma situação que considero útil se quiser que o mestre reflita as alterações de um novo ramo de tópico. Notei que -Xtheirs não se fundem sem conflitos em algumas circunstâncias ... por exemplo
$ 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.
Nesse caso, a solução que encontrei foi
$ git checkout topicFoo
do topicFoo, primeiro mescle no master usando a estratégia -s our, isso criará o commit falso que é apenas o estado do topicFoo. $ git merge -s nosso mestre
verifique a consolidação de mesclagem criada
$ git log
agora faça o checkout do ramo principal
$ git checkout master
mesclar o ramo do tópico de volta, mas desta vez usar a estratégia recursiva -Xtheirs, agora você apresentará um ramo mestre com o estado do topicFoo.
$ git merge -X theirs topicFoo