Šajā rakstā es runāšu par to, kā darbojas Git rebase, atšķirības starp Git rebase un Git un kā strādāt ar Git rebase. Tātad, sāksim darbu.
Git Rebase:
Pieņemsim, ka jums ir Git repozitorijs ar saistībām A, B, C iekš meistars zars. Tad jūs izveidojāt jaunu filiāli kāds darījums un pievienoja 2 jaunas saistības D un E uz kāds darījums zars.
1. attēls: sākotnējā saistību vēsture.
Pieņemsim, ka tagad esat aizmirsis kaut ko pievienot meistars zars. Tātad, jūs atgriezīsities pie meistars filiāle un pievienojiet jaunu apņemšanos G uz meistars zars. Jūsu git vēsturei vajadzētu izskatīties šādi.
2. attēls: saistību vēsture pēc saistības G pievienošanas galvenajā filiālē.
Viss izskatās labi. Ja vēlaties, lai visas izmaiņas, ko esat veicis kāds darījums filiāle būt meistars filiāli, jūs varat apvienot kāds darījums atzars uz meistars zars. Tas ir tas, kas git apvienot darīt.
Ko darīt, ja vēlaties apņemties G lai tā būtu pieejama kāds darījums zars? Nu, jūs varat izmantot git rebase.
No saistību vēstures 2. attēlā jūs varat redzēt, ka zars kāds darījums sākas no apņemšanās C. Ja jūs veicat git atkārtotu bāzi kāds darījums, tad tas sāktos no apņemšanās G kā parādīts 3. attēlā zemāk. Ņemiet vērā, ka saistību saturs D un E mainīsies arī pēc atkārtotas bāzes darbības. Apņemas D un E ietvers izmaiņas saistībās G. Tāpēc es piebildu * simbols pirms apņemšanās D un E.
Ja vēlaties uzzināt, kā izskatās saistību vēsture, ja es to apvienotu, tad ieskatieties 4. attēlā. Es to iekļāvu tikai tāpēc, lai jūs varētu to salīdzināt ar git rebase.
4. attēls: veiciet vēsturi, ja tika izmantota git sapludināšana.
Tagad, kad jūs zināt, kas ir git rebase, atšķirība starp git rebase un git saplūst un kāpēc to izmantoja, es parādīšu, kā to izmantot, šī raksta nākamajā sadaļā.
Git Rebase darbplūsma:
Šajā sadaļā es savā lokālajā datorā izveidošu jaunu git repozitoriju un parādīšu, kā darbojas git rebase. Es iesaku jums labi izprast git rebase, pirms to lietojat savā projektā.
Vispirms izveidojiet jaunu Git repozitoriju rebase-demo / datorā šādi:
$ git init atsākt demo
Tagad dodieties uz rebase-demo / direktoriju šādi:
$ cd rebase-demo /
Tagad izveidojiet jaunu failu pārbaude.txt sekojoši:
$ echo "A"> tests.txt
Pārbaude.txt failā ir tikai viena rindiņa A. Pieņemsim, ka tas ir jūsu sākotnējais projekta kods.
Tagad veiciet izmaiņas šādi:
$ git pievienot .$ git saistības -m 'A'
Tagad pievienojiet citu rindu B uz pārbaude.txt failu, kā parādīts zemāk esošajā ekrānuzņēmumā.
Tagad veiciet izmaiņas šādi:
$ git pievienot .$ git saistības -m 'B'
Tagad pievienosim vēl vienu C līniju pārbaude.txt failu.
Veiciet izmaiņas arī šādi:
$ git pievienot .$ git saistības -m 'C'
Tagad galvenās filiāles saistību vēsturei vajadzētu izskatīties šādi:
$ git log - tiešsaistē
Pieņemsim, ka jums ir dažas jaunas idejas, kuras vēlaties izmēģināt. Tātad, izveidosim un izrakstīsimies uz jaunu filiāli jauna funkcija sekojoši:
$ git izrakstīšanās -b jauna funkcija
Tagad pievienojiet savu jauno ideju (rinda D teiksim) uz pārbaude.txt failu.
Tagad veiciet izmaiņas šādi:
$ git pievienot .$ git saistības -m 'D'
Tagad pievienojiet rindiņu E pārbaude.txt failu.
Izpildiet izmaiņas šādi:
$ git pievienot .$ git saistības -m 'E'
Tagad saistību vēsture jauna funkcija filiālei vajadzētu izskatīties šādi:
$ git log - tiešsaistēSkatiet, kā apņemšanās notiek kārtībā A < B < C < D < E?
Tagad jūs atceraties, ka esat aizmirsis kaut ko pievienot meistars filiāle, kurā jūs arī gribējāt būt jauna funkcija zars! Tātad, izrakstīšanās uz meistars zars.
Es pievienoju jaunu rindu beigās pārbaude.txt failu, kā redzat.
Tagad veiciet izmaiņas šādi:
$ git pievienot .$ git saistības -m 'G'
Tagad saistību vēsture meistars filiālei vajadzētu izskatīties šādi.
A < B < C < G
Tagad, lai pārvērtētu saistības no meistars atzars uz jauna funkcija filiāle, pirmā izrakstīšanās uz jauna funkcija zars.
$ git izrakstīšanās jauna funkcija
Tagad veiciet meistars filiāle šādi:
$ git rebase master
Daži apvieno konfliktu! Labosim to.
Nu, izmaiņas, ko esmu izdarījis saistībās G un D ir savstarpēji pretrunīgi. Es gribu saglabāt abus šos.
Pēc apvienošanās konflikta novēršanas pārbaude.txt failam vajadzētu izskatīties šādi:
Tagad pievienojiet izmaiņas pieturvietai šādi:
$ git pievienot .
Tagad turpiniet atsāknēšanu šādi:
$ git rebase - turpiniet
Kārtējais apvienošanās konflikts! Nu, tas var notikt. Rebase maina git saistību vēsturi. Tātad, ir sagaidāmas šādas lietas.
Šķiet, ka sapludināšanas process neizdevās dažu tukšu rindu dēļ. Labosim to.
Pēc apvienošanās konflikta novēršanas pārbaude.txt failam vajadzētu izskatīties šādi.
Tagad pievienojiet izmaiņas pieturvietai šādi:
$ git pievienot .
Tagad turpiniet atkārtotas bāzes darbību šādi:
$ git rebase - turpiniet
Git atsākšana ir pabeigta.
Kā redzat, tiek atjaunināta jauno funkciju filiāles saistību vēsture. Tagad saistību vēsture ir šāda:
A < B < C < G < D < ETāpat kā gaidīts.
Fināls pārbaude.txt failam vajadzētu izskatīties šādi.
Git rebase ir spēcīgs rīks. Bet to nekad nevajadzētu izmantot koplietojamās Git krātuvēs. Izmantojiet to tikai Git krātuvēs, kurās strādājat tikai jūs. Pretējā gadījumā jums ceļā nāksies saskarties ar daudzām problēmām.
Tātad, tā jūs izmantojat git rebase. Paldies, ka izlasījāt šo rakstu.