Perbezaan antara git rebase dan gabungan

Perbezaan antara git rebase dan gabungan

Git adalah sistem kawalan versi yang diedarkan - alat untuk menjejaki perubahan yang dibuat kepada satu set fail atau kerja menyelaras dari masa ke masa. Ia sering digunakan oleh pengaturcara untuk menyelaraskan perubahan kepada kod sumber perisian dan bahagian yang terbaik; ia boleh digunakan untuk mengesan apa -apa jenis kandungan. Ia direka khas untuk mengendalikan segala -galanya dari projek kelantangan kecil dan besar dengan kecekapan dan kecekapan sepenuhnya. Maksudnya yang sangat fleksibel individu dapat berkongsi kerja secara langsung di antara repositori dan kumpulan peribadi mereka dapat menyelaraskan aliran kerja mereka melalui repositori pusat. Ia hanya membolehkan dua pemaju duduk di dua lokasi yang berbeza untuk membuat dan merekodkan perubahan secara bebas, semuanya tanpa repositori pusat.

Penggabungan adalah amalan biasa dalam Git yang digunakan untuk mengintegrasikan perubahan dari satu cawangan ke yang lain. Git gabungan adalah arahan yang melakukan perubahan ke lokasi lain. Ia membolehkan pemaju mengambil kod bebas mereka yang dibuat oleh cawangan git dan mengintegrasikannya ke dalam satu cawangan. Ini hanya mengubah cawangan sasaran sementara sejarah cawangan sumber tetap. Git rebase masih lagi arahan yang digunakan pada dasarnya untuk tujuan yang sama kecuali ia agak berbeza. Mereka berdua melakukan perkara yang sama - menggabungkan komitmen dari satu cawangan ke yang lain - tetapi perbezaannya terletak pada bagaimana mereka melakukannya. Kami menyerlahkan beberapa perkara yang membezakan utama membandingkan kedua -dua.

Apa itu gabungan git?

Git gabungan adalah arahan yang menyatukan dua atau lebih cawangan sejarah komitmen. Gabungan sering menyatukan hanya dua cawangan, walaupun Git menyokong penggabungan tiga, empat, atau lebih cawangan pada masa yang sama. Git gabungan digunakan oleh git tarik untuk memasukkan perubahan dari satu cawangan ke cawangan lain atau dari repositori lain sama sekali. Penggabungan mesti berlaku dalam satu repositori yang bermaksud semua cawangan yang perlu digabungkan, harus hadir di repositori yang sama. Gabungkan situasi biasanya dihasilkan dari dua atau lebih pengguna, cuba mengemas kini kod biasa. Paling biasa, pengguna menggabungkan cawangan ke cawangan lain di repositori tempatan mereka di persekitaran tempatan. Git gabungan secara khusus mengintegrasikan kandungan cawangan sumber dengan cawangan sasaran. Cawangan sasaran diubah, sementara cawangan sumber kekal.

Apa itu git rebase?

Git Rebase adalah satu lagi alternatif untuk menggabungkan yang digunakan untuk mengintegrasikan cawangan lain dengan cawangan di mana anda sedang bekerja, kecuali ia menyimpan sejarah komit linear. Tujuan git rebase adalah untuk memindahkan cawangan dari satu lokasi ke lokasi yang lain. Seperti yang dilakukan tidak berubah, mereka tidak dapat dipindahkan, jadi ini memerlukan membuat baru dengan perubahan dan metadata yang sama. Rebase secara asasnya mengubah tanggapan ketika dan di mana urutan komitmen telah dibangunkan, yang menghasilkan beberapa aspek sejarah pembangunan yang hilang. Ini bermakna komit asal di mana perkembangannya pada asalnya akan diubah. Ia secara berkesan menggabungkan semua komitmen baru di cawangan induk dengan menulis semula sejarah. Akibatnya, ia mewujudkan komitmen baru untuk setiap komitmen di cawangan asal.

Perbezaan antara git rebase dan gabungan

  1. Asas Git Rebase dan Gabungan

- Walaupun, kedua -dua gabungan dan rebase adalah cara yang paling biasa untuk mengintegrasikan perubahan dalam git dan mereka melayani tujuan yang sama - untuk menggabungkan pelbagai cawangan menjadi satu - perbezaannya terletak pada bagaimana mereka mencapainya. Git gabungan mengintegrasikan kandungan cawangan sumber dengan cawangan sasaran, sambil memelihara keturunan setiap sejarah komit, sedangkan git rebase menggabungkan semua komitmen baru di cawangan induk dengan menulis semula sejarah dengan membuat komitmen baru untuk setiap komit di cawangan sumber.

  1. Bekerja rebase git dan gabungan

 - Dengan gabungan git, anda mula -mula beralih ke cawangan untuk digabungkan dan kemudian gunakan perintah gabungan untuk memilih cawangan untuk bergabung. Memandangkan cawangan menunjukkan komitmen dan komitmen adalah butiran yang anda kaitkan dengan perubahan, perintah penggabungan di cawangan atau tahap komitmen. Rebase, sebaliknya, agak berbeza. Mula -mula anda memilih cawangan untuk merebus semula dan kemudian gunakan perintah rebase untuk memilih tempat untuk meletakkannya.

  1. Tujuan git rebase dan gabungan

 - Penggabungan mewujudkan komit baru yang mewakili gabungan antara dua cawangan. Ia mengintegrasikan perubahan dari garis pembangunan selari yang berlainan (cawangan) bersama dengan membuat gabungan komitmen. Tujuannya adalah untuk menyertai dua atau lebih cawangan bersama -sama, termasuk semua perubahan sejak titik perbezaan ke cawangan semasa. Cepat ke hadapan adalah tingkah laku gabungan lalai dalam git. Rebasing, sebaliknya, mengubah komitmen individu dengan menulis semula sejarah projek dengan membuat komitmen baru untuk setiap komitmen di cawangan asal, yang seterusnya menghasilkan sejarah linear tanpa cawangan yang berbeza.

  1. Sejarah git rebase dan gabungan

- Git gabungan tidak mengubah sejarah, sambil memelihara konteks cawangan yang bermaksud cawangan yang ada tidak berubah dengan cara apa pun. Ia mewujudkan komit baru (kecuali ia adalah gabungan yang cepat), tetapi komitmen itu tetap dapat dicapai dari cawangan. Git Rebase, sebaliknya, menyelaraskan sejarah yang berpotensi kompleks. Komited ditulis semula, versi lama dilupakan, dan semakan semakan berubah. Komit tidak dapat dicapai dengan rebase yang bermaksud anda tidak lagi dapat merebus cawangan yang diterbitkan.

Rebase vs. Gabungan: Carta Perbandingan

Ringkasan Git Rebase vs. Bergabung

Singkatnya, kedua -dua gabungan dan rebase adalah dua cara untuk mengintegrasikan perubahan dalam git, tetapi mereka berbeza dengan cara mereka melakukannya. Gabungan adalah operasi satu langkah dengan satu tempat untuk menyelesaikan konflik dan komitmen yang dapat dicapai dari cawangan tetap dapat dicapai. Rebase, sebaliknya, mengembalikan semula masing -masing secara individu dengan menulis semula sejarah dengan membuat komitmen baru untuk setiap komit di cawangan sumber. Jadi, apa yang pernah dapat dicapai tidak dapat dicapai lagi. Rebase secara asasnya mengubah tanggapan ketika dan di mana urutan komitmen telah dibangunkan.