Git

Git Merge -no-ff Option

Git Merge -no-ff Option

Memahami Pilihan Git Merge no-ff

Keupayaan menggabungkan git yang mudah adalah salah satu kelebihannya. Semasa penggabungan, git menggunakan penggabungan maju ke hadapan apabila menyedari bahawa KEPALA cabang semasa adalah nenek moyang dari komitmen yang anda cuba gabungkan. Dalam penggabungan maju cepat, tidak ada komitmen baru. Git hanya menggerakkan penunjuk. Sekiranya tingkah laku ini tidak diingini, anda boleh menggunakan bendera no-ff untuk membuat komit baru untuk penggabungan.

Bagaimana Gabungan Nampak Dengan dan Tanpa Maju Cepat

Setelah maju cepat, sejarah git anda akan kelihatan seperti ini:

C0 -> C1 -> C2-> C3

Untuk jumlah komitmen yang sama, berikut adalah sejarah penggabungan tanpa penerusan pantas:

Dalam kes pertama, tidak ada petunjuk bahawa terdapat percabangan. Dalam kes kedua, sejarah menunjukkan komitmen C4 untuk menunjukkan di mana penggabungan itu berlaku.

Berjalan Melalui Contoh

Anda akan membuat git repositori, membuat cawangan dan kemudian mencuba penggabungan dengan dan tanpa maju cepat.

Bahagian 1: Persediaan

Pertama, anda boleh membuat git repositori dengan langkah-langkah berikut:

$ mkdir my_projek
$ cd my_projek
$ git init
$ sentuhan a.txt
$ git tambah -A
$ git commit -m "C0: Menambah a.txt "

Sekarang mari buat cawangan yang disebut ciri dan lakukan beberapa perubahan:

ciri cawangan $ git
ciri $ git checkout
$ sentuhan b.txt
$ git tambah -A
$ git commit -m "C1: Menambah b.txt "
$ sentuhan c.txt
$ git tambah -A
$ git commit -m "C2: Menambah c.txt "
$ sentuhan d.txt
$ git tambah -A
$ git commit -m "C3: Menambah d.txt "

Bahagian 2: Gabungan Dengan Penghantaran Cepat

Mari kembali ke cawangan induk dan gabungkan cawangan ciri ke dalamnya:

$ git master checkout
ciri gabungan $ git

Pengeluaran:

Mengemas kini 08076fb… 9ee88eb
Maju pantas
b.txt | 0
c.txt | 0
d.txt | 0
3 fail diubah, 0 sisipan (+), 0 penghapusan (-)
buat mod 100644 b.txt
buat mod 100644 c.txt
buat mod 100644 d.txt

Sekiranya anda menyemak sejarah, anda akan melihat:

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

Jadi, semua komitmen dari cabang ciri ada di cawangan induk sekarang. Sekiranya anda terus melakukan perubahan pada master, tidak ada cara untuk mengetahui kapan cabang fitur digabungkan ke dalamnya.

Bahagian 3: Tanpa Penghantaran Cepat

Ulangi Bahagian 1 untuk folder baru.

Kemudian, cubalah penggabungan tanpa pemajuan pantas:

$ git master checkout
$ git penggabungan --tidak ada ciri

Ini akan membuka perkara berikut dalam editor teks lalai git anda:

Gabungkan 'ciri' cawangan
# Sila masukkan mesej komit untuk menjelaskan mengapa penggabungan ini diperlukan,
# terutamanya jika menggabungkan hulu yang dikemas kini menjadi cabang topik.
#
# Garis yang dimulai dengan '#' akan diabaikan, dan mesej kosong dibatalkan
# komit.

Ubah suai komen. Dalam kes ini, Anda hanya dapat menambahkan "C4:" sebelum "Gabungkan cawangan 'ciri" ". Keluarannya akan kelihatan seperti ini:

Gabungan dibuat dengan strategi 'recursive'.
b.txt | 0
c.txt | 0
d.txt | 0
3 fail diubah, 0 sisipan (+), 0 penghapusan (-)
buat mod 100644 b.txt
buat mod 100644 c.txt
buat mod 100644 d.txt

Sekarang jika anda menyemak sejarah, ia akan kelihatan seperti berikut:

$ git log - talian
e071527 C4: Gabungkan 'ciri' cawangan
bb79c25 C3: Menambah d.txt
692bd8c C2: Menambah c.txt
a0df62a C1: Menambah b.txt
7575971 C0: Menambah a.txt

Anda dapat melihat bahawa walaupun anda mempunyai perubahan yang sama, versi penggabungan ini mempunyai komitmen C4 tambahan yang menandakan penggabungan cabang ciri menjadi induk.

Kesimpulannya

Bendera git merge no-ff membantu mencipta sejarah yang lebih mudah dibaca. Ia membolehkan anda meletakkan teg yang menunjukkan dengan jelas di mana penggabungan itu berlaku. Ia dapat menjimatkan masa dan usaha semasa melakukan penyahpepijatan.

Sambung belajar:

Rujukan:
HD Remastered Games untuk Linux yang Tidak Pernah Melancarkan Linux Sebelumnya
Banyak pembangun dan penerbit permainan hadir dengan penghapus HD permainan lama untuk memperpanjang usia francais, harap peminat meminta keserasian d...
Cara Menggunakan AutoKey untuk Mengautomasikan Permainan Linux
AutoKey adalah utiliti automasi desktop untuk Linux dan X11, yang diprogramkan dalam Python 3, GTK dan Qt. Dengan menggunakan skrip dan fungsi MACRO, ...
Cara Menunjukkan Kaunter FPS dalam Permainan Linux
Permainan Linux mendapat dorongan utama ketika Valve mengumumkan sokongan Linux untuk klien Steam dan permainan mereka pada tahun 2012. Sejak itu, ban...