Ponovno baziranje je postupak za ponovnu primjenu obveza povrh drugog osnovnog putovanja. Koristi se za primjenu slijeda predaja iz različitih grana u konačnu predaju. To je alternativa naredbi git merge. To je linearni proces spajanja.
U Gitu se pojam rebase naziva procesom premještanja ili kombiniranja niza obveza u novu osnovnu predaju. Ponovno baziranje je vrlo korisno i vizualiziralo je proces u okruženju tijeka rada grananja značajki.
Dobro je ponovno postaviti svoju granu prije spajanja.
Općenito, to je alternativa naredbi git merge. Spajanje je uvijek zapis koji se mijenja naprijed. U usporedbi, rebase je uvjerljiv alat za ponovno pisanje povijesti u git-u. Spaja različite predaje jednu po jednu.
Pretpostavimo da ste napravili tri predanja u svojoj glavnoj grani i tri u drugoj grani pod nazivom test. Ako ovo spojite, tada će spojiti sve predaje u jednom trenutku. Ali ako ga ponovno postavite, tada će se spojiti na linearan način. Razmotrite sliku u nastavku:
Gornja slika opisuje kako funkcionira git rebase. Tri predanja glavne grane linearno se spajaju s predajama testne grane.
Spajanje je najjednostavniji način integracije grana. Izvodi trosmjerno spajanje između dva posljednja predanja grananja.
Kako ponovno bazirati
Kada ste izvršili neke obveze na grani značajke (testna grana), a neke u glavnoj grani. Možete promijeniti bazu bilo koje od ovih grana. Koristite naredbu git log za praćenje promjena (povijest predaje). Odjavite se do željene poslovnice koju želite promijeniti. Sada izvedite naredbu rebase na sljedeći način:
Sintaksa:
$git rebase
Ako postoje neki sukobi u grani, riješite ih i izvršite donje naredbe za nastavak promjena:
$ git status
Koristi se za provjeru stanja,
$git rebase --continue
Gornja naredba koristi se za nastavak promjena koje ste napravili. Ako želite preskočiti promjenu, možete je preskočiti na sljedeći način:
np točka
$ git rebase --skip
Kada je rebaziranje završeno. Gurnite spremište na izvorište. Razmotrite primjer u nastavku da biste razumjeli naredbu git merge.
Pretpostavimo da imate granu recimo test2 na kojem radite. Sada ste na grani test2 i napravili ste neke promjene u datoteci projekta nova datoteka1.txt .
Dodajte ovu datoteku u spremište:
$ git add newfile1.txt
Sada potvrdite promjene. Koristite donju naredbu:
$ git commit -m 'new commit for test2 branch.'
Izlaz će izgledati ovako:
[test2 a835504] new commitfor test2 branch 1 file changed, 1 insertion(+)
Prebaci granu na master:
$ git checkout master
Izlaz:
Switched to branch 'master.' Your branch is up to date with 'origin/master.'
Sada ste na glavnoj grani. Dodao sam promjene u svoju datoteku, kaže nova datoteka.txt . Donja naredba koristi se za dodavanje datoteke u repozitorij.
$ git add newfile.txt
Sada unesite datoteku za promjene:
$ git commit -m ' new commit made on the master branch.'
Izlaz:
[master 7fe5e7a] new commit made on master 1 file changed, 1 insertion(+) HiMaNshU@HiMaNshU-PC MINGW64 ~/Desktop/GitExample2 (master)
Za provjeru povijesti dnevnika, izvršite naredbu ispod.
$ git log --oneline
Izlaz:
Kao što možemo vidjeti u povijesti dnevnika, postoji novi commit u glavnoj grani. Ako želim ponovno postaviti svoju granu test2, što trebam učiniti? Pogledajte donji scenarij rebasiranja grane:
Rebase grana
Ako imamo mnogo obveza iz različitih grana i želimo ih spojiti u jednu. Da bismo to učinili, imamo dva izbora ili ga možemo spojiti ili ga ponovno bazirati. Dobro je ponovno postaviti svoju granu.
Iz gornjeg primjera, posvetili smo se glavnoj grani i želimo je ponovno bazirati na test2 grani. Pogledajmo donje naredbe:
$ git checkout test2
Ova naredba će vas prebaciti na granu test2 s mastera.
Izlaz:
Switched to branch 'test2.'
Sada ste na grani test2. Dakle, granu test2 možete ponovno bazirati s glavnom granom. Pogledajte naredbu u nastavku:
pretvaranje int u niz
$ git rebase master
Ova naredba će ponovno postaviti granu test2 i prikazat će se kao Primjena: novi commit na test2 grani . Razmotrite donji izlaz:
Izlaz:
Git Interactive Rebase
Git olakšava s Interactive Rebase; to je moćan alat koji omogućuje različite operacije poput urediti, prepisati, promijeniti redoslijed, i više o postojećim obvezama. Interactive Rebase može se raditi samo na trenutno odjavljenoj grani. Stoga postavite svoju lokalnu HEAD granu na bočnu traku.
Git interaktivni rebase može se pozvati naredbom rebase, samo upišite -i zajedno s rebase naredbom. ovdje ' i ' označava interaktivno. Sintaksa ove naredbe data je u nastavku:
Sintaksa:
$ git rebase -i
Prikazat će se sve dostupne interaktivne opcije.
Izlaz:
Nakon zadanog izlaza, otvorit će se editor s dostupnim opcijama. Razmotrite donji izlaz:
Izlaz:
Kada izvedemo naredbu git interactive rebase, ona će otvoriti vaš zadani uređivač teksta s gornjim izlazom.
Opcije koje sadrži navedene su u nastavku:
- Odabrati
- Preformulirajte
- Uredi
- Squash
- Popraviti
- Izv
- Pauza
- Pad
- Označiti
- Resetiraj
- Sjediniti
Gore navedene opcije obavljaju svoje specifične zadatke s git-rebase. Razmotrimo ukratko svaku od ovih opcija.
Odaberite (-p):
Pick ovdje stoji da je obveza uključena. Redoslijed obveza ovisi o redoslijedu odabira naredbi tijekom ponovnog baziranja. Ako ne želite dodati obvezu, morate izbrisati cijeli redak.
Preformulirajte (-r):
Reword je vrlo sličan pick naredbi. Opcija reword-a pauzirala je proces rebase-a i pruža priliku za promjenu poruke predaje. Ne utječe na promjene izvršene uvrštavanjem.
Uređivanje(a):
Opcija uređivanja omogućuje izmjenu obveza. Izmjena znači, obveze se mogu dodati ili u potpunosti promijeniti. Također možemo izvršiti dodatne obveze prije rebase continue naredbe. Omogućuje nam da podijelimo veliki commit u manji; štoviše, možemo ukloniti pogrešne promjene napravljene u predaji.
sortiranje na popisu u Javi
Squash (-ovi):
Opcija squash omogućuje vam kombiniranje dvaju ili više obveza u jednu predaju. Također nam omogućuje da napišemo novu poruku predaje za opisivanje promjena.
Popravak (-f):
Vrlo je slična naredbi squash. Odbacio je poruku o predaji koju treba spojiti. Starija poruka predaje koristi se za opis obje promjene.
Izvršni (-x):
Opcija exec omogućuje vam pokretanje proizvoljnih naredbi ljuske protiv predaje.
Stanka (-b):
Opcija prekida zaustavlja ponovno baziranje na samoj poziciji. Kasnije će nastaviti s rebaziranjem s ' git rebase --nastavi ' naredba.
Ispusti (-d):
Opcija drop koristi se za uklanjanje obveze.
Oznaka (-l):
Opcija oznake koristi se za označavanje trenutnog položaja glave imenom.
Reset (-t):
Opcija resetiranja koristi se za vraćanje glave na oznaku.
parcijalni derivat u lateksu
GitMerge protiv Rebase
Najčešće je zbunjujuće pitanje za git korisnike kada koristiti naredbu spajanja, a kada koristiti rebase. Obje naredbe su slične i obje se koriste za spajanje obveza koje su napravile različite grane repozitorija.
Ponovno baziranje se ne preporučuje u zajedničkoj grani jer će proces ponovnog baziranja stvoriti nekonzistentna spremišta. Za pojedince, ponovno baziranje može biti korisnije od spajanja. Ako želite vidjeti cijelu povijest, trebali biste koristiti spajanje. Merge prati cijelu povijest predaja, dok rebase prepisuje novu.
Git rebase naredbe rečeno je kao alternativa git merge. Međutim, oni imaju neke ključne razlike:
Git spajanje | Git Rebase |
---|---|
Spajanje stvara konačnu predaju pri spajanju. | Git rebase ne stvara nikakvu obavezu pri rebasiranju. |
Spaja sve predaje u jednu predaju. | Stvara linearnu stazu obveza. |
Stvara grafičku povijest koja može biti pomalo složena za razumijevanje. | Stvara linearnu povijest koju je lako razumjeti. |
Sigurno je spojiti dvije grane. | Git 'rebase' bavi se teškim operacijama. |
Spajanje se može izvesti i na javnim i na privatnim granama. | Pogrešan je izbor koristiti ponovno baziranje na javnim granama. |
Spajanje integrira sadržaj značajke grane s glavnom granom. Dakle, glavna grana je promijenjena, a povijest grana značajke ostaje dosljedna. | Ponovno baziranje glavne grane može utjecati na značajnu granu. |
Spajanjem se čuva povijest. | Ponovno baziranje ponovno piše povijest. |
Git merge predstavlja sve sukobe odjednom. | Git rebase prikazuje sukobe jedan po jedan. |