từ https://git-scm.com/book/en/v2/Git-Tools-Avised-Merging
Điều này về cơ bản sẽ làm một sự hợp nhất giả. Nó sẽ ghi lại một cam kết hợp nhất mới với cả hai nhánh là cha mẹ, nhưng nó thậm chí sẽ không nhìn vào nhánh bạn đang hợp nhất. Nó sẽ chỉ ghi lại như là kết quả của việc hợp nhất mã chính xác trong nhánh hiện tại của bạn.
$ git merge -s ours mundo
Hợp nhất được thực hiện bởi chiến lược 'của chúng ta'.
$ git diff HEAD HEAD~
Bạn có thể thấy rằng không có sự khác biệt giữa nhánh chúng tôi đã ở và kết quả của sự hợp nhất.
Điều này thường có thể hữu ích để về cơ bản lừa Git nghĩ rằng một nhánh đã được hợp nhất khi thực hiện hợp nhất sau này. Ví dụ: giả sử bạn đã phân nhánh một nhánh phát hành và đã thực hiện một số công việc trên đó mà bạn sẽ muốn hợp nhất trở lại vào nhánh chính của mình tại một số điểm. Trong khi đó, một số lỗi trên bản gốc cần được nhập vào nhánh phát hành của bạn. Bạn có thể hợp nhất nhánh bugfix vào nhánh phát hành và cũng hợp nhất nhánh của chúng ta vào nhánh chính của bạn (mặc dù đã có bản sửa lỗi) nên khi bạn hợp nhất nhánh phát hành lại, không có xung đột từ bugfix.
Một tình huống tôi thấy hữu ích nếu tôi muốn chủ nhân phản ánh những thay đổi của một nhánh chủ đề mới. Tôi đã nhận thấy rằng -Xtheir không hợp nhất mà không có xung đột trong một số trường hợp ... ví dụ:
$ 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.
Trong trường hợp này, giải pháp tôi tìm thấy là
$ git checkout topicFoo
từ topicFoo, lần đầu tiên hợp nhất trong tổng thể bằng cách sử dụng chiến lược -s của chúng tôi, điều này sẽ tạo ra cam kết giả mạo chỉ là trạng thái của topicFoo. $ git merge -s chủ của chúng ta
kiểm tra cam kết hợp nhất đã tạo
$ git log
bây giờ kiểm tra chi nhánh
$ git checkout master
hợp nhất nhánh chủ đề trở lại nhưng lần này sử dụng chiến lược đệ quy -Xtheirs, giờ đây nó sẽ hiển thị cho bạn một nhánh chính với trạng thái topicFoo.
$ git merge -X theirs topicFoo