Git

Opsi Git Merge -no-ff

Opsi Git Merge -no-ff

Memahami Opsi Git Merge no-ff

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 menggerakkan 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 fast-forward.

Bagian 1: Pengaturan

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

$ mkdir my_project
$ cd my_project
$ git init
$ sentuh.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 checkout master checkout
$ git menggabungkan fitur

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 riwayatnya, Anda akan melihat:

$ git log --oneline
9ee88eb C3: Menambahkan d.txt
c72b92c C2: Menambahkan c.txt
2e4039e C1: Menambahkan b.txt
08076fb C0: Menambahkan.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 checkout master checkout
$ git merge --no-ff fitur

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

Gabungkan 'fitur' cabang
# Silakan 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:

Gabung yang dibuat oleh 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: Gabungkan 'fitur' cabang
bb79c25 C3: Menambahkan d.txt
692bd8c C2: Menambahkan c.txt
a0df62a C1: Menambahkan b.txt
7575971 C0: Menambahkan.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:
5 Game Arkade Terbaik untuk Linux
Saat ini, komputer adalah mesin serius yang digunakan untuk bermain game. Jika Anda tidak bisa mendapatkan skor tinggi baru, Anda akan tahu apa yang s...
Pertempuran Untuk Wesnoth 1.13.6 Pengembangan Dirilis
Pertempuran Untuk Westnoth 1.13.6 dirilis bulan lalu, adalah rilis pengembangan keenam dalam 1.13.x series dan memberikan sejumlah peningkatan, teruta...
Cara Menginstal League Of Legends di Ubuntu 14.04
Jika Anda adalah penggemar League of Legends, maka ini adalah kesempatan bagi Anda untuk menguji coba League of Legends. Perhatikan bahwa LOL didukung...