logo

Git Rebase

Rebasing on prosessi, jossa sitoumuksia sovelletaan uudelleen toisen perusmatkan päälle. Sitä käytetään sitoumusten sarjan soveltamiseen erillisistä haaroista lopulliseen sitoumukseen. Se on vaihtoehto git merge -komennolle. Se on lineaarinen sulautumisprosessi.

Gitissä termiä rebase kutsutaan prosessiksi, jossa sitoumusten sarja siirretään tai yhdistetään uudeksi perussitoumukseksi. Uudelleenpohjaus on erittäin hyödyllistä, ja se visualisoi prosessin ominaisuushaaroittavan työnkulun ympäristössä.

Haara on hyvä perustaa uudelleen ennen sen yhdistämistä.

Git Rebase

Yleensä se on vaihtoehto git merge -komennolle. Yhdistäminen on aina eteenpäin muuttuva tietue. Vertailun vuoksi rebase on vaikuttava historian uudelleenkirjoitustyökalu gitissä. Se yhdistää eri sitoumukset yksitellen.

Oletetaan, että olet tehnyt kolme sitoumusta päähaarassasi ja kolme toisessa haarassasi nimeltä testi. Jos yhdistät tämän, se yhdistää kaikki sitoumukset kerralla. Mutta jos perustat sen uudelleen, se yhdistetään lineaarisesti. Harkitse alla olevaa kuvaa:

Git Rebase

Yllä oleva kuva kuvaa kuinka git rebase toimii. Päähaaran kolme toimitusta yhdistetään lineaarisesti testihaaran sitoumusten kanssa.

Yhdistäminen on yksinkertaisin tapa integroida haarat. Se suorittaa kolmisuuntaisen yhdistämisen kahden viimeisimmän haaratoimituksen välillä.

Kuinka Rebase

Kun teit joitain sitoumuksia ominaisuushaarassa (testihaarassa) ja osan päähaarassa. Voit määrittää uudelleen minkä tahansa näistä haaroista. Käytä git log -komentoa muutosten seuraamiseen (toimitushistoria). Kassalla haluttuun haaraan, jonka haluat perustaa uudelleen. Suorita nyt rebase-komento seuraavasti:

Syntaksi:

 $git rebase 

Jos haarassa on ristiriitoja, ratkaise ne ja jatka muutoksia suorittamalla alla olevat komennot:

 $ git status 

Sitä käytetään tilan tarkistamiseen,

 $git rebase --continue 

Yllä olevaa komentoa käytetään tekemiesi muutosten jatkamiseen. Jos haluat ohittaa muutoksen, voit ohittaa seuraavasti:

sara ali khan ikä
 $ git rebase --skip 

Kun pohjamaalaus on valmis. Työnnä arkisto alkuperään. Harkitse alla olevaa esimerkkiä ymmärtääksesi git merge -komennon.

Oletetaan, että sinulla on haara sananvalta testi 2 jonka parissa työskentelet. Olet nyt test2-haarassa ja teit joitain muutoksia projektin tiedostoon uusi tiedosto1.txt .

Lisää tämä tiedosto arkistoon:

 $ git add newfile1.txt 

Tee nyt muutokset. Käytä alla olevaa komentoa:

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

Tulos näyttää tältä:

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

Vaihda haara isäntänä:

 $ git checkout master 

Lähtö:

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

Nyt olet päähaaralla. Olen lisännyt muutokset tiedostooni, sanoo uusi tiedosto.txt . Alla olevaa komentoa käytetään tiedoston lisäämiseen arkistoon.

 $ git add newfile.txt 

Sitouta tiedosto nyt muutoksia varten:

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

Lähtö:

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

Tarkista lokihistoria suorittamalla alla oleva komento.

 $ git log --oneline 

Lähtö:

Git Rebase

Kuten näemme lokihistoriassa, päähaarassa on uusi sitoumus. Jos haluan muuttaa test2-haaraani, mitä minun pitäisi tehdä? Katso alla oleva rebase-haara skenaario:

tekstin kokoinen lateksi

Rebasen sivuliike

Jos meillä on useita sitoumuksia eri haaroista ja haluamme yhdistää ne yhdeksi. Meillä on kaksi vaihtoehtoa joko yhdistää se tai perustaa se uudelleen. On hyvä perustaa haarasi uudelleen.

Yllä olevasta esimerkistä olemme sitoutuneet päähaaraan ja haluamme perustaa sen uudelleen test2-haaraan. Katsotaanpa alla olevia komentoja:

 $ git checkout test2 

Tämä komento käynnistää test2-haaran isännästä.

Lähtö:

 Switched to branch 'test2.' 

Nyt olet test2-haarassa. Näin ollen voit perustaa test2-haaran uudelleen päähaaraan. Katso alla oleva komento:

 $ git rebase master 

Tämä komento perustaa test2-haaran uudelleen ja näkyy muodossa Haetaan: uusi sitoumus test2-haaraan . Harkitse alla olevaa tulosta:

Lähtö:

Git Rebase

Git Interactive Rebase

Git helpottaa Interactive Rebasen avulla; se on tehokas työkalu, joka mahdollistaa erilaisia ​​toimintoja, kuten muokata, kirjoittaa uudelleen, järjestää uudelleen, ja enemmän olemassa olevista sitoumuksista. Interaktiivista Rebasea voi käyttää vain sillä hetkellä uloskirjautuneessa haarassa. Aseta siksi paikallinen HEAD-haara sivupalkkiin.

