Sebagian besar jawaban di sini membutuhkan direktori kerja yang bersih dan beberapa langkah interaktif (buruk untuk skrip), atau tidak berfungsi untuk semua kasus, misalnya penggabungan sebelumnya yang telah membawa beberapa perubahan luar biasa ke cabang target Anda, atau cherry-picks yang melakukan sama.
Untuk benar-benar melihat apa yang akan berubah di master
cabang jika Anda bergabung develop
dengannya, sekarang:
git merge-tree $(git merge-base master develop) master develop
Karena ini perintah pemipaan, tidak menebak apa yang Anda maksud, Anda harus eksplisit. Itu juga tidak mewarnai keluaran atau menggunakan pager Anda, jadi perintah lengkapnya adalah:
git merge-tree $(git merge-base master develop) master develop | colordiff | less -R
- https://git.seveas.net/previewing-a-merge-result.html
(terima kasih kepada David Normington untuk tautannya)
PS:
Jika Anda mendapatkan gabungan konflik, mereka akan muncul dengan penanda konflik yang biasa di output, misalnya:
$ git merge-tree $(git merge-base a b ) a b
added in both
our 100644 78981922613b2afb6025042ff6bd878ac1994e85 a
their 100644 61780798228d17af2d34fce4cfbdf35556832472 a
@@ -1 +1,5 @@
+<<<<<<< .our
a
+=======
+b
+>>>>>>> .their
Pengguna @dreftymac membuat poin yang bagus: ini membuatnya tidak cocok untuk skrip, karena Anda tidak dapat dengan mudah menangkapnya dari kode status. Penanda konflik dapat sangat berbeda tergantung pada keadaan (dihapus vs dimodifikasi, dll), yang membuatnya sulit untuk dipahami juga. Waspadalah.
git merge
dangit reset --keep HEAD@{1}
jika saya tidak suka hasilnya.