git rebase bermaksud: mentakrifkan semula status repositori cawangan apabila menjalankan operasi rebase, git akan mengekstrak pengubahsuaian pada cawangan untuk diasaskan semula daripada nenek moyang yang sama bagi kedua-dua cawangan, dan kemudian pangkalan semula Mata cawangan; kepada komit terkini cawangan asas, dan akhirnya perubahan yang baru diekstrak digunakan pada bahagian belakang komit terkini cawangan asas.
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Git 2.30.0, komputer Dell G3.
Git rebase, seperti namanya, adalah untuk mentakrifkan semula (semula) peranan titik permulaan (asas), iaitu, untuk mentakrifkan semula status repositori cawangan.
Pertama, mari kita alami apa yang dilakukan oleh rebase melalui gambar rajah nod penyerahan yang ringkas
Dua cabang induk dan ciri, di mana ciri berada di titik penyerahan B Cawangan yang ditarik daripada induk
mempunyai komit M baharu pada induk dan dua komit baharu C dan D pada ciri
Pada masa ini, tukar kepada cawangan ciri , laksanakan arahan berikut, yang bersamaan dengan menggabungkan cawangan induk ke dalam cawangan ciri
git checkout feature git rebase master //这两条命令等价于git rebase master feature
Rajah berikut menunjukkan rajah nod komit selepas mengasingkan semula prinsip kerjanya:
Penjelasan rasmi: Apabila melakukan operasi pangkalan semula , Git akan mengekstrak pengubahsuaian pada cawangan yang akan diasaskan semula bermula daripada nenek moyang yang sama bagi kedua-dua cawangan, kemudian mengarahkan cawangan itu untuk diasaskan semula kepada komit terkini cawangan asas, dan akhirnya menggunakan pengubahsuaian yang baru diekstrak ke bahagian belakang komitmen terkini cawangan asas.
Jelaskan dengan contoh: Apabila melaksanakan git rebase master pada cawangan ciri, git akan mengekstrak pengubahsuaian pada cawangan ciri bermula daripada moyang sepunya B master dan featuer, iaitu, kedua-dua komit C dan D, ekstrak mereka mula-mula tiba. Kemudian arahkan cawangan ciri ke komit terkini cawangan induk, iaitu M. Akhir sekali, C dan D yang diekstrak disambungkan kepada M, tetapi proses ini adalah untuk memadamkan C dan D asal dan menghasilkan kandungan penyerahan C’ dan D’ yang baharu, tetapi id komit adalah berbeza. Sememangnya, ciri akhirnya menunjuk kepada D'.
Penjelasan popular (penting!) : rebase, rebase, boleh difahami secara langsung sebagai menukar pangkalan. Cawangan ciri ialah cawangan yang ditarik dari B cawangan induk, dan asas ciri ialah B. Dan jika induk mempunyai komit baharu selepas B, ia bersamaan dengan menggunakan komit baharu pada induk sebagai asas baharu cawangan ciri. Operasi sebenar adalah untuk menyimpan penyerahan ciri selepas B, kemudian padamkan penyerahan asal, kemudian cari lokasi penyerahan terbaharu induk, dan kemudian sambungkan penyerahan yang disimpan (nod baharu dengan id komit baharu), supaya asas cawangan ciri agak Yu menjadi M dan bukannya B asal.
Terdapat juga penjelasan yang sangat mudah. Kunci kepada perintah rebase sebenarnya adalah untuk memahami "base" git
Rekod penyerahan dibina mengikut rajah di atas, seperti yang ditunjukkan dalam rajah di bawah: (ABM ialah garis cawangan induk, dan ABCD ialah garis cawangan ciri. Di sini, warna induk berubah dan bercabang Ini tidak menjejaskan pemahaman Ini bermakna dua Hanya dua baris untuk setiap cabang )
Pada masa ini, laksanakan git rebase master
pada cawangan ciri Selepas pangkalan semula selesai, ABCD ialah baris cawangan ciri asal , ABMC 'D' ialah baris cawangan ciri baharu, ABM ialah baris cawangan induk (tiada perubahan)
.
Terdapat begitu banyak perkara yang perlu dilakukan, tetapi ini sebenarnya perkara yang paling penting. Syarikat dan situasi yang berbeza mempunyai senario penggunaan yang berbeza, tetapi dalam kebanyakan kes perkara berikut disyorkan:
Gunakan rebase apabila menarik kod terkini daripada cawangan awam, iaitu git pull -r atau git pull -- Rebase, tetapi satu kelemahan ialah selepas rebase, saya tidak tahu cabang mana cawangan semasa saya mula-mula ditarik, kerana pangkalan telah berubah. (Jika anda menggunakan gabungan, akan ada rekod komit yang tidak bermakna "Gabung... kepada...")
Apabila menggabungkan kod ke cawangan awam, gunakan gabungan. (Jika anda menggunakan rebase, maka jika pembangun lain ingin melihat sejarah cawangan utama, ia bukan sejarah asal. Sejarah telah diusik oleh anda)
Disyorkan pembelajaran: "Tutorial Git》
Atas ialah kandungan terperinci Apakah maksud git rebase?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!