logo

Git Rebase

Bāzes atjaunošana ir process, lai atkārtoti piemērotu saistības citam bāzes braucienam. To izmanto, lai piemērotu saistību izpildes secību no dažādām atzarām galīgajā saistībā. Tā ir git merge komandas alternatīva. Tas ir lineārs apvienošanās process.

Programmā Git termins 'rebase' tiek saukts par procesu, kurā tiek pārvietota vai apvienota saistību secība uz jaunu bāzes saistību. Bāzes atjaunošana ir ļoti izdevīga, un tā vizualizēja procesu funkciju sazarošanas darbplūsmas vidē.

Pirms filiāles apvienošanas ieteicams mainīt bāzi.

Git Rebase

Parasti tā ir git merge komandas alternatīva. Sapludināšana vienmēr ir uz priekšu mainīgs ieraksts. Salīdzinoši, rebase ir pārliecinošs vēstures pārrakstīšanas rīks git formātā. Tas apvieno dažādas saistības pa vienam.

Pieņemsim, ka esat veicis trīs saistības savā galvenajā filiālē un trīs savā citā filiālē ar nosaukumu tests. Ja jūs to apvienosit, visas saistības tiks apvienotas vienā laikā. Bet, ja jūs to mainīsit, tas tiks apvienots lineārā veidā. Apsveriet tālāk redzamo attēlu:

Git Rebase

Iepriekš redzamajā attēlā ir aprakstīts, kā darbojas git rebase. Trīs galvenās filiāles saistības tiek lineāri sapludinātas ar testa zara saistībām.

Apvienošana ir visvienkāršākais veids, kā integrēt filiāles. Tas veic trīs veidu sapludināšanu starp divām jaunākajām filiāļu saistībām.

Kā Rebase

Kad veicāt dažas saistības līdzekļa zarā (testa zarā) un dažas galvenajā zarā. Varat pārbāzēt jebkuru no šīm filiālēm. Izmantojiet komandu git log, lai izsekotu izmaiņām (iesniegšanas vēsturei). Izrakstieties uz vēlamo filiāli, kuru vēlaties mainīt. Tagad izpildiet rebase komandu šādi:

Sintakse:

 $git rebase 

Ja filiālē ir konflikti, atrisiniet tos un izpildiet tālāk norādītās komandas, lai turpinātu izmaiņas:

 $ git status 

To izmanto, lai pārbaudītu statusu,

 $git rebase --continue 

Iepriekš minētā komanda tiek izmantota, lai turpinātu veiktās izmaiņas. Ja vēlaties izlaist izmaiņas, varat izlaist, kā norādīts tālāk.

Aktrise Rakula Preeta Singha
 $ git rebase --skip 

Kad bāzēšana ir pabeigta. Nospiediet repozitoriju uz izcelsmi. Apsveriet tālāk sniegto piemēru, lai saprastu git sapludināšanas komandu.

Pieņemsim, ka jums ir filiāle teikt tests2 pie kuras jūs strādājat. Jūs tagad atrodaties test2 filiālē un esat veicis dažas izmaiņas projekta failā jauns fails1.txt .

Pievienojiet šo failu repozitorijai:

 $ git add newfile1.txt 

Tagad veiciet izmaiņas. Izmantojiet tālāk norādīto komandu:

 $ git commit -m 'new commit for test2 branch.' 

Izvade izskatīsies šādi:

 [test2 a835504] new commitfor test2 branch 1 file changed, 1 insertion(+) 

Pārslēgt filiāli uz galveno:

 $ git checkout master 

Izvade:

 Switched to branch 'master.' Your branch is up to date with 'origin/master.' 

Tagad jūs esat galvenajā zarā. Esmu pievienojis izmaiņas savam failam, saka jauns fails.txt . Tālāk norādītā komanda tiek izmantota, lai pievienotu failu repozitorijā.

 $ git add newfile.txt 

