Git

Kako Git Rebase

Kako Git Rebase
git rebase je pripomoček za spajanje, tako kot git merge. Toda način njihovega dela je drugačen.

V tem članku bom govoril o tem, kako deluje Git rebase, razlike med Git rebase in Git merge ter kako delati z Git rebase. Torej, začnimo.

Git Rebase:

Recimo, da imate shrambo Git z ukazi A, B, C v mojster podružnica. Nato ste ustvarili novo vejo neka veja in dodal 2 nova zaveza D in E do neka veja podružnica.

Slika 1: zgodovina začetne odobritve.

Zdaj, recimo, ste pozabili nekaj dodati v mojster podružnica. Torej, vrnite se v mojster in dodajte novo objavo G do mojster podružnica. Vaša git zgodovina bi morala izgledati takole.

Slika 2: zgodovina urejanja po dodajanju zaveza G v glavni veji.

Vse izgleda dobro. Zdaj, če ste želeli vse spremembe, ki ste jih naredili v neka veja biti podružnica v mojster podružnico, lahko združite neka veja podružnica do mojster podružnica. To je tisto, kar git združiti naredi.

Kaj pa, če želite prevzeti obveznost G na voljo v neka veja podružnica? No, za to lahko uporabite git rebase.

Iz zgodovine odobritev na sliki 2 lahko vidite, da je veja neka veja začne se od prevzema C. Če naredite git rebase na neka veja, potem bi se začelo s prevzemom G kot je prikazano na sliki 3 spodaj. Upoštevajte, da je vsebina objave D in E se bo spremenil tudi po operaciji preoblikovanja. Obveze D in E bo vključeval spremembe v objavi G. Zato sem dodal * pred prevzemom D in E.

Če želite vedeti, kako bi izgledala zgodovina predavanja, če bi jo združil, si oglejte sliko 4. Vključil sem ga samo zato, da ga boste lahko primerjali z git rebase.

Slika 4: zgodovina urejanja, če je bil uporabljen git merge.

Zdaj, ko veste, kaj je git rebase, kakšna je razlika med git rebase in git merge ter zakaj se je git rebase uporabljal, vam bom pokazal, kako ga uporabljati, v naslednjem oddelku tega članka spodaj.

Potek dela Git Rebase:

V tem razdelku bom ustvaril novo shrambo git v svojem lokalnem računalniku in vam pokazal, kako deluje git rebase. Priporočam, da dobro razumete git rebase, preden ga uporabite v svojem projektu.

Najprej ustvarite novo skladišče Git rebase-demo / v računalniku, kot sledi:

$ git init rebase-demo

Zdaj se pomaknite do rebase-demo / imenik, kot sledi:

$ cd rebase-demo /

Zdaj ustvarite novo datoteko preskus.txt kot sledi:

$ echo "A"> test.txt

Preizkus.Datoteka txt vsebuje samo eno vrstico A. Recimo, da je to vaša začetna koda projekta.

Zdaj spremembe zavežite na naslednji način:

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

Zdaj dodajte še eno vrstico B do preskus.txt datoteke, kot je prikazano na spodnjem posnetku zaslona.

Zdaj spremembe zavežite na naslednji način:

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

Zdaj pa dodamo še vrstico C v preskus.txt mapa.

Spremembe zavežite tudi na naslednji način:

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

Zdaj mora biti zgodovina predaj glavne veje videti tako:

$ git log --oneline

Zdaj, recimo, imate nekaj novih idej, ki jih želite preizkusiti. Torej, ustvarimo in si oglejte novo vejo nova funkcija kot sledi:

$ git checkout -b nova funkcija

Zdaj dodajte svojo novo idejo (vrstica D recimo) do preskus.txt mapa.

Zdaj spremembe zavežite na naslednji način:

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

Zdaj dodajte vrstico E v preskus.txt mapa.

Spremembe zavežite na naslednji način:

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

Zdaj, zgodovina predaje nova funkcija podružnica mora izgledati tako:

$ git log --oneline

Oglejte si, kako so zaveze v vrstnem redu A < B < C < D < E?

Zdaj se spomnite, da ste pozabili nekaj dodati v mojster podružnica, v kateri ste tudi vi želeli biti nova funkcija podružnica! Torej, odjava pri mojster podružnica.

Na koncu vrstice sem dodal novo vrstico preskus.txt datoteko, kot lahko vidite.

Zdaj spremembe zavežite na naslednji način:

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

Zdaj, zgodovina predaje mojster podružnica mora izgledati tako.

A < B < C < G

Zdaj, da prenovimo zaveze iz mojster podružnica do nova funkcija podružnica, prva odjava do nova funkcija podružnica.

$ git checkout novost

Zdaj naredite git preoblikovanje mojster podružnica, kot sledi:

$ git rebase master

Nekateri spoji združujejo! To popravimo.

No, spremembe, ki sem jih naredil v zavezi G in D so med seboj v nasprotju. Oboje želim obdržati.

Po odpravi konflikta spajanja, preskus.txt datoteka naj izgleda tako:

Zdaj dodajte spremembe na uprizoritveno območje, kot sledi:

$ git add .

Zdaj nadaljujte s ponovno zbirko podatkov, kot sledi:

$ git rebase --nastavi

Še en konflikt združitve! No, to se lahko zgodi. Rebase spremeni zgodovino predavanja git. Takšne stvari so torej pričakovane.

Zdi se, da postopek spajanja ni uspel zaradi nekaterih praznih vrstic. To popravimo.

Po odpravi konflikta spajanja, preskus.txt datoteka naj izgleda takole.

Zdaj dodajte spremembe na uprizoritveno območje, kot sledi:

$ git add .

Zdaj nadaljujte z operacijo ponovne zbirke podatkov, kot sledi:

$ git rebase --nastavi

Git rebase je končan.

Kot lahko vidite, se zgodovina predaj veje nove funkcije posodobi. Zdaj je zgodovina predaj naslednja:

A < B < C < G < D < E

Tako kot je bilo pričakovano.

Konec preskus.txt datoteka naj izgleda takole.

Git rebase je močno orodje. Nikoli pa je ne smete uporabljati v skupnih skladiščih Git. Uporabljajte ga samo v skladiščih Git, v katerih delate. V nasprotnem primeru se boste na poti srečevali z veliko težavami.

Torej, tako uporabljate git rebase. Hvala, ker ste prebrali ta članek.

Kako namestiti League Of Legends na Ubuntu 14.04
Če ste ljubitelj League of Legends, je to priložnost, da preizkusite League of Legends. Upoštevajte, da LOL podpira PlayOnLinux, če uporabljate Linux....
Namestite najnovejšo strategijo igre OpenRA v Ubuntu Linux
OpenRA je Libre / Free Real Time strateški stroj, ki poustvarja zgodnje igre Westwood, kot je klasična Command & Conquer: Red Alert. Porazdeljeni modi...
Namestite najnovejši Dolphin Emulator za Gamecube & Wii v Linux
Dolphin Emulator vam omogoča igranje izbranih iger Gamecube in Wii na osebnih računalnikih Linux (PC). Dolphin Emulator je prosto dostopen in odprtok...