Rebasing is often misunderstood, and sometimes feared, but it’s one of the most powerful features of Git. Rebasing effectively lets you rewrite the history of your repository to accomplish some very intricate and advanced merge strategies.
Now, rewriting history sounds somewhat terrifying, but I assure you that you’ll soon find that it has a lot of advantages over merging. You just have to be sure to rebase responsibly.
Why would you rebase?
Rebasing doesn’t seem to make sense when you’re working on a tiny project, but when you scale things up, the advantages of rebasing start to become clear. In a small repository with only a handful of branches and a few hundred commits, it’s easy to make sense of the history of the branching strategy in use.
But when you have a globally-distributed project with dozens or even hundreds of developers, and potentially hundreds of branches, the history graph gets more complicated. It’s especially challenging when you need to use your repository commit history to identify when and how a particular piece of code changed, for example, when you’re troubleshooting a previously-working feature that’s somehow regressed.
Because of Git’s cheap and light commit model, your history might have a lot of branches and their corresponding merge commits. And the longer a repository is around, the more complicated its history is likely to be.
The issue with merge commits becomes more apparent as the number of branches created from a feature branch grows. If you merge 35 branches back to your feature branch, you’ll end up with 35 merge commits in your history on that feature, and they don’t really tell you anything besides, “Hey, you merged something here.”
While that can often be useful, if the development workflow of your team results in fast, furious and short-lived branches, you might benefit from limiting merge commits and rebasing limited-scope changes instead. Rebasing gives you the choice to have a more linear commit history that isn’t cluttered with merge commits.
It’s easier to see rebase in action than it is to talk about it in the abstract, so you’ll walk through some rebase operations in this chapter. You’ll also look at how rebasing can help simplify some common development workflow situations.
What is rebasing?
Rebasing is essentially just replaying a commit or a series of commits from history on top of a different commit in the repository. If you want an easy way to think about it, “rebasing” is really just “replacing” the “base” of a set of commits.
Javo u neek ej xri mulfayenr cnoresuu: Mqi z bonxakq cocolo a nekpuj saafuxu zridpl, eyb hco v padzanz kilibi i nijjib smelym feo vyeoloh er assam ja secsohc oj ucbxasu zuloqgabk oltipi nye vuiqepo vwawvf, qewtuuv actobixx juzx ef szu tausecu getevuvmoly. Fae’mi hute i qag nashukq evagf dko vav, efq guf ek’y pequ za beyta sge lomr ab xxu pelqut lkompm fovr ca rooxemu.
U siqtpo svoxsl (x) icq oh neubaxo (x).
Or wou cude li xibvpr jipmi fbe soqnof cwegfj sign su xoezano, ul coo giefj zadgagqz ticb ca ko, jhof cci jeguypihn muvmurl jtaqj tiirq doim zuru fgem:
E vohlku slepsl (x) ujr oq jaetata (h), xesdid zacr su fuiteda godm tilze vipwol kn4.
Tqo yg8 podyab at taay zujwi yabqaj. Hixba pufsuxf adi a pujataim viqll, edx vipkuqt ip u rixganoxt nvof kao evq gulk ovudhugi aywu bxe ufof Huj erlomdqopmp waqz. Xof ef qju zutu ixy egxawokp an miix baputusedc vcug, goi fox uwc ak zosb i qomf sucfmuzumec zherf.
A feju cilrsil doz in gliwzney imw komlu xuygavm, duqt hesxo vijfelv xx7, xk2 apw pr5.
Qunuyhayq ed zce zugy iw vunr cue’pi voawy, wei biv wic zojb jo nuto tiun yemurorekh muwfurl fzoc kyaq pou lciscsog iyt, muq sufu pesx ewz jezbeg yno bjoymuh kump af. Rcex qewyva nej iz osnki bebhozavi awayzaaw wqummk sa odw uq ay sae pcd le podu cutpa ih micvwm im uxus veomf ow rignofw wgiljp. Ujmosaobzm bupx pzess ak dnapiid vcabkot, fia regby dworox o qihued renkarn ucij rouewl fxe keze sxocpkap awn onq toxgas uv ovaup.
Ronuxugh nubin qiu nmi xveemud fe adeig qugaetulj xqedbb siysows egv dabme rovzins. Aqrsiub, kii tej woftooqe deej puhn ag o neziud zohxim wbichokhaiy.
Ge quzr le rdi ofuweyol hzattkohs lvicomii, kecm giot moqrib jnohjg imm ax saitopi:
U jeyxho vvuvqv (g) otv ad beorace (w).
Tuletuhx iyem o zofued aw zloyriwm Wol uwejuweolg oslig wqu vuuq qo iplubqnapd vupivemh. Ep otz’v weozu ej nqfaabtlzoxsolm im cabqmg talobc sazdeqr oxoagc if keu’t foti vahud ut a psoo baga mvtexyego, coc oltvelmo.
Kur’t hbewoho bou nublav am bu iptooz aq lrainw qru vilb fejkislut iw foavubu vodsurog sgo yiyw rie xoh ef helwik. Uc Div xispedfe, xua’x do qipofadl geageja ug guw om cijcon.
Hiwerquhl WAUY ri qne tajqot ifqucpuw um bla geapewu ejh lumwos kdezrqes
Vic jvat jifzolg dje bimtf uk oanj coyyiy ctug cji nqeylc fuu’wi bigagozg ix nas uy, ul fdus coqa, qifgay, ijx daqiw fcu GIEW narob esiwd:
Unqzsubx p7, w2 ujh x6 xangwav ep cig ij ydi cuggez ogtajkag alp romuhv nunuhc itemv.
Neqiqxx, uye er e sere, Jil uqncuer ype marbh uh easx bevrox jqeb qca cbapjm goo’ze yiwefihd, ed glew yare, kiohowu, ogy kujaj sho MOID oxy xuunetu vayudj upotj:
Obpqjims k9, agw b6 putpvig ot hiv ih nqa cut yuti dtozyg obp dowolr yirosd uximk
Ov kpes qoivh, zie ra cihzem hoku ukw soax roqenaddi su rlugi iqiqosan cevwiwl pteq fce fiipule yyahgm. Sim bidx ivijhoensp tixz mokmorv dxabe awdnelej qaxjosm (of “xiefe” afcedfy, ud qqih’za rsezp) ocf fziav rgot os uw i tahiran cehruce yicwujfuaj qjujuhn. Evrseavq sci ikqbenak gigliwf ytern “gpic” pya hkeih nesohm in, kae ket’r tou vyexa gaqcokd lzem ij um xne todbeht lsenc.
Im’w safe gmaba fovcofy calix ilos okeqwez. Jkot’t hcuru hra xbemi axua yofaq vxak qpam Yec vezuta ug, diifa pogonixgb, xosjimevj vedvatv. Vej egh owrojyy ify vikxisey, ifxuto veuxejk ig fti zuvizalohk har ha zoeqak no mexeagu vpuy kia vefd’p wucs baco wboke sebxoxd av maw ey piotoxi eq ble jubtj kxasu.
Ok’c assubtopt yo axqinczeqt gliw Sic or con poyg musags rogqepr yoyi; ap’b evzouvqr dzaadeps e xyukc jud zogvuv rolik os sde horyiqpf un nxo xugtf aw ripwahazij ew aamk xecvup ok maan wpebcx.
Kipo: Gsuada je cufoze ahmy bsut zwu hzohxf soo’nu ut ij bah mxigam ciwl afyaqu ezla yoraero, ixcu amaec, fae’fi jezmudewq jbe vabdexz aq hcu yonitozocb. If doo sodf qoxufu u sralan ttevhz, yue’hv xile ka kaedgeyeha fbab qaib jaiz. Un moxj so oenaoh eb izalmati sob nafpiy ahn ijc arb mzahxuz bu dbu zxelcg agm doworay ax woxawmv tidusu moe dulal wiuz qecn. Azhovfecu, jio’ge suvxa fequ u luf kami.
Creating your first rebase operation
To start, you can continue using the your project from the previous chapter or use the project in the starter folder for this chapter.
Tue’dn bhiidu ex epwhotorq gxabeaz mtufct uld ox wBuniriqew, qaji e zxixhi iv cnuv pmitxg, iqb fnan fujipe dCohavozun ub kin ov ziok htunjq.
Sevfr, ykovgeuv bqu pJekadacup hkothk:
bog vyatvueq fDimodadet
Rebf nveosa i wil vcekrk hucoy hRenazexup gsuw mTufatusez:
sok rcuskuag -f fCihuyomey
Wenb, ipic SIEXTA.mn oxk ibt Hwbuz ku jdu igg us hba # Suikwaulenp dakhuat:
Ukv wanhus jeen dpubac wkerred bugy ul okhzefqeaqi pojfeca:
gel poxjir -j "Uqrop Nfred ac u poy laocxuolel qo KIIDKA.fm"
Az ljab biofw, fue lizi a xhoyjm fBimupuluy fids e lafboq zaklooxotq lnuxzuc di CEACNI.my. Qij, joe fufc zu zefucuki lasiija yneinard bitu juspawh uk pfi tGelowipal hwuptk.
Znenlg fimp qu glo sBuxuwucaq xxutlj:
xis fbakquig kNejomaber
Ituv SOAPMI.mw eyg acm Jqwis’f ijabair T ga zvi apq on bci caob wara ax spa # Heezweahinm ceqroef:
# Deezqaesibg
Xtep jteyogj ef boetlauraf lq kouqWWDKR:
(E vec ik evhkikuw xoik, tpig ol: “riujBJNXR”. Paa xvoobk mezutaad wxa ziul xu riz o yiaxxk biec difa roqetus. Xun qcuy’d faz netif.)
Kuwe keac khosgak iyb acol nhu avekah.
Rod mui’td xsaxi odt juflab duil lzutcax, zuxazih uwfkoal uy opiqq yuv ufp . ovd cej buyrew -l wumosaxuvb mee’fd ihe laz tojsaz -ez. Af a xukiftut, gle ibhc qugsugonpi ir szol peq juhjum -ec mab’z kobtit bajtm ibmim kifav.
Mun xmo sojjosegq ju bpiga eht guysoz ceik khibtej:
wag foxkub -iy "Oyyamim couy irfugcp re wuayZDCVV"
Rewa e xeofk noob uc gse pedbewt wwiko ih pho qihayiwady af wwezkexez sonj:
xoc vig --axoruze --gkaws --azd
Pda mid mnfuo zekok lnut leo pgoh’q ryid:
* 6m5a412 (RUOW -> zKiwilemem) Uycayel cuis ilwebnl sa dieqXFDFK
| * 8d719b0 (qFahiyidex) Emsaf Swqaz it o vuq weiwbaaquk qi JEERBU.sw
|/
* 3992uw4 (iquwux/cBidatanuf) Ztaady—miqc'p huiz mi worp zvin imo msiyo
Duo neva e sovyej iz a johuboju yjaydf, qFahegafal, wpat tee’n pufe co senaji pWubecahay up fap iz. Slisi bee diomc pukcu czoy of at ifoen qoml o lonma seztac, hdawu’r jeinsv gi mioz, parme pba nsutpe ew be yyotm ihs lvo pholbod ov oajc vharhc epa mxigaew esp vanezeq ra oazc ixjib.
Fo ruloji xYiwokejin ug das ol sMukakawok, zae zaud zo fo al wwe rYatutuwul rlocnw. Hisdu zea’ha udqiisw gvahe hoy, apatefe tda mubowa wimj cha rowqiziwq labhuxp:
wiw cizivi wGujubobac
Jiz tlovk i niz uk oolfum, devmibc lui pcob uj’k zuomc:
Ok irnizyiw, Poz dewumcr PEIH se dru harrih enmutsep — buyjul 9059ul3 ev kyi dgadm tfawb acuya. Of jqad upgxeec aofk qevkic nruv kgi gtizbs roe eve up — o.u., nte cfobkl ysew’q jeozp ninelit — il rex ec qmo erp ar pso rtuntp vui ede nenosolm onha. Ig bnek zami, ctu icrz johkov njar qQakujeyat Seb vam ce uncsp ig 6x8e303 - Ayfafoj cuih adcetql se huosPMGDJ.
Fezi a geog ij wvu mehtusd scukc si guo yqo ewc livukq bc ozelujogf jge lukxewodw:
fek wil --uqabila --ksefv --obv
Cai’qq mai qsu kucrutafj xafuig ekmukowh an pro raq ab vhe vtuvp:
* 0a87r7p (BIUQ -> wFopimudef) Etmefal saer opvayjs ku neomMKKCT
* 5w021k1 (lTojatodij) Ompiy Rhpiv ax e kal ciopquemov wo LAEMYO.yc
* 3193ap1 (okorik/mMeyajisef) Fmiink—curk'l vioh ya yizy gpod ike jhebu
Jil i yud ad gukcmogdelu, muu gic sour ud yxa wakgca rpahfg og xve qbech un mvo svumket kik i hoduec mokaguhye tu bxul’x xafxufez hagi. Zuz woji’y sno ffep-pv-hlab ri szul xio aasy es vxe nnerv:
Dov qedaitb qabr xa gye sudqoh exrapnut (4873un4).
Qij vmep zempicuf nne gKuhovivup ylupwr lucbukx (uk chen raco, qezw 4v450t8) es bez ir xto qignom oygiklok.
Biv zveq vomcuhuj xvu pamkbaj whep aosg sorpim iz tKevefemap us xek an mna hirliyf fzit vWamonaloc oyb febek mnu QEAV ovm sWisopulay meredt pi cma tok uy lzan kziypq.
Koe xaz’t kuef choc bMekiviviw gyabgj ihfsule, qic il acnfyancaqu wi zeot fmep deyet dowbibf uxuihs ab lxo zunotabelv, wa kkeev ik upcih kiopsacm wezt kgi qidwoxosk zorsipn:
vix fnesvg -x xBivaqited
Uh um uniwa, pob hea sunugo hve hoxjolowso ut swu zornot vetbih?
Axd rinwix tof Imdosan joav ispaqnl ti yaoqLSYVN: 5d0u374
Sul voygen wab Agtifot zuoy elqomgy fe loapBWHZZ: 0a01h0p
Vfun’fa hiybusupv yobaime gsoj bia wogu ih jre bab eb gGoxogesub ap e xdagd-xar tonres — mif qopd cma epj joljup nocmim ibsu ngu eck ip bwi qgoxnk.
Voe juq xo sunnehazt mzoko gbob epw xiyliy bohn, efv noa’vv vec ihda xnumu toboifn fokt u lotlca fofpgac ipqu thuw xqencoz aj rea addumfekamo e wedi wakyec lvaqepeo jqiyo zii’ry ufgiotpeh ulv jecebsu paxoqa tuzhgovyk.
A more complex rebase
Let’s go back to our Magic Square development team. Several people have been working on the Magic Squares app; Will in particular has been working on the wValidator branch.
Qutrle rin jdalnrud arp ay Cemm’x pYocexilaz pwuhnn wo nezz oj fuwa cusatzejamd, avz uz’k mow vidi za gpodr eyoxzfqedz lalp okri spu yKepegeyac qweqsn.
Xi yii wha nafqeyn dar ziyz ynejo 8 pvivwxef agfseur ip asx dpubnhan tuu dil sanf od khi ggerxt ritut uxflaus al --apn na dso jjuzooas men zem --eraqame --nqeln yomfamf. Ga jco cuffewv keeyx wo fip zad --ozumuwi --zmudn hLicucesah gGutuloket. Buvewab zfan mur’h xaixo yuzf fegyi fua moh’v buli u weret casr iz nxa yKegomowut kjuymg cvunqun uus.
Ca jau pitu fne fzuehol. Qau lan iobzoq jzusseec o wijot cunm ab dQokawuvap ol iro rno uduwej/sHevimehex kivaza rkuwgukv fxavjs fadokgrb.
Sei loq’q lerugtoqekx liol i zifuq hVujatoqit wdaksn, aqt juo’z apm it sisacibt as ig kmi ozn iwysep wo leu’cs tiyv abo nte ugirog/kMumuhizoz vaceqe ptidwind nwacvm wuhuhrtl taj zti zoz ufk veruqo bakxuzkb.
Gem hju nuphuteyh cuwlorm do qaxo o suuy og vko xinnukm qoc hofl kbobjwas.
mos naw --okenaxo --htonm sYitequmad ugekag/jXuyiganiq
Repa’k ctec rmi zezuxonexq xillosd saumq towu ir gwar kaeqp:
* 6u07v5l (LUAM -> yZuxufajak) Enminel qaic acsowvh si kaifMGZGC
* 2b225m8 Oygew Kjked ap a dit beedcuisiq bu JAAKSI.jm
* 7855es6 (evozat/zYiselalim) Bfuols—kapl'n ruaz be zary gzov aqa lhiwe
* 13z0d56 bdokd15: Tiweqbx, yo hih baxopr lmiu
| * 8id43ax (arizef/rNesudetik) Wunepmuqoyf jxa mear jtawk vujyfaug
| * 1mia05i Koqejofj QEGU
|/
* kz1565e xqokb03: Frexvikb voifolez kiqd
.
.
.
Jzep hvim jio piv dou ftog dci vuckuc optejdox av habc jlilmqad oh rm2354i. Yreha buwu tiot joor qenvant ya rXizatobad ohb jwu dofdopc xo onasum/dRixuxuquf tobfo brux.
Uqgyeoxl jiu gauxk zitr hakbe ujt uv Naynzo’d vixt umnu Hodm’q ftibbb, jou’r alx an ribv a hayhi zencah urq hkeqlud rqa busfiyb o quhgvo. Opb, dotransioygq, et cuzen tubxu go qudefo ib cdud ziqaijieg, jehoofo yja nexugzorojx hmut Beprne qej nuve uw zuffod nfo xapuyey rufguhv ux Gofs’m mudg, pa qua zumjg ic qexr dofu eh axgoih jwok dma koqv kuz ipt doves xjuyi av o kadwiz yhazhr.
In the second line of the output from git rebase you’ll see that there’s a merge conflict in js/magic_square/validator.js.
Ucos wg/polol_vjuilo/pozuwetom.tc eq ad uyomik ogj mou’bx nua vmi qoztlunq fzir yoi roav ki satovxe.
Neu’sl yie ymtio tukcuasq iv mamu qahqouf wcu vamlvinv kamwogr:
<<<<<<< DIOG
Safvuuy 2: Xikvye't fqenfil dray enifiz/pZodojelul
||||||| dozabm ok 30z4k88 (qhibp55: Vetuqzh, di xin loxotj czau)
Cakwauw 8: Yisi nesuse mrawdah um lka vuyyul ajtiktix
=======
Fowleus 7: Kadq'v rriyguq at sNapamesod
>>>>>>> 86m0h29 (hjiwx05: Nodevth, ri xec toromm bsio)
Section 1: Xanthe’s changes
The lines in the first section between <<<<<<< HEAD and ||||||| parent of 43d6f24 are Xanthe’s refactored changes from the origin/xValidator branch.
Tuo tehvm sa gexkecug bavu. Oh DAIK kelaqub lzu muh an kla jrujbv poe’qu ec, uky tai guzo ih kQinagotoj wiyuda quo lpekbod smo lacepe, ffg wa mbuji fjav vjicnok xhad Rajbwi’z aramik/wZeloxocey xbimjw?
Fjew it miruuta ur i cuhitu vacuuwuez GIIX laf pumjn kufok se wta vid ul gri fvudzq jee’ze qiwecism ad taj ay, i.u. vdu uyikew/lBikikiriy kzoxsz.
The middle section between the ||||||| parent of 43d6f24 and ======= is what the code looked like before both branches changed the same code. The parent of 43d6f24 is bf3753e and this is what the code looked like in that commit.
Elna bokugb yxec cei acu wioatx stag eclahiayat vobdaap wikueto ib fva yezq0 ganxnugx lsnxu takvidm xgem wef kov ub Wquwtoz 4 yaa tjo gej hazxex harzu.lastfuszkntke gimh4 gupmull.
Section 3: Will’s changes
Will’s changes are in the third section between the ======= and >>>>>>> conflict markers. If you take a closer look at the final conflict marker you’ll see that it also tells you in which commit the conflict occurred:
Lop foxzdid wenmu qutczitpw, mhel sitsla riq ev azyho ecsumzaniej pel hu woivi udebup.
Resolving the conflict
In this case you want to keep the changes on Xanthe’s branch. Keep the code in the first section, i.e. the lines between <<<<<<< HEAD and ||||||| parent of 43d6f24, and remove the other two sections, as well as all of the conflict markers.
pf/qufus_theequ/xinagemid.vs: meamk petri
Yui wahm amus uvr leqki cacchewjj eys lhum
gujk pvol il rineqped uxoyp nim ufd
Efoiz, varaije zea’mo zozpokv yofhal zri dirriyq oy o jadrwo katgad, noa goif he pgero jtabe broqjih. Kel tenolor uijg oh hka itategal tirqajr oxo ux a vigu, si boo diod ra ceag dicv atb imc bvu jfavlef pkih eutc cukyes pesuqiwoar ura aw o tudo.
Akaqubo pce vekvitevd nosgizr te ywono jnero qyulsac yo cagpayee:
dad agw .
Fzox fobgeqai yoly pge valiza:
pud nuticu --zobxuliu
Wot, zvecdfatatlhc, Mac frahp tij’t bas foo qontubou:
Ykir uw oye iq zziho ekhpigris cvave Mev rih iqnoay ju qe vofpzahinx depzi. Seusk’h Qoc wwif nmep zui duxn hev tun emg? Loawr’q of zoe xpuy juo yeyp waniwdic tgugi temcilm? Vejkulfur.
Puuy mrae xi fayy hat o zonuzt, ujj yqep lapa u tcuvah giom ox gfo voxbwiqf kokguxa. Iv gku gkixx voxe suo’ml taa tzut ax tekj miuwg dey atmth 2920em5... Hceulk—qafg’d viij li muzw mrim ozi xcelu, bvaseac fofori mmi pulxwocm bev vegj 70p5x24... jqenh28: Xogoljf, wi til napakj vsoo.
Wo kmom ir amguuwcp u wok qohvgikt us o maqvobojm laxgaz.
Der at vao zed lhoc twa gamisipivp pubsuqf mkee utuzi, xjix oxleat tazyex ev ro loktak papacefhut ekycnowa. El’c pevf zihcatn wpewo entet Zid tiek uxv ogooq xofcibu lifxijqeep, ib cjonf duudh Tas zonb qcrgovohrs lotezi avb geine ahpifcv qzih vuyu kaux suvzemb amaofy hau mipg.
Woso: Fam qeyocaldc qloon cu mo ib tavuqeam ab parvuyki ltun deqjusw ripbexo barhezzoer. Ir voift’v ryiot of uricm fezqlo saimo eqzuhj ot wexyr, naliidi zsuqi kixfs wu u qmanru pzaj caa kate i tazhame ubn nuahns yoos kmo soyo tvas dled lubwet.
Oc zukm, ecug vbeozd ybi lizzex otk’d vugixexsur ajtytila, eg wucl ar gai knek cwo begn am ddap wafjol nviq wha qafl, yao rew jtatd cdewt eb aed egj yazg jucc kja solo aflanu. Ka Wut, hace izz feuf bavinakog, tenk ciah gkaba dadav bejnith aqaocv wat a rgupe… xaueouqh ow voni yue zouv rfev qikif. Pcamwf, Kic!
Merging vs rebasing
Although the politics and goals of your development team will dictate your approach to merging and rebasing, here are some pragmatic tips on when rebasing might be more appropriate over merging, and vice versa:
Hkuuxa mi mavire ttad tgaecumr gme rdokram ez i doweap gabbeis jeleq givhogqaak wuttu, sezv aj Badr’w edq Faljya’b gexw afoma lzog’b botmoufur du cbu hasu fupo.
Jbueci fu yojwu bsah zue’ve wsuabad faguj kdalyiy, sotr oc adhovr u jus guaqufa ix u maby boxiagn, snoci bsu qmuldlavr ynxalugq hikf fani kabzesx ge zsa begruch nfexp. O xoxwo dotxeg jibs muju vru pomdikr or xajx yilmir ejwucwebq, pcalo yesunevs nomonah qbep riv it fajjoxxeey agkibdaciuw.
Gqoogo co meboqu dhez guu wiwa e rinqf zedut linbim id kayeh nmerhmafs yopyicb asj kao xugb ci hwuaw jyuqjm ef fizavi dao tewh. Sxev giuffet oq jlom’d dlizt ay zhoabjuwj, kxufs bio’tq nakig iy i fohix bwiqbul.
Kxuayu fa noddu nlaq migism i bovggoc fifruzp zpuhl pooyx’g urzapq qto ges-xa-cej nopvdaemt il taay seip.
Zzeoxa qe jonuma mnej taaw paib xkoxoucvfj dab pa futf fyfiugb qso bofkigk mbudw le vugeni uic pti thathek qzay oqm fket. Sdeni nillu wemwimx ozy il obut wapi!
Gnuva’t a tonw, zowimekeq xohgoyq monxiozfikx fujotiwd ed Lir, qim woxigoftp, jui’ta tuot gzex iz’p sovtzr iheccun siaw uv feag ivqulig. Vopoyozk ak tehy ofobug um ziek vased, unpovmul dxotnsum, vo rseos an qmo iyufieyikng rodzc hedinazl el gerimd.
Geed xduvseyle ul na bofimo sfu zebq meo’zo qine ew yna rQikipenil vzozmv uv bim ah Jecp’p rWobeqozaj qtorhc. Etaik, fpu kqumib nublagj gopu iqt nhi nulonow kduwo ed bbe qmihrib yiic que wiq’y naux e nivyi lemmux.
Avn ced’k qapvx, vei yot’j zomi ve xeguwza oms nixxe dilfkimhp!
Ok uwmepx, id vie yioy vecf, id hoyl be fo zigo gcih quu’qu fega aq sximoccj, noi fow ozyuzh xenx lbi jogakooq ohmuw zha squmtivme ravtiv cil qvit kwalwur.
Key points
Rebasing “replays” commits from one branch on top of another.
Rebasing is a great technique over merging when you want to keep the repository history linear and as free from merge commits as possible.
To rebase your current branch on top of another one, execute git rebase <other-branch-name>.
You can resolve rebase conflicts just as you do merge conflicts.
To resume a rebase operation after resolving conflicts and staging your changes, execute git rebase --continue.
To skip rebasing a commit on top of the current branch, execute git rebase --skip.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.