Tagad apstipriniet failu izmaiņām:

 $ git commit -m ' new commit made on the master branch.' 

Izvade:

 [master 7fe5e7a] new commit made on master 1 file changed, 1 insertion(+) HiMaNshU@HiMaNshU-PC MINGW64 ~/Desktop/GitExample2 (master) 

Lai pārbaudītu žurnāla vēsturi, izpildiet tālāk norādīto komandu.

 $ git log --oneline 

Izvade:

Git Rebase

Kā redzam žurnāla vēsturē, galvenajā zarā ir jauna apņemšanās. Kas man jādara, ja vēlos mainīt savu test2 filiāles bāzi? Skatiet tālāk norādīto rebase filiāles scenāriju:

Rebases filiāle

Ja mums ir daudz saistību no dažādām filiālēm un mēs vēlamies tās apvienot vienā. Lai to izdarītu, mums ir divas izvēles iespējas: mēs varam to apvienot vai mainīt bāzi. Ir labi mainīt savu filiāli.

No iepriekš minētā piemēra mēs esam apņēmušies izmantot galveno filiāli un vēlamies to atkārtoti izmantot test2 filiālei. Apskatīsim tālāk norādītās komandas:

 $ git checkout test2 

Šī komanda ieslēgs jūs test2 zaru no galvenā.

kā pārbaudīt bloķētos numurus operētājsistēmā Android

Izvade:

 Switched to branch 'test2.' 

Tagad jūs atrodaties test2 filiālē. Tādējādi test2 zaru var pārbāzēt ar galveno zaru. Skatiet zemāk esošo komandu:

 $ git rebase master 

Šī komanda pārveidos test2 filiāles bāzi un tiks parādīta kā Pieteikšanās: jauna apņemšanās test2 filiālē . Apsveriet tālāk norādīto izvadi:

Izvade:

Git Rebase

Git Interactive Rebase

Git atvieglo ar Interactive Rebase; tas ir spēcīgs rīks, kas ļauj veikt dažādas darbības, piemēram rediģēt, pārrakstīt, pārkārtot, un vairāk par esošajām saistībām. Interaktīvo Rebase var darbināt tikai tajā filiālē, kas pašlaik ir izrakstīta. Tāpēc sānjoslā iestatiet vietējo HEAD filiāli.

Git interactive rebase var izsaukt ar rebase komandu, vienkārši ierakstiet -i kopā ar rebase komandu. Šeit ' i ' apzīmē interaktīvu. Šīs komandas sintakse ir norādīta zemāk:

Sintakse:

 $ git rebase -i 

Tajā tiks uzskaitītas visas pieejamās interaktīvās iespējas.

Izvade:

Git Rebase

Pēc dotās izvades tas atvērs redaktoru ar pieejamajām opcijām. Apsveriet tālāk norādīto izvadi:

Izvade:

Git Rebase

Kad mēs izpildīsim git interaktīvo rebase komandu, tā atvērs jūsu noklusējuma teksta redaktoru ar iepriekš minēto izvadi.

Tajā ietvertās opcijas ir norādītas zemāk:

  • Izvēlēties
  • Pārfrāzēt
  • Rediģēt
  • Skvošs
  • Labošana
  • Izpildītājs
  • Pārtraukt
  • Nometiet
  • Etiķete
  • Atiestatīt
  • Apvienot

Iepriekš minētās opcijas veic savus īpašos uzdevumus, izmantojot git-rebase. Īsi sapratīsim katru no šīm iespējām.

Izvēlieties (-p):

Šeit izvēlieties statīvus, kuros ir iekļauta apņemšanās. Saistību secība ir atkarīga no atlases komandu secības atjaunošanas laikā. Ja nevēlaties pievienot apņemšanos, jums ir jāizdzēš visa rinda.

Pārfrāzēt (-r):

