Git adalah sistem kontrol versi terdistribusi - alat untuk melacak perubahan yang dilakukan pada set file atau mengoordinasikan pekerjaan dari waktu ke waktu. Ini sering digunakan oleh programmer untuk mengoordinasikan perubahan pada kode sumber perangkat lunak dan bagian terbaiknya; itu dapat digunakan untuk melacak segala jenis konten sama sekali. Ini dirancang khusus untuk menangani segala sesuatu dari proyek volume kecil hingga besar dengan kecepatan tertinggi dan efisiensi. Sangat fleksibel artinya individu dapat berbagi pekerjaan langsung antara repositori pribadi mereka dan kelompok dapat mengoordinasikan alur kerja mereka melalui repositori pusat. Ini hanya memungkinkan dua pengembang yang duduk di dua lokasi berbeda untuk membuat dan merekam perubahan secara mandiri, semua tanpa repositori pusat.
Penggabungan adalah praktik umum dalam Git yang digunakan untuk mengintegrasikan perubahan dari satu cabang ke cabang lainnya. Git merge adalah perintah yang melakukan perubahan ke lokasi lain. Ini memungkinkan pengembang untuk mengambil jalur kode independen yang dibuat oleh cabang Git dan mengintegrasikannya ke dalam satu cabang. Ini hanya mengubah cabang target sementara sejarah cabang sumber tetap. Git rebase adalah perintah lain yang pada dasarnya digunakan untuk tujuan yang sama kecuali itu berbeda. Mereka berdua melakukan hal yang sama - menggabungkan komitmen dari satu cabang ke cabang lain - tetapi perbedaannya terletak pada bagaimana mereka melakukannya. Kami menyoroti beberapa poin pembeda utama yang membandingkan keduanya.
Git merge adalah perintah yang menyatukan dua atau lebih cabang histori komit. Penggabungan seringkali menyatukan hanya dua cabang, meskipun Git mendukung penggabungan tiga, empat, atau lebih cabang secara bersamaan. Git merge digunakan oleh Git pull untuk menggabungkan perubahan dari satu cabang ke cabang lain atau dari repositori lainnya sekaligus. Penggabungan harus terjadi dalam repositori tunggal yang berarti semua cabang yang perlu digabung, harus ada dalam repositori yang sama. Menggabungkan situasi biasanya hasil dari dua atau lebih pengguna, mencoba memperbarui kode umum. Paling umum, pengguna menggabungkan cabang ke cabang lain di repositori lokal mereka di lingkungan lokal. Git merger secara khusus mengintegrasikan konten cabang sumber dengan cabang target. Cabang target diubah, sementara cabang sumber tetap.
Git rebase adalah alternatif lain dari penggabungan yang digunakan untuk mengintegrasikan cabang lain dengan cabang tempat Anda saat ini bekerja, kecuali itu menyimpan sejarah komit linear. Tujuan dari Git rebase adalah memindahkan cabang dari satu lokasi ke lokasi lain. Karena komit tidak dapat diubah, komit tidak dapat dipindahkan, jadi ini memerlukan komit baru dengan perubahan dan metadata yang sama. Rebase secara mendasar mengubah gagasan kapan dan di mana urutan komitmen dikembangkan, yang mengakibatkan beberapa aspek sejarah pembangunan hilang. Ini berarti komitmen asli yang menjadi dasar pengembangannya akan diubah. Itu secara efektif menggabungkan semua komitmen baru di cabang utama dengan menulis ulang sejarah. Alhasil, ia menciptakan komit baru untuk setiap komit di cabang asli.
- Meskipun, baik penggabungan dan rebase adalah cara paling umum untuk mengintegrasikan perubahan di Git dan mereka melayani tujuan yang sama - untuk menggabungkan beberapa cabang menjadi satu - perbedaannya terletak pada bagaimana mereka mencapainya. Penggabungan Git mengintegrasikan konten cabang sumber dengan cabang target, sambil mempertahankan leluhur dari masing-masing sejarah komit, sedangkan Git rebase menggabungkan semua komit baru di cabang master dengan menulis ulang sejarah dengan membuat komit baru untuk setiap komit di cabang sumber..
- Dengan Git menggabungkan, Anda pertama-tama beralih ke cabang yang akan digabungkan dan kemudian menggunakan perintah menggabungkan untuk memilih cabang untuk bergabung. Mengingat bahwa cabang menunjuk ke komit dan bahwa komit adalah granularitas yang Anda asosiasikan dengan perubahan, penggabungan perintah menggabungkan di cabang atau komit tingkat. Rebase, di sisi lain, agak berbeda. Pertama Anda memilih cabang untuk rebase dan kemudian gunakan perintah rebase untuk memilih tempat untuk meletakkannya.
- Penggabungan menciptakan komit baru yang mewakili penggabungan antara dua cabang. Ini mengintegrasikan perubahan dari garis paralel yang berbeda dari pengembangan (cabang) bersama dengan membuat komit gabungan. Tujuannya adalah untuk menggabungkan dua cabang atau lebih bersama-sama, termasuk semua perubahan sejak titik divergensi ke cabang saat ini. Maju cepat adalah perilaku gabungan default di Git. Rebasing, di sisi lain, mengubah komitmen individu dengan menulis ulang sejarah proyek dengan membuat komitmen baru untuk setiap komit di cabang asli, yang pada gilirannya menghasilkan sejarah linier tanpa cabang yang berbeda.
- Git merge tidak mengubah sejarah, sambil mempertahankan konteks cabang yang berarti cabang yang ada tidak berubah dengan cara apa pun. Itu menciptakan komit baru (kecuali itu adalah penggabungan maju cepat), tetapi komit tetap dapat dijangkau dari cabang. Git rebase, di sisi lain, merampingkan potensi sejarah yang kompleks. Komit ditulis ulang, versi lama dilupakan, dan DAG revisi diubah. Komit tidak lagi dapat dijangkau dengan rebase yang berarti Anda tidak lagi dapat rebase cabang yang diterbitkan.
Singkatnya, baik merger dan rebase adalah dua cara mengintegrasikan perubahan di Git, tetapi mereka berbeda dalam cara mereka melakukannya. Penggabungan adalah operasi satu langkah dengan satu tempat untuk menyelesaikan konflik dan komitmen yang dapat dijangkau dari cabang tetap dapat dijangkau. Rebase, di sisi lain, menerapkan kembali setiap komit secara individual dengan menulis ulang sejarah dengan membuat komit baru untuk setiap komit di cabang sumber. Jadi, apa yang tadinya dapat dijangkau tidak lagi dapat dijangkau. Rebase pada dasarnya mengubah gagasan kapan dan di mana urutan komitmen dikembangkan.