Kapan git rebase mengalami konflik?

Sep 28 2020

Saya telah membaca beberapa posting di forum ini, progit, Youtube dan beberapa blog acak untuk rebase.

Bentuk paling umum untuk menyimpulkan subjek ini adalah:

- A - B - C   Master
   \  D - E Topic

dan saya melakukan:

git checkout Topic
git rebase Master

Idealnya, itu adalah:

- A - B - C - D' - E' Master, Topic

Tapi 2 kekhawatirannya adalah:

  1. Apakah D '= D, E' = E?
  2. Apa itu konflik git rebase?

Mengenai perhatian pertama dan posting ini ,

  1. Rebase melakukan penggabungan pada D dan E, dan yang terpenting, dengan masukan yang rumit.

Misalnya kalau masuk ke D, sesuai postingan dan kalau saya benar

  1. HEAD terlepas ke C
  2. Git membandingkan antara perubahan dari A ke D dan perubahan dari A ke C
  3. Setelah penggabungan, git membandingkan antara D ', D dan E

Dan ini paling membingungkan saya. Mengapa penggabungan melibatkan lebih dari 2 komit? Juga, bagaimana konflik muncul?

EDIT:

Menjalankan beberapa perintah, harap lihat yang berikut ini:

git init

Membuat Random.txt Isi: Master 1

git add Random.txt
git commit -m "Master 1"

Buat cabang baru

git checkout -b rebase_conflict

Ubah Konten Random.txt: 1

git add Random.txt
git commit -m "Conflict 1"

Ubah Acak. Konten txt: 2

git add Random.txt
git commit -m "Conflict 1"

Beralih ke master

git checkout master

Ubah konten Random.txt: Master 2

git add Random.txt
git commit -m "Master 2"

Ganti cabang dan rebase

git checkout rebase_conflict
git rebase master

Dapatkan kesalahan konflik Alter Random.txt Isi: 1

git add Random.txt
git rebase --continue

Pada titik ini, saya mengharapkan konflik rebase lagi, karena menurut logika

-- Master 1 -- Master 2
  \ -- Conflict 1 -- Conflict 2

Setelah rebase pertama

-- Master 1 -- Master 2 -- Conflict 1'
 \ -- Conflict 1 -- Conflict 2

Pada tahap ini saya mengharapkan komit baru di atas Konflik 1 '. Apakah tidak ada konflik gabungan antara Konflik 2 dan Konflik 1 '?

Karena Konflik 1 'konten Random.txt: 1, sedangkan

Bentrok 2 konten Random.txt: 2

Mereka mengubah baris yang sama, bukan?

Jawaban

TimBiegeleisen Sep 28 2020 at 20:27

Penggabungan atau pemindahan nilai dalam contoh Anda di atas dapat mengakibatkan konflik penggabungan. Mungkin hanya satu atau yang lain yang akan mengalami konflik juga. Untuk memahami apa yang dilakukan rebasing, perhatikan diagram berikut yang menunjukkan seperti apa Topictampilan setelah rebasing Master:

Topic:  -- A -- B -- C -- D' -- E'

Di sini apostrof menunjukkan bahwa Ddan Ekomit telah diterapkan kembali ke basis baru Master. Saat setiap komit diterapkan kembali, ada kemungkinan konflik penggabungan. Jadi, dalam kasus penerapan kembali N komit, mungkin ada N set konflik penggabungan. Di sisi lain, penggabungan akan selalu menghasilkan paling banyak satu kumpulan konflik penggabungan. Jika ini menjadi perhatian Anda, Anda mungkin lebih menyukai penggabungan daripada rebasing.