Pertimbangkan situasi berikut:
- Anda memiliki klon dari repositori git
- Anda memiliki beberapa komit lokal (komit yang belum didorong ke mana pun)
- Repositori jarak jauh memiliki komit baru yang belum Anda rekonsiliasi
Jadi sesuatu seperti ini:
Jika Anda menjalankan git pull
dengan pengaturan default, Anda akan mendapatkan sesuatu seperti ini:
Ini karena git melakukan penggabungan.
Ada alternatifnya. Anda dapat meminta pull untuk melakukan rebase sebagai gantinya:
git pull --rebase
dan Anda akan mendapatkan ini:
Menurut pendapat saya, versi rebased memiliki banyak keuntungan yang sebagian besar terpusat pada menjaga kode Anda dan sejarah bersih, jadi saya sedikit dikejutkan oleh fakta bahwa git melakukan penggabungan secara default. Ya, hash dari komit lokal Anda akan diubah, tetapi ini sepertinya harga kecil untuk membayar untuk sejarah yang lebih sederhana yang Anda dapatkan sebagai gantinya.
Tidak berarti saya menyarankan bahwa ini entah bagaimana default yang buruk atau salah. Saya hanya mengalami kesulitan memikirkan alasan mengapa penggabungan mungkin lebih disukai untuk default. Apakah kita punya wawasan mengapa itu dipilih? Apakah ada manfaat yang membuatnya lebih cocok sebagai default?
Motivasi utama untuk pertanyaan ini adalah bahwa perusahaan saya mencoba untuk menetapkan beberapa standar garis dasar (mudah-mudahan, lebih seperti pedoman) untuk bagaimana kita mengatur dan mengelola repositori kami untuk memudahkan pengembang untuk mendekati repositori yang belum pernah mereka kerjakan sebelumnya. Saya tertarik membuat kasus bahwa kita biasanya harus rebase dalam situasi seperti ini (dan mungkin untuk merekomendasikan pengembang mengatur konfigurasi global mereka untuk rebase secara default), tetapi jika saya menentangnya, saya pasti akan bertanya mengapa rebase bukan t default jika ini sangat bagus. Jadi saya bertanya-tanya apakah ada sesuatu yang saya lewatkan.
Telah disarankan bahwa pertanyaan ini adalah duplikat dari Mengapa begitu banyak situs web lebih memilih "git rebase" daripada "git merge"? ; Namun, pertanyaan itu agak kebalikan dari yang ini. Ini membahas manfaat rebase atas penggabungan, sementara pertanyaan ini menanyakan tentang manfaat penggabungan atas rebase. Jawaban di sana mencerminkan hal ini, dengan fokus pada masalah dengan penggabungan dan manfaat rebase.