Dari halaman manual di git-merge, ada sejumlah strategi penggabungan yang dapat Anda gunakan.
resolve - Ini hanya dapat menyelesaikan dua kepala (yaitu cabang saat ini dan cabang lain Anda menarik dari) menggunakan algoritma penggabungan 3 arah. Itu mencoba untuk hati-hati mendeteksi ambiguitas penggabungan silang dan dianggap umumnya aman dan cepat.
rekursif - Ini hanya dapat menyelesaikan dua kepala menggunakan algoritma penggabungan 3 arah. Ketika ada lebih dari satu leluhur umum yang dapat digunakan untuk penggabungan 3 arah, ia menciptakan pohon yang digabungkan dari leluhur yang sama dan menggunakannya sebagai pohon referensi untuk penggabungan 3 arah. Hal ini telah dilaporkan mengakibatkan lebih sedikit konflik penggabungan tanpa menyebabkan kesalahan penggabungan dengan pengujian yang dilakukan pada komitmen gabungan aktual yang diambil dari sejarah pengembangan kernel Linux 2.6. Selain itu, ini dapat mendeteksi dan menangani gabungan yang melibatkan penggantian nama. Ini adalah strategi penggabungan default saat menarik atau menggabungkan satu cabang.
gurita - Ini menyelesaikan lebih dari kasus dua-kepala, tetapi menolak untuk melakukan penggabungan kompleks yang membutuhkan resolusi manual. Ini terutama dimaksudkan untuk digunakan untuk bundling kepala cabang topik bersama. Ini adalah strategi penggabungan default saat menarik atau menggabungkan lebih dari satu cabang.
ours - Ini menyelesaikan sejumlah kepala, tetapi hasil penggabungan selalu kepala cabang saat ini. Ini dimaksudkan untuk menggantikan sejarah perkembangan lama dari cabang samping.
subtree - Ini adalah strategi rekursif yang dimodifikasi. Saat menggabungkan pohon A dan B, jika B berkorespondensi dengan subtree A, B pertama kali disesuaikan agar sesuai dengan struktur pohon A, alih-alih membaca pohon di tingkat yang sama. Penyesuaian ini juga dilakukan pada pohon leluhur yang sama.
Kapan saya harus menentukan sesuatu yang berbeda dari standar? Skenario apa yang terbaik untuk masing-masing?