Saya baru saja melakukan git pull --rebase origin master
dan ada konflik.
Pertama, konflik ini ada di file yang belum saya sentuh, dan sekitar 10 komit kembali. Mengapa ini terjadi?
Saya kemudian tidak sengaja mengetik git rebase --skip
, dan 'melewatkan tambalan itu'.
Khawatir saya melewatkan komit, saya memeriksa versi baru dari cabang master dan melakukan perbedaan antara cabang tempat saya melakukan rebase, dan cabang master baru. Satu-satunya perubahan yang muncul di diff adalah komit terbaru, dan melihat log, tambalan yang 'dilewati', muncul di riwayat komit.
Adakah yang bisa menjelaskan apa yang terjadi di sini?
git rebase --skip
. Mungkin salah? :)Jawaban:
Itu melakukan apa yang dikatakannya, itu melompati komit. Jika Anda menjalankan
rebase --abort
konflik selanjutnya selama rebase yang sama, komit yang dilewati juga tentu saja akan dikembalikan.Jika perubahan Anda sudah ada di upstream, Git tidak akan dapat menerapkan komit Anda (tetapi biasanya harus melewatinya secara otomatis, jika tambalannya sama persis). Komitmen Anda sendiri akan dilewati, tetapi perubahan akan tetap ada di HEAD saat ini, karena sudah diterapkan di bagian hulu.
Anda harus benar-benar memastikan bahwa Anda tidak menghapus perubahan penting dari Anda;) (gunakan reflog untuk kembali ke keadaan sebelum rebase)
sumber
--skip
cara untuk pergi. Lewati akan melewatkan komit seluruhnya, membatalkan semua perubahan yang dibuat dalam komit ini.git rebase
sebagai menyalin komitmen dari satu cabang ke cabang lain. Jadi ketika Anda melewatkan komit, konten asli dari komit akan dilewati dan tambalan tidak diterapkan (jadi semua perubahan yang dibuat pada file apa pun tidak akan membuatnya menjadi cabang target Anda). Cara termudah adalah menyiapkan repositori git sederhana dengan dua cabang, beberapa komit pada masing-masing cabang, lalu mencoba melakukan rebase dan melewatkan komit (Anda dapat menggunakangit rebase --interactive
untuk menentukan komit mana yang akan disalin (pick
) atau dilewati (skip
)