Git Merge –Opsi non-ff

Git Merge No Ff Option

Kemampuan penggabungan yang mudah dari git adalah salah satu kekuatannya. Selama penggabungan, git menggunakan penggabungan maju cepat ketika ia memperhatikan bahwa KEPALA cabang saat ini adalah nenek moyang dari komit yang Anda coba gabungkan. Dalam penggabungan maju cepat, tidak ada komit baru. Git hanya memindahkan pointer. Jika perilaku ini tidak diinginkan, Anda dapat menggunakan flag no-ff untuk membuat komit baru untuk penggabungan.

Bagaimana Tampilan Penggabungan Dengan dan Tanpa Fast-Forward

Setelah maju cepat, riwayat git Anda akan terlihat seperti ini:



C0 —> C1 —> C2—> C3



Untuk jumlah komit yang sama, berikut adalah riwayat penggabungan tanpa fast-forward:



Dalam kasus pertama, tidak ada indikasi bahwa ada percabangan. Dalam kasus kedua, riwayat menunjukkan komit C4 untuk menunjukkan di mana penggabungan terjadi.

Berjalan Melalui Contoh

Anda akan membuat repositori git, membuat cabang dan kemudian mencoba penggabungan dengan dan tanpa maju cepat.



Bagian 1: Pengaturan

Pertama, Anda dapat membuat repositori git dengan langkah-langkah berikut:

$ mkdir my_project
$ cd my_project
$ git init
$ sentuh a.txt
$ git tambahkan -A
$ git commit -m 'C0: Menambahkan a.txt'

Sekarang mari buat cabang bernama features dan lakukan beberapa perubahan:

$ git fitur cabang
$ git fitur checkout
$ sentuh b.txt
$ git tambahkan -A
$ git commit -m 'C1: Menambahkan b.txt'
$ sentuh c.txt
$ git tambahkan -A
$ git commit -m 'C2: Menambahkan c.txt'
$ sentuh d.txt
$ git tambahkan -A
$ git commit -m 'C3: Menambahkan d.txt'

Bagian2: Gabung Dengan Penerusan Cepat

Mari kembali ke master branch dan gabungkan fitur branch ke dalamnya:

$git checkoutmenguasai
$git gabunganfitur

Keluaran:

Memperbarui 08076fb..9ee88eb
Maju cepat
b.txt | 0
c.txt | 0
d.txt | 0
3 file diubah, 0 penyisipan (+), 0 penghapusan (-)
buat mode 100644 b.txt
buat mode 100644 c.txt
buat mode 100644 d.txt

Jika Anda memeriksa riwayat, Anda akan melihat:

$ git log --oneline
9ee88eb C3: Menambahkan d.txt
c72b92c C2: Menambahkan c.txt
2e4039e C1: Menambahkan b.txt
08076fb C0: Menambahkan a.txt

Jadi, semua komit dari cabang fitur ada di cabang master sekarang. Jika Anda terus membuat perubahan pada master, tidak ada cara untuk mengetahui kapan cabang fitur digabungkan ke dalamnya.

Bagian 3: Tanpa Fast-Forwarding

Ulangi Bagian 1 untuk folder baru.

Kemudian, coba gabungkan tanpa penerusan cepat:

$git checkoutmenguasai
$git gabungan --no-fffitur

Ini akan membuka yang berikut di editor teks default git Anda:

Gabungkan cabang'fitur'
# Harap masukkan pesan komit untuk menjelaskan mengapa penggabungan ini diperlukan,
# terutama jika menggabungkan upstream yang diperbarui menjadi cabang topik.
#
# Baris yang dimulai dengan '#' akan diabaikan, dan pesan kosong dibatalkan
# komitmen.

Ubah komentar. Dalam hal ini, Anda bisa menambahkan C4: sebelum Merge branch 'features'. Outputnya akan terlihat seperti ini:

Penggabungan dilakukan dengan strategi 'rekursif'.
b.txt | 0
c.txt | 0
d.txt | 0
3 file diubah, 0 penyisipan (+), 0 penghapusan (-)
buat mode 100644 b.txt
buat mode 100644 c.txt
buat mode 100644 d.txt

Sekarang jika Anda memeriksa riwayatnya, itu akan terlihat seperti berikut:

$ git log --oneline
e071527 C4: Menggabungkan 'fitur' cabang
bb79c25 C3: Menambahkan d.txt
692bd8c C2: Menambahkan c.txt
a0df62a C1: Menambahkan b.txt
7575971 C0: Menambahkan a.txt

Anda dapat melihat bahwa meskipun Anda memiliki perubahan yang sama persis, versi penggabungan ini memiliki komit C4 tambahan yang menandakan penggabungan cabang fitur menjadi master.

Kesimpulan

Bendera git merge no-ff membantu membuat riwayat yang lebih mudah dibaca. Ini memungkinkan Anda untuk menempatkan tag yang dengan jelas menunjukkan di mana penggabungan terjadi. Ini dapat menghemat waktu dan tenaga Anda selama debugging.

Pelajaran lanjutan:

Referensi: