Git

Kako Git Rebase

Kako Git Rebase
git rebase je uslužni program za spajanje kao i git spajanje. Ali način na koji rade je drugačiji.

U ovom ću članku govoriti o tome kako Git rebase radi, razlikama između Git rebase i Git merge te kako raditi s Git rebaseom. Pa, krenimo.

Git Rebase:

Recimo, imate Git spremište s komitovima A, B, C u ovladati; majstorski podružnica. Zatim ste stvorili novu granu neka grana i dodao 2 nova predavanja D i E prema neka grana podružnica.

Slika 1: početna povijest urezivanja.

Recimo, zaboravili ste dodati nešto u ovladati; majstorski podružnica. Dakle, vratite se na ovladati; majstorski ogranak i dodajte novi predaj G prema ovladati; majstorski podružnica. Vaša git povijest trebala bi izgledati kako slijedi.

Slika 2: povijest urezivanja nakon dodavanja urezivanja G u glavnoj grani.

Sve izgleda dobro. Sada, ako ste željeli sve promjene koje ste unijeli u neka grana grana biti u ovladati; majstorski grana, možete spojiti neka grana grana do ovladati; majstorski podružnica. To je ono što je git sjediniti čini.

Što ako želite predati G biti dostupan u neka grana podružnica? Pa, za to možete koristiti git rebase.

Iz povijesti urezivanja na slici 2 možete vidjeti da je grana neka grana počinje od predavanja C. Ako napravite git rebase na neka grana, tada bi krenulo od predavanja G kako je prikazano na slici 3 dolje. Imajte na umu da je sadržaj urezivanja D i E promijenit će se i nakon operacije ponovne baze podataka. Obveze D i E uključivat će promjene u predavanju G. Zbog toga sam dodao * simbol prije urezivanja D i E.

Ako želite znati kako bi izgledala povijest urezivanja ako bih je spojio, pogledajte sliku 4. Uključio sam ga samo kako biste ga mogli usporediti s git rebaseom.

Slika 4: povijest predavanja ako je korišteno git merge.

Sad kad znate što je git rebase, razlika između git rebase i git merge i zašto se git rebase koristi, pokazat ću vam kako ga koristiti u sljedećem odjeljku ovog članka u nastavku.

Tok rada Git Rebasea:

U ovom odjeljku stvorit ću novo git spremište na svom lokalnom računalu i pokazati vam kako funkcionira git rebase. Preporučujem vam da dobro razumijete git rebase prije nego što ga primijenite na svom projektu.

Prvo stvorite novo Git spremište rebase-demo / na računalu kako slijedi:

$ git init rebase-demo

Sada idite na rebase-demo / direktorij kako slijedi:

$ cd rebase-demo /

Sada stvorite novu datoteku test.txt kako slijedi:

$ echo "A"> test.txt

Ispit.txt datoteka sadrži samo jedan redak A. Recimo, ovo je vaš početni kod projekta.

Sada izvršite promjene na sljedeći način:

$ git dodaj .
$ git commit -m 'A'

Sada dodajte još jedan redak B prema test.txt datoteku kao što je prikazano na snimci zaslona u nastavku.

Sada izvršite promjene na sljedeći način:

$ git dodaj .
$ git commit -m 'B'

Sada, dodajte još jedan redak C na test.txt datoteka.

Također, izvršite promjene na sljedeći način:

$ git dodaj .
$ git commit -m 'C'

Sada bi povijest urezivanja glavne grane trebala izgledati kako slijedi:

$ git log --oneline

Sad, recimo, imate nekoliko novih ideja koje želite isprobati. Dakle, kreirajmo i odjavimo novu granu nova značajka kako slijedi:

$ git checkout -b nova značajka

Sada dodajte svoju novu ideju (linija D recimo) do test.txt datoteka.

Sada izvršite promjene na sljedeći način:

$ git dodaj .
$ git commit -m 'D'

Sada dodajte redak E u test.txt datoteka.

Izvršite promjene na sljedeći način:

$ git dodaj .
$ git commit -m 'E'

Sada, povijest urezivanja nova značajka grana bi trebala izgledati kako slijedi:

$ git log --oneline

Pogledajte kako su obveze prema redoslijedu A < B < C < D < E?

Sad se sjećate da ste zaboravili dodati nešto u ovladati; majstorski podružnica u kojoj ste također željeli biti nova značajka podružnica! Dakle, plaćanje na ovladati; majstorski podružnica.

Dodao sam novi redak na kraju test.txt datoteku kao što vidite.

Sada izvršite promjene na sljedeći način:

$ git dodaj .
$ git commit -m 'G'

Sada, povijest urezivanja ovladati; majstorski grana bi trebala izgledati ovako.

A < B < C < G

Sada, za ponovnu bazu obveza iz ovladati; majstorski grana do nova značajka podružnica, prva naplata do nova značajka podružnica.

$ git checkout nova značajka

Sada napravite git rebase baze podataka ovladati; majstorski grana kako slijedi:

$ git rebase master

Neki sukob spajanja! Popravimo to.

Pa, promjene koje sam napravio u obvezi G i D međusobno se sukobljavaju. Želim zadržati oboje.

Nakon popravljanja sukoba spajanja, test.txt datoteka bi trebala izgledati kako slijedi:

Sada dodajte promjene na scensko područje kako slijedi:

$ git dodaj .

Sada nastavite s ponovnom bazom podataka kako slijedi:

$ git rebase --nastavi

Još jedan sukob spajanja! Pa, ovo se može dogoditi. Rebase mijenja povijest git predavanja. Dakle, ovakve stvari se očekuju.

Čini se da postupak spajanja nije uspio zbog nekih praznih redaka. Popravimo to.

Nakon popravljanja sukoba spajanja, test.txt datoteka bi trebala izgledati kako slijedi.

Sada dodajte promjene na scensko područje kako slijedi:

$ git dodaj .

Sada nastavite s ponovnom bazom podataka kako slijedi:

$ git rebase --nastavi

Git rebase je završen.

Kao što vidite, povijest urezivanja grane nove značajke se ažurira. Sada je povijest urezivanja sljedeća:

A < B < C < G < D < E

Baš kao što se i očekivalo.

Konačni test.txt datoteka bi trebala izgledati kako slijedi.

Git rebase je moćan alat. Ali, nikada ga ne biste trebali koristiti na zajedničkim Git repozitorijima. Koristite ga samo na Git spremištima na kojima radite. Inače, suočit ćete se s puno problema na putu.

Dakle, tako koristite git rebase. Hvala što ste pročitali ovaj članak.

Najbolje aplikacije za mapiranje gamepada za Linux
Ako volite igrati igre na Linuxu s gamepadom umjesto tipičnim sustavom za unos tipkovnice i miša, za vas postoji nekoliko korisnih aplikacija. Mnoge r...
Korisni alati za Linux igrače
Ako volite igrati igre na Linuxu, velika je vjerojatnost da ste možda koristili aplikacije i uslužne programe poput Wine, Lutris i OBS Studio za pobol...
HD Remastered igre za Linux koje ranije nisu imale Linux izdanje
Mnogi programeri i izdavači igara dolaze s HD remasterom starih igara kako bi produžili životni vijek franšize, molimo obožavatelje da zatraže kompati...