Git

Kuidas Gase Rebase

Kuidas Gase Rebase
git uuesti on ühendamise utiliit nagu git ühendada. Kuid nende tööviis on erinev.

Selles artiklis räägin sellest, kuidas Git rebase töötab, Git rebase ja Git erinevused ühinevad ning kuidas Git rebase'iga töötada. Alustame siis.

Git Rebase:

Oletame, et teil on Git'i hoidla koos toimingutega A, B, C aastal meister haru. Seejärel lõite uue haru kellegi haru ja lisas 2 uut kohustust D ja E Euroopa kellegi haru haru.

Joonis 1: esialgne kohustuste ajalugu.

Oletame, et unustasite siia midagi lisada meister haru. Nii et lähete tagasi meister haru ja lisage uus kohustus G Euroopa meister haru. Teie git ajalugu peaks välja nägema järgmine.

Joonis 2: pühenduse ajalugu pärast pühenduse G lisamist peaharus.

Kõik näeb hea välja. Kui soovite nüüd kõiki muudatusi, mida olete sellesse teinud kellegi haru filiaal olla meister haru, saate selle ühendada kellegi haru haru meister haru. See on see, mis git ühendada tegema.

Mis siis, kui soovite pühenduda G olema kättesaadav kellegi haru haru? Noh, saate selleks kasutada git rebase'i.

Joonisel 2 tehtud kohustuste ajaloost näete, et see haru kellegi haru algab pühendumisest C. Kui teete git taaskäivituse sisse kellegi haru, siis algaks see kohustusest G nagu on näidatud joonisel 3 allpool. Pange tähele, et kohustuse sisu D ja E muutub ka pärast taaskäivitamist. Pühendub D ja E sisaldab muudatusi kohustuses G. Sellepärast lisasin * enne pühendumist D ja E.

Kui soovite teada, kuidas käitumisajalugu välja näeks, kui ma selle ühendaksin, siis vaadake joonist 4. Lisasin selle lihtsalt selleks, et saaksite seda võrrelda git rebase'iga.

Joonis 4: tehke ajalugu, kui kasutati gitiühendust.

Nüüd, kui teate, mis on git rebase, erinevus git rebase ja git ühinemise vahel ja miks git rebase seda kasutas, näitan teile, kuidas seda kasutada, selle artikli järgmises jaotises allpool.

Git Rebase'i töövoog:

Selles jaotises loon oma kohalikus arvutis uue git-hoidla ja näitan teile, kuidas git-i taaskäivitamine töötab. Enne projekti rakendamist soovitan teil git rebase'ist hästi aru saada.

Kõigepealt looge uus Giti hoidla rebase-demo / arvutis järgmiselt:

$ git init taaskäivitage demo

Nüüd navigeerige jaotisesse rebase-demo / kataloogi järgmiselt:

$ cd rebase-demo /

Nüüd looge uus fail test.txt järgnevalt:

$ echo "A"> test.txt

Test.txt-fail sisaldab ainult ühte rida A. Oletame, et see on teie esialgne projekti kood.

Tehke muudatused järgmiselt:

$ git add .
$ git pühendus -m 'A'

Nüüd lisage veel üks rida B Euroopa test.txt fail, nagu on näidatud alloleval ekraanipildil.

Tehke muudatused järgmiselt:

$ git add .
$ git pühendus -m 'B'

Lisame nüüd reale veel ühe rea C test.txt faili.

Tehke muudatused ka järgmiselt:

$ git add .
$ git pühendu -m 'C'

Nüüd peaks põhiharu pühendumislugu välja nägema järgmine:

$ git log - oneline

Oletame, et nüüd on teil mõned uued ideed, mida soovite proovida. Niisiis, loome ja maksame uue haru juurde uus funktsioon järgnevalt:

$ git checkout -b uus funktsioon

Nüüd lisage oma uus idee (rida D ütleme) test.txt faili.

Tehke muudatused järgmiselt:

$ git add .
$ git pühendus -m 'D'

Nüüd lisage joonele rida E test.txt faili.

Tehke muudatused järgmiselt:

$ git add .
$ git pühendus -m 'E'

Nüüd, pühendunud ajalugu uus funktsioon haru peaks välja nägema järgmine:

$ git log - oneline

Vaadake, kuidas kohustused on järjekorras A < B < C < D < E?

Nüüd mäletate, et unustasite midagi lisada meister filiaal, milles tahtsite olla ka uus funktsioon haru! Niisiis, kassasse meister haru.

Lisasin uue rea rea ​​lõppu test.txt fail, nagu näete.

Tehke muudatused järgmiselt:

$ git add .
$ git pühendama -m 'G'

Nüüd, pühendunud ajalugu meister haru peaks välja nägema selline.

A < B < C < G

Nüüd, kui soovite uuesti teha kohustusi meister haru uus funktsioon haru, kõigepealt kassasse uus funktsioon haru.

$ git kassas uus funktsioon

Tehke nüüd git uuesti meister haru järgmiselt:

$ git rebase master

Mõned ühendavad konflikti! Parandame selle.

Noh, muudatused, mida olen pühendumises teinud G ja D on omavahel vastuolus. Ma tahan mõlemad need alles jätta.

Pärast ühinemiskonflikti lahendamist test.txt fail peaks välja nägema järgmiselt:

Nüüd lisage muudatused lavastusalale järgmiselt:

$ git add .

Nüüd jätkake taaskäivitamist järgmiselt:

$ git rebase - jätkake

Järjekordne ühinemiskonflikt! Noh, see võib juhtuda. Rebase muudab gititöö ajalugu. Niisiis, selliseid asju on oodata.

Tundub, et ühinemisprotsess nurjus mõne tühja rea ​​tõttu. Parandame selle.

Pärast ühinemiskonflikti lahendamist test.txt fail peaks välja nägema järgmiselt.

Nüüd lisage muudatused lavastusalale järgmiselt:

$ git add .

Nüüd jätkake taaskäivitamist järgmiselt:

$ git rebase - jätkake

Giti taaskäivitamine on lõppenud.

Nagu näete, värskendatakse uue funktsiooniga haru kohustuste ajalugu. Nüüd on kohustuste ajalugu järgmine:

A < B < C < G < D < E

Täpselt nii nagu arvata oli.

Finaal test.txt fail peaks välja nägema järgmiselt.

Git rebase on võimas tööriist. Kuid te ei tohiks seda kunagi kasutada ühistes Giti hoidlates. Kasutage seda ainult Giti hoidlates, kus töötate ainult teie. Vastasel juhul seisate sel teel silmitsi paljude probleemidega.

Nii kasutate git rebase'i. Täname selle artikli lugemise eest.

Vulkan Linuxi kasutajatele
Iga uue põlvkonna graafikakaartidega näeme, et mängude arendajad ületavad graafilise truuduse piire ja jõuavad fotorealismile ühe sammu lähemale. Kuid...
OpenTTD vs Simutrans
Oma transpordisimulatsiooni loomine võib olla lõbus, lõõgastav ja äärmiselt köitev. Sellepärast peate endale meelepärase leidmiseks kindlasti proovima...
OpenTTD õpetus
OpenTTD on seal üks populaarsemaid ärisimulatsioonimänge. Selles mängus peate looma suurepärase transpordiettevõtte. Alustate siiski alguses umbes 190...