Pārvārds ir diezgan līdzīgs izvēles komandai. Pārkodēšanas opcija apturēja atkārtotas bāzes procesu un nodrošina iespēju mainīt izpildes ziņojumu. Tas neietekmē nekādas izmaiņas, kas veiktas saistībā ar apņemšanos.

virkne c++ valodā

Rediģēt(-es):

Rediģēšanas opcija ļauj grozīt saistību. Grozīšanas līdzekļus, saistības var pievienot vai pilnībā mainīt. Mēs varam arī veikt papildu saistības pirms rebase turpināt komandas. Tas ļauj mums sadalīt lielas saistības mazākās; turklāt mēs varam noņemt kļūdainās izmaiņas, kas veiktas saistībās.

Skvošs (-s):

Skvoša opcija ļauj apvienot divas vai vairākas saistības vienā izpildē. Tas arī ļauj mums uzrakstīt jaunu apstiprinājuma ziņojumu, lai aprakstītu izmaiņas.

Labojums (-f):

Tas ir diezgan līdzīgs skvoša komandai. Tā atmeta ziņojumu par apvienojamām saistībām. Abu izmaiņu aprakstam tiek izmantots vecākais apņemšanās ziņojums.

Izpildīt (-x):

Opcija exec ļauj palaist patvaļīgas čaulas komandas pret apņemšanos.

Pārtraukums (-b):

Pārrāvuma opcija aptur bāzes atjaunošanu pareizā pozīcijā. Tas turpinās bāzēt vēlāk ar ' git rebase --turpināt ' pavēli.

Nomest (-d):

Nomešanas opcija tiek izmantota, lai noņemtu apņemšanos.

Etiķete (-l):

Etiķetes opcija tiek izmantota, lai atzīmētu pašreizējo galvas pozīciju ar nosaukumu.

Atiestatīt (-t):

Atiestatīšanas opcija tiek izmantota, lai atiestatītu galvu uz etiķeti.

java apakšvirknes piemērs

GitMerge pret Rebase

Visbiežāk sastopamais git lietotāja mulsinošais jautājums ir par to, kad izmantot apvienošanas komandu un kad izmantot rebase. Abas komandas ir līdzīgas, un abas tiek izmantotas, lai apvienotu dažādu repozitorija filiāļu veiktās saistības.

Bāzes atjaunošana nav ieteicama koplietotā filiālē, jo bāzes atjaunošanas process radīs nekonsekventas krātuves. Privātpersonām bāzes veidošana var būt noderīgāka nekā apvienošana. Ja vēlaties redzēt visu vēsturi, izmantojiet sapludināšanu. Sapludināšana izseko visu saistību vēsturi, savukārt rebase pārraksta jaunu.

Git rebase komandas tiek uzskatītas par git sapludināšanas alternatīvu. Tomēr tiem ir dažas būtiskas atšķirības:

Git Merge Git Rebase
Apvienošana rada galīgo saistību apvienošanas laikā. Git rebase nerada nekādas saistības pārbāzēšanas laikā.
Tas apvieno visas saistības kā vienu apņemšanos. Tas izveido lineāru saistību izpildes celiņu.
Tas rada grafisku vēsturi, kuru varētu būt nedaudz sarežģīti saprast. Tas rada lineāru vēsturi, ko var viegli saprast.
Ir droši apvienot divas filiāles. Git 'rebase' nodarbojas ar smagu darbību.
Apvienošanu var veikt gan publiskajās, gan privātajās filiālēs. Tā ir nepareiza izvēle izmantot pārbāzi valsts filiālēs.
Sapludināšana integrē līdzekļa filiāles saturu ar galveno zaru. Tātad galvenā filiāle tiek mainīta, un līdzekļa filiāles vēsture paliek nemainīga. Galvenā atzara bāzēšana var ietekmēt līdzekļa zaru.
Apvienošana saglabā vēsturi. Atkārtota bāzēšana pārraksta vēsturi.
Git merge parāda visus konfliktus vienlaikus. Git rebase piedāvā konfliktus pa vienam.