von https://git-scm.com/book/en/v2/Git-Tools-Advanced-Merging
Dies führt im Grunde genommen zu einer gefälschten Zusammenführung. Es wird ein neues Zusammenführungs-Commit mit beiden Zweigen als übergeordnete Zweige aufgezeichnet, es wird jedoch nicht einmal der Zweig angezeigt, in dem Sie zusammenführen. Es wird einfach als Ergebnis der Zusammenführung den genauen Code in Ihrem aktuellen Zweig aufgezeichnet.
$ git merge -s ours mundo
Zusammenführung durch die Strategie "Unsere".
$ git diff HEAD HEAD~
Sie können sehen, dass es keinen Unterschied zwischen dem Zweig, in dem wir uns befanden, und dem Ergebnis der Zusammenführung gibt.
Dies kann oft nützlich sein, um Git zu der Annahme zu verleiten, dass ein Zweig bereits zusammengeführt wird, wenn später eine Zusammenführung durchgeführt wird. Angenommen, Sie haben einen Release-Zweig abgezweigt und einige Arbeiten daran durchgeführt, die Sie irgendwann wieder in Ihren Master-Zweig einbinden möchten. In der Zwischenzeit muss ein Bugfix auf dem Master in Ihren Release-Zweig zurückportiert werden. Sie können den Bugfix-Zweig mit dem Release-Zweig zusammenführen und unseren Zweig auch mit Ihrem Hauptzweig zusammenführen (obwohl der Fix bereits vorhanden ist). Wenn Sie den Release-Zweig später erneut zusammenführen, treten keine Konflikte mit dem Bugfix auf.
Eine Situation, die ich als nützlich empfunden habe, wenn der Master die Änderungen eines neuen Themenzweigs widerspiegeln soll. Mir ist aufgefallen, dass -Xtheirs unter bestimmten Umständen nicht ohne Konflikte verschmelzen ... z
$ 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.
In diesem Fall war die Lösung, die ich gefunden habe
$ git checkout topicFoo
Wenn Sie in topicFoo zuerst den Master mit der Strategie -s our zusammenführen, wird das falsche Commit erstellt, das nur den Status von topicFoo darstellt. $ git verschmilzt mit unserem Meister
Überprüfen Sie das erstellte Zusammenführungs-Commit
$ git log
Kasse jetzt den Hauptzweig aus
$ git checkout master
Führen Sie den Themenzweig wieder zusammen, aber verwenden Sie diesmal die rekursive Strategie -Xtheirs. Dadurch wird Ihnen jetzt ein Hauptzweig mit dem Status von topicFoo angezeigt.
$ git merge -X theirs topicFoo