Git interactive rebase voidaan kutsua rebase-komennolla, kirjoita vain -i yhdessä rebase-komennon kanssa. tässä' i ' tarkoittaa interaktiivista. Tämän komennon syntaksi on annettu alla:

Syntaksi:

 $ git rebase -i 

Siinä luetellaan kaikki käytettävissä olevat interaktiiviset vaihtoehdot.

Lähtö:

Git Rebase

Annetun lähdön jälkeen se avaa editorin, jossa on käytettävissä olevat vaihtoehdot. Harkitse alla olevaa tulosta:

Lähtö:

Git Rebase

Kun suoritamme git interactive rebase -komennon, se avaa oletustekstieditorisi yllä olevalla lähdöllä.

Sen sisältämät vaihtoehdot on lueteltu alla:

  • Valita
  • Sana uudelleen
  • Muokata
  • Squash
  • Korjata
  • Exec
  • Tauko
  • Pudota
  • Label
  • Nollaa
  • Yhdistää

Yllä olevat vaihtoehdot suorittavat erityistehtävänsä git-rebasen kanssa. Ymmärretään jokainen näistä vaihtoehdoista lyhyesti.

Valitse (-p):

merkkijonojen jakaminen c++

Valitse tässä, että sitoumus sisältyy. Sitoumusten järjestys riippuu valintakomentojen järjestyksestä uudelleenkäynnistyksen aikana. Jos et halua lisätä toimitusta, sinun on poistettava koko rivi.

Sana uudelleen (-r):

Sana uudelleen on melko samanlainen kuin pick-komento. Sanoi uudelleen -vaihtoehto keskeytti uudelleenperustamisprosessin ja tarjoaa mahdollisuuden muuttaa vahvistusviestiä. Se ei vaikuta sitoumuksen tekemiin muutoksiin.

Muokkaus(t):

Muokkausvaihtoehto mahdollistaa sitoumuksen muuttamisen. Muutosvälineet, sitoumukset voidaan lisätä tai muuttaa kokonaan. Voimme myös tehdä lisäsitoumuksia ennen rebase jatkaa komentoa. Sen avulla voimme jakaa suuren sitoumuksen pienempään sitoumukseen; Lisäksi voimme poistaa sitoumuksessa tehdyt virheelliset muutokset.

Squash (-s):

Squash-vaihtoehdon avulla voit yhdistää kaksi tai useampia sitoumuksia yhdeksi toimitukseksi. Sen avulla voimme myös kirjoittaa uuden vahvistusviestin muutosten kuvailemiseksi.

Korjaus (-f):

Se on melko samanlainen kuin squash-komento. Se hylkäsi viestin yhdistettävästä sitoumuksesta. Vanhempaa toimitusviestiä käytetään kuvaamaan molemmat muutokset.

Suorita (-x):

Exec-vaihtoehdon avulla voit suorittaa mielivaltaisia ​​komentotulkkikomentoja vahvistusta vastaan.

Katko (-b):

Katkaisuvaihtoehto pysäyttää uudelleenpohjan oikeaan kohtaan. Se jatkaa perustamista myöhemmin ' git rebase --jatka ' komento.

Pudota (-d):

Pudotusvaihtoehtoa käytetään sitomisen poistamiseen.

Tunniste (-l):

Tarravaihtoehtoa käytetään merkitsemään nykyinen pään sijainti nimellä.

Nollaa (-t):

Reset-vaihtoehtoa käytetään pään palauttamiseen tarraan.

pitkä nauhalle

GitMerge vs. Rebase

Git-käyttäjän yleisin hämmentävä kysymys on, milloin käyttää merge-komentoa ja milloin käyttää rebasea. Molemmat komennot ovat samanlaisia, ja molempia käytetään yhdistämään arkiston eri haarojen tekemät sitoumukset.

Uudelleenpohjaistamista ei suositella jaetussa haarassa, koska uudelleenpohjausprosessi luo epäjohdonmukaisia ​​tietovarastoja. Yksityishenkilöille perustaminen voi olla hyödyllisempää kuin yhdistäminen. Jos haluat nähdä koko historian, sinun tulee käyttää yhdistämistä. Merge seuraa koko toimitushistoriaa, kun taas rebase kirjoittaa uuden.

Git rebase -komennot sanotaan git merge -vaihtoehdoksi. Niillä on kuitenkin joitain keskeisiä eroja:

Git Merge Git Rebase
Yhdistäminen luo lopullisen sitoumuksen yhdistämisen yhteydessä. Git rebase ei luo sitoumusta rebase-korjauksessa.
Se yhdistää kaikki sitoumukset yhdeksi sitoumukseksi. Se luo lineaarisen siirtotien.
Se luo graafisen historian, jonka ymmärtäminen voi olla hieman monimutkaista. Se luo lineaarisen historian, joka on helposti ymmärrettävissä.
On turvallista yhdistää kaksi haaraa. Git 'rebase' käsittelee vakavaa toimintaa.
Yhdistäminen voidaan suorittaa sekä julkisilla että yksityisillä sivukonttoreilla. On väärä valinta käyttää uudelleenpohjaista julkisia osia.
Yhdistäminen integroi ominaisuushaaran sisällön päähaaran kanssa. Päähaara muuttuu ja ominaisuushaaran historia pysyy johdonmukaisena. Päähaaran uudelleen perustaminen voi vaikuttaa ominaisuuden haaraan.
Yhdistäminen säilyttää historian. Rebasing kirjoittaa historian uudelleen.
Git merge esittää kaikki ristiriidat kerralla. Git rebase esittää ristiriidat yksitellen.