Rumah >alat pembangunan >git >Penjelasan terperinci tentang contoh rebase untuk pembelajaran git

Penjelasan terperinci tentang contoh rebase untuk pembelajaran git

WBOY
WBOYke hadapan
2022-03-22 18:22:341923semak imbas

Artikel ini membawa anda pengetahuan yang berkaitan tentang Git, yang terutamanya memperkenalkan isu yang berkaitan dengan rebase dan rebase boleh difahami secara langsung sebagai menukar pangkalan. Cawangan ciri ialah cawangan berdasarkan B cawangan induk Asas ciri ialah B. Saya harap ia akan membantu semua orang.

Penjelasan terperinci tentang contoh rebase untuk pembelajaran git

Kajian yang disyorkan: "Tutorial Pembelajaran Git"

Artikel ini menggunakan contoh paling mudah untuk membantu anda menguasai prinsip dan penggunaan dengan cepat of rebase

1. Gambar rajah nod penyerahan

Pertama, mari kita alami apa yang dilakukan oleh rebase melalui gambar rajah nod penyerahan

Dua cabang induk dan ciri, di mana ciri adalah daripada titik penyerahan B Cawangan yang ditarik daripada induk

mempunyai komit M baharu pada induk, dan terdapat dua komit baharu C dan D pada ciri
Penjelasan terperinci tentang contoh rebase untuk pembelajaran git
Pada masa ini, tukar kepada ciri branch dan laksanakan arahan berikut , yang bersamaan dengan ingin menggabungkan cawangan induk ke dalam cawangan ciri (senario langkah ini boleh dibandingkan dengan kami telah membangunkan ciri cawangan kami sendiri untuk seketika dan bersedia untuk menarik perubahan terkini daripada induk batang)

git checkout featuregit rebase master

//这两条命令等价于git rebase master feature

Gambar berikut ialah gambarajah nod komit selepas asas semula, terangkan prinsip kerjanya:
Penjelasan terperinci tentang contoh rebase untuk pembelajaran git

  • ciri: cawangan akan berasaskan semula , cawangan semasa
  • induk: cawangan asas, cawangan sasaran

Penjelasan rasmi (jika anda tidak faham, anda boleh membaca perenggan seterusnya secara langsung): Apabila melakukan operasi rebase, git akan bermula dari dua cawangan. Nenek moyang yang sama mula mengekstrak pengubahsuaian pada cawangan untuk diasaskan semula, kemudian menunjuk cawangan untuk diasaskan semula kepada komit terkini cawangan asas, dan akhirnya menggunakan pengubahsuaian hanya diekstrak ke belakang komit terkini cawangan asas.

Terangkan dengan contoh: Apabila melaksanakan git rebase master pada cawangan ciri, git akan mengekstrak pengubahsuaian pada cawangan ciri bermula daripada nenek moyang biasa B master dan featuer, iaitu, C dan D Dua komit, diekstrak dahulu. 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. (Perhatikan bahawa jika tiada komit baru pada induk selepas B, maka B asal masih akan digunakan sebagai asas. Operasi rebase adalah bersamaan dengan tidak sah. Pada masa ini, pada dasarnya tiada perbezaan daripada git merge. Satu-satunya perbezaannya ialah git merge akan mempunyai satu lagi rekod Merge Submission rekod operasi)

Contoh di atas boleh disarikan ke dalam senario kerja sebenar berikut: Zhang San menarik kod daripada B untuk pembangunan, dan telah menyerahkannya dua kali setakat ini, dan mengembangkannya kepada D; Li Si juga bermula dari B B menariknya dan membangunkannya Selepas pembangunan selesai, dia menyerahkannya kepada M dan kemudian menggabungkannya ke dalam batang utama. Pada masa ini, Zhang San ingin menurunkan kod terbaharu, jadi dia melaksanakan git rebase master pada cawangan ciri, iaitu, meletakkan semula cawangan induk Memandangkan Li Si telah membangunkan dan menggabungkan batang lebih awal, ini adalah bersamaan dengan Zhang San berdasarkan penghujahan terbaru Li Si M telah dibangunkan.


2. Contoh penyerahan git sebenar

Rekod penyerahan dibina mengikut rajah di atas, seperti yang ditunjukkan dalam rajah di bawah: (ABM ialah garisan cawangan induk, ABCD ialah baris cawangan ciri . Di sini induk menukar warna dan bercabang Ini tidak menjejaskan pemahaman bahawa ia bermakna dua cabang dan dua baris )
Penjelasan terperinci tentang contoh rebase untuk pembelajaran git
Pada masa ini, laksanakan git rebase master

Selepas pangkalan semula selesai, ABCD ialah baris cawangan ciri asal, ABMC'D' ialah baris cawangan ciri baharu, dan ABM ialah baris cawangan induk (tiada perubahan)


Penjelasan terperinci tentang contoh rebase untuk pembelajaran git


3. Senario penggunaan yang disyorkan

Terdapat begitu banyak perkara yang perlu dilakukan, tetapi ini sebenarnya perkara yang paling penting. Syarikat yang berbeza dan situasi yang berbeza mempunyai senario penggunaan yang berbeza, tetapi dalam kebanyakan kes pengesyoran adalah seperti berikut:

  1. Apabila menarik kod terbaharu daripada cawangan awam, gunakan rebase, iaitu git pull -r atau git pull --rebase, tetapi satu kelemahan ialah selepas rebase, saya tidak tahu cawangan mana semasa saya cawangan mula-mula ditarik dari. Ia keluar kerana pangkalan telah berubah. (Disebabkan ini, kebanyakan syarikat sebenarnya tidak menggunakan rebase dan pada asasnya menggunakan gabungan. Walaupun akan ada rekod penyerahan yang tidak bermakna "Gabung... ke...", sekurang-kurangnya mereka boleh tahu siapa yang melakukan apa)
  2. Apabila bergabung 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 diganggu oleh anda. Contohnya, Zhang San dan Li Si menarik pembangunan daripada yang biasa nod. Zhang San menyelesaikan pembangunan dahulu dan menyerahkan dua Kemudian gabungan itu meningkat, dan Li Si kemudiannya membangunkan dan mengasaskannya semula (perhatikan bahawa Li Si perlu beralih ke cawangan utama, kemudian laksanakan git rebase, dan kemudian git pull ke remote tamat), maka penyerahan baharu Li Si menjadi penyerahan baharu Zhang San Pangkalan baharu yang diserahkan, pada asalnya penyerahan Li Si adalah yang terkini, tetapi penyerahan terkini menunjukkan bahawa penyerahan itu adalah milik Zhang San, dan semuanya menjadi salah)

Pembelajaran yang disyorkan: "Tutorial Git

Atas ialah kandungan terperinci Penjelasan terperinci tentang contoh rebase untuk pembelajaran git. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam