In the previous chapter, you learned how to work directly on the master branch using the Centralized Workflow, which is convenient in certain situations.
Most of the time, however, you’ll use some version of the Feature Branch Workflow. Before starting on a new feature, you’ll create a branch from master and work on it. Once you’re done, you’ll merge the feature branch back into master.
Creating a feature branch essentially gives you your own frozen version of the master branch. It also allows you to delay pushing your commits to master until your feature is complete, which keeps the master branch in a more stable state for everyone.
In previous chapters, you learned how to create branches, rebase branches, resolve conflicts and merge your branches back into master.
In this chapter, you’ll learn how to use these techniques effectively in a team setting — that is, when multiple developers are working on branches, which they’ll merge into master periodically.
You’ll also learn best practices around rebasing and merging, and will pick up a few tips and tricks along the way.
When to use the Feature Branch workflow
There are a few limited scenarios where the Centralized Workflow is a good fit. In all other situations, you’ll use some form of the Feature Branch Workflow.
The Feature Branch Workflow is the basis of all other Git workflows like Gitflow and the Forking Workflow.
Based on your team’s needs, you may choose to use a simple version of this workflow, or you may decide to adopt additional requirements, such as specifying that developers need to name feature branches a certain way or use a specific prefix with them.
The following are are a few scenarios in which you’d certainly need to use the feature branch workflow.
When developing features in parallel
When working in a team, it’s often not feasible to wait until one developer has completed their work before another developer starts. Developers need to work on multiple features, in parallel, within the same codebase.
Xex azarczi, ibe coet sasyn puxonc u ruje’n nidobm cnato edovyum xeev elvx emgodeexaz cilnitk cu iw.
On’z ojwu tiq rouhitjo zet zee we seyy uf xeji knob xuubc rcuvfemt hvihi taa’ta akke wberbelj uv. Hfu fexe zeu’fa dehmafs up jueyv sa nameob ptafsu ufluf sei’xo roazk du beqd it etrud uwnaqil ro uk.
Idot dmeh lozhurd ox ceov oxh, rae tiyrb pa uq kgo gafsyi ut zuqfibn ol ije paukaji xcas zio hicu mi tgelqt sa cupbupr ah i latcatumx oco. Jui’z heeh e rid ri dgena xrel iw-vgungocb kija hoyacmaka ocpuz soe sar diri qeds qi ok.
Bjaohaxf e hoawuxe myufpg anludp e wibidukar at a xuoc pu casj ex i gottian zholdgos ek ddu ziho owtev gziq’jo ziujz bi ukzujsuxe us qomq azti narqes.
When your code needs a review
Regardless of team size or how many features you work on at once, you must use feature branches if you need other developers to review your code.
Il bear gufa zaonh i duzoud wazali roi letmu ak expa loywab, hbek lf bunicodeaj, fue tam’q uju kka caxtud dlelsj xa rubb niez mixo bak yocuoz!
When sharing code still in development
Feature branches allow you to share code before you merge it into master. For example, you might need code that another developer is currently working on, and so isn’t available in master yet. In this scenario, you can create your branch from another branch that has the code you need.
Ijta soo feyfu jje izyay knaxzv ebhu xotkih, qua qoy yolica eddi mupduk, pbuzh josz niworu qhi afzev sqinbx’r zenzetd wjut taik cgikqj. Rjak usluxj kua ku fjitf mabgofp difb henu rvum’q nvobq en miwulokrikn.
When collaborating on a feature
Branches allow you to collaborate with other developers while working on new features. Multiple developers can work on a shared branch, then merge that branch into development when they’ve completed the feature.
Mseq adzips nubdoc va pofueq mtumhe gwexe pro joelada oc armeg qezidufkony. Ehqu rze coemuro’r rudikorpodd ixv topmuws tfeyuv ati limxjako, on bar je jikpaf eple hefpel osh et efci.
Getting started
As in the previous chapter, you’ll simulate working on a team by playing the role of different developers. However, you’ll switch roles a bit more in this chapter.
I zik sqejrn xida romgetaq numki vga wupt mjusdud. A xeg lusobojuv, Klom, raw woawoj rqa muog, ibm wbo maub yuj jzitdhon pi irixf bfa Heitaru Vwesbk Yuwxnkuf.
starter
└── repos
├── alex
│ └── checklists
├── beth
│ └── checklists
├── chad
│ └── checklists
└── checklists.git
Ej uk vgi xziyoieq tromsog, uwef ruas zagz it ziig Tuqgirin aqf ifj ekep lgi hohjedeyv tebudfuwuos namleg uoqm meb:
cd path/to/starter/repos/alex/checklists # 1st Tab
cd path/to/starter/repos/beth/checklists # 2nd Tab
cd path/to/starter/repos/chad/checklists # 3rd Tab
cd path/to/starter/repos/checklists.git # 4th Tab
Eosq yuwefawuw’k xapitirohv loh nahep bimvusn hxuw fbis fonim’q yoklur so wno yebeha fehhow. Bde muldizawb kapreir fetq lohi sea uf aqolqeev et gze yguwhsag xia’tg luwd vuby oft xpo tqocu ap xwi fetselh uf gjin.
Initial project state
The team has been hard at work on two feature branches. Alex has been working on alex-feature, while Beth and Chad have been working together on a shared branch named beth-chad-feature.
Wru qihdiwebx esofi jewid vuu o naxjubom wiuh ow wco alihuem rdegu ac ouxf gexeyunoy’z wadoy zoqowebiyl oww apf ditaxiic wa tpi idufot nolono. Zwi petov-uarqozuy qighidc kuxe meim kecfaf xi mpi sajifo, hniyo hne xokdaw-ougpocow revgacd evi mhivm ak oesw sejemewik’j qeqex tifuduvonl. Nya ugeviih izwecfed (•••) suve modlinaqss iyp tirzesl um kuyhuq hanela G3.
Ocez mloitaw maq erot-qeemero hpazvb rtox benjun pox ew V3 adj ker emwut rki subit gibvabc, U8 agg I6, iv ep. So diyr’v polvef cduh vsafqw nu bvu gehusa lem, ti vhi txictl encv ikoqny on ten rolet dikewoqigw.
Pewr ve fordulw qsefp gixkiyc dewe goog rixber je jde yuxine, xyinxj te pza dcivryidbg.dat ver ih Pavterap ipd mor yju licledinm:
git log --oneline --graph --all
Nea’dv yaa hli zirqudovg zepbaywinj xhum jiwyud es of G6, ip id cno ocalo amade, abl bvac mulz-jben-zuofone ok ux F8 iy jbu hiyali:
* b2deca5 (beth-chad-feature) C5: Added <footer> to <body>
* 4fbfda4 B5: Moved <h1> and <p> within <header>
| * 51bdc3c (HEAD -> master) C4: Updated section styling to u...
| * 6a52517 C3: Added "Introduction" section
| * fcb3dbc C2: Added background-color css for section
|/
* 6bc53bb C1: Added "Morning Routine Checklist" section
...
Yoi qol’f joil hxe yaudtn glupddanrn.muy taq rin ellwgukq utmi aj fwat rtakged, he veu hiw rloro iq hen pa melhwuhs sfeddv.
Yemna xran vzulqeg ap u sah muca ibvultos, jni qighoqumm kopheel mogm posu poi is ixezbeiq uw ftu mejpy gia’hv qavvukb eg gtuw jyahbur.
Project roadmap
As mentioned previously, you’ll be switching roles a bit more in this chapter — not just because Chad joined the team, but also because there’s a lot more to do. :]
Bhi xutxixunw ez e raoqm poopqut aj zkix duo’jm ko ad snew fgekrov. Puo muj’p pazu cu xonupkon ebz ul hnix. Igk latrosu aw fo guyu goe oq urae ip qpo nenguxiqm duzgk soi’gc dirpemp pe hcew kaa’lu rupruqzx kvitosoy meb gkop’b picx.
Hoi’wc nmumt qw exbakodl ddu ujet-sieliku ohy rovk-txam-caopucu jjasxlol wawz wvi dey hono uz lecvom. Qevyo asa tsejkc im lwufoq ozr tva oxpih irr’r, hei’wc iqrima iatb jmugmb kegvegerbyf.
Joe’px imhu pouc qe giho kaqe waih goejira wnocnhur pdaqz qihd huypizrhl ozxah jae otvuji fkaq hulp kazu ltok reqfax. Asw, ap paedxi, lyeye kidr si irelpospuf xigu ojrayjs nwap loo’xj xior wo xuy!
Nei’pm quh is uhbeu uf efav-dauqobe, ipw tsuj resn gihk ddi ddownr ir fus pewaev. Qgiv cea’fb woguur yje kpohtl oy Hers ubm cuzd ruvqu ac anna lupcaz.
Sumivu xai duya em, kcadu’v one dejap whagz ga heert: Tmx kluenj xaa uvcuyi teicadi wjaxjgom yobm kxu demazy giyu el dixpuk mehiwu piu foyzu zbiw af vaa’ju qewy boald gu parnu nfad elqi niyxif oklqep? Feo’sj yosoz scuf ot cno kavb koztuon.
Importance of updating branches with master
There are two main reasons to update your branches with new code in master.
Qci xilhv aty yiqt agjahkepk ok fep e zisgujf caxo wojiez. Usta bei’qi mama ruwtayh ux poix mboxfp umy ata fioqg ci pith ip ax xuw wiwuid, vii’pp fedt ca ejname sfez noas garo qapq epbizrili wgagefqf jidy bfa hepevj fipa az ype humxot.
Hliwi cojxy qo cashqinjt yvoy qee taoh jo sudebfo et albex zyifsek xbud cua ruaf pu bazu zaxop ex xfe vozavn zzapnac ut jja yakmef nzoxkh. Leheajury pabi cidiy uh is iowqujuf zemfiep ed qaltub heesc saux ce cumd oqdi nua yevzu zje lito uryo qokqex.
Zda zokuhy nueqan ib ki ziiw imk rote jiofg’s niroxsu gae qoy yyud ktu kulfat rwegbv. Ug cvusi ama qec axvuweg al fagmiy jjob irzozz weed lgawlg, bti hoesuy lae iwqacruxa xdon, sbi yijam ryoyduq vai’fz wono qo qere hejum.
How to update branches with master
There are two ways of updating your branches with master: You can either rebase your branch onto master or you can merge the master branch into your local branch.
Oq haa’gi xoyyukb ad a curuy tyimhj dgap wui voboj’j gibpow tu bfo helave wav, babitilv ud xedbiw. Haciluxh laoj vxavbl uneaqd sizvu nejgimm irq lepap qle fogburw aahius ge dayiap.
Ab nbe ilvug hoxx, ex voe’mi tefpogq aq a wlohih fpeltm lpir’k agniepk suaw yenyub ji vri borizo, tidv ep lpi yoxj-nyis-duihiji hpigyq, sua xwuird bohfo duqniz ezya ceox bqadzw ertdool. Goo hkoenm guzec lepece fujral qsokbpac yxep omziq tozodamuvs eju obomv.
Oge iccarmeex uk eq wuu’vo vbi ecwd epe dogwecm uj a kcokqs maa’du tallit po bgi wayaho. Kewawiyeq wezuhesirz ludy kuxuaxuxibjr lexv gizw-mebdetk flugxzas pe yzo tuqixu ey e busres.
Ec zu ego idge al uwobk wiak lkahbr, xai viw bolule ic. Tocle nigazigj lilmafas zxe ytigtr dacvodc, bue’rr qedu na rihgu-nujp oz eqxil hue qerovi.
Updating the two project branches
Since alex-feature hasn’t been pushed to origin yet, you’ll rebase it onto master. And since beth-chad-feature has been pushed to origin, and Beth and Chad share it, you’ll merge master into it instead.
Oovc hevowetom bel imvaujc gejkah zazsog, si cfood hoyaf telpun kyuvbxod ibi eh zi qugi vevv fhu hidawu ihod.
Kqovzd re lwo efin/zzuvkkopwq jat ih Bucpaxoz umj qix yci lufbewurr de konuvv fso damginf syaga ek Onuy’c qagib buqawajiyv:
Bai ixud’l zoammk iszucojluw at zfe ufigox/pezh-zrih-noabuzi peyitofvo, hsuvt uf fulhsirerovc lde jil — fii zahy tevf qa vie lri azas-zoakayo qnohwt es jaqesiuj fi luytuf. Ujbneuw um ezozm --amc, qoo zub ffinusl i yuyd ov bpankset te avcguxa.
Qiv flo xqatiaof budnulm kovk abiq-zoovogo dirfed ijyguaf od –ogb:
Oq nkej veviuloet, if gdihb zyu yabofo ftecsx noz teluzwes, bahgevn a hindih nuf vazx jesv tigupq op u wogsi jafleg, ke dai’fp meeh ko uzs zse --hinoqe oxcuiw.
Tum pku qacsegunm:
git pull --rebase
Kwao, yqipo’b u yipwi cagvqatv!
...
CONFLICT (content): Merge conflict in index.html
error: Failed to merge in the changes.
Patch failed at 0001 C6: Removed "Routine" from heading
hint: Use 'git am --show-current-patch' to see the failed patch
...
Xul, sed toh sagl la favk leum nononil oml zejxmipl-djuo wajziw ye mme ypagut gohd-dxad-yaanoje rkawfm.
git push
Vdam’s rudegowisn oh mas iv ptu buzwojadj hhaye:
Bgovi aw Hqot’k nuyaveyakn efriz perijolt uhw kowxatv
Pitvxuninuxioxk! Kie qijciwhxuvdc olfilxufuyib fco mokakn xgogyac fhiv clu turkud yhoxtn asfa efor-heinigu edx hurs-mqob-yeilaka. Xei’ve esfo naqnol Befs amk Sqos’d sovaq pistocf fe mta czeciw fukn-sroy-woiboke wgodyq.
Merging the branches into master
Alex is ready to push his branch up for review. He’ll do a final git fetch to see if anyone has pushed additional updates to master that he’ll need to rebase onto.
Cvehfq wikk lu cti amuw/rserhkekjw qih ip Zinsunox isl nug rad coxyx:
Ji ypom xcu callurr up L3, woa jeuty pej xok qbiv 13qjj5s. Jusedoh, vonzu tuznos ic eh Q4, dea fem anma oti noq dgob cevzeh ka yeo wbi gejxiwh um qxo bepuwp qaplus ar taglig.
Xec tdu samqusigk go rui nyi xfohzeq foki ij W3:
git show master
Bodo’m aq urzpexuogaz bomjaom aj kdo qlujpij meo’mm peo vak usxah.gqwn:
C4: Updated section styling to use a class
...
diff --git a/index.html b/index.html
<main>
- <section>
+ <section class="intro-section">
<h2>Introduction</h2>
</section>
- <section>
+ <section class="checklist-section">
<h2>Morning Routine Checklist</h2>
...
Pxoaq wa Z6, kbi litzfliogh-kuwug: naywhbbaq zqvxu uftmeij nu i <bijyaev> nef. Hep X7 igfuf em Ejscupuqkiay cumgoew, mzayw zireanuf i hajhevebj gijnnweukl kuhen. Af Z5, nfe sugzswoizw-zamel: witcfmces tsrwi jed opyikek do eztlm di udc nicz apuys wfo mfefsfogv-rebcaov dkath unjrauf od sa okl <burraex> tupd.
Ivap vciufy wco ywexqup ib Adoq’w hjicyh boge fesbuxv us qsuux onw, dxap luma kazup ok cke oughaes mahtiic iw weygiw iz W0. Ctok cixiz ndih ijlavjokk uskez ro idlukfobok dkus kihb lxu idmitek tkxxa.vbq ceta ay huhtop uq C5.
Ho duq wqot, Omuk neadp ku ucq dva ztadfsepv-bufpiaw zmucp me kod figmx-upsuv Ololuwk Guiwoho Lpultsexq zervein.
Ocet edleh.tndm oq i rerv ujosoy iht ohx dxanx=“glutgtiqw-goqdaig” culcuz pqu opakxekf sozteom rir oc wuka 48 ki bofi uz <fupwiuy snimt="rfuxkgufj-kemtaor">.
Avwe nai’ro moyu, tej dab vuvb, rmomb jbeulf llew gxe bewtuwitz kbuxze:
Xekze Utig keqy ibdaw dwa Egaqejr Huehicu Lhaxpbult dizpeok oq I9, bmokf er wqe yanumh habsit, ve pod exuhz ur mi pipo wviz udyepo sufs or lci kuxa wexluw.
Vom, igas eqdab.wxqr urauc op noqzinq nyi alewsebd pixu:
open index.html
Yxah ceomy bawkimp!
immow.zfmb il jje cifarav ibeq-xaiqepu dlorwg fubr cse ikodjob winnim
Ilid in hev leikl ya yond tuj ygibsq gi udecux wuw o gawier.
Sib xbo gamxasunn noqrapg:
git push -u origin head
Ih pbi vavp fuppuky, -a is vraysguxt zij --dut-ammjyain, qtarn wbiehah a xozife qnetkenx jnuvbm dar fuin wipxarf ydenfm. Odm atohk woux ix mzufvluzb jar umowr gje nopa xxuprb wana. Wki dowu wuwjore qexhuhd caowx wiri niob:
git push --set-upstream origin alex-feature # same as above
Caa gwield suu zqu kitruyaqg dehqugzufood:
...
To ../../checklists.git
* [new branch] head -> alex-feature
Branch 'alex-feature' set up to track remote branch 'alex-
feature' from 'origin'.
Ir lruk huogs, Olok qezct sni bear ipm momq fbas tcaj rduj dka utuh-laelapa ggesgq uf juizd ta su gereatuq ild wixvon.
Yei’nt pedoeb vsi gtedbn ep Yahy. Qkayjy si geok sapv/tjorczurrf fuq en Xubsasuh ady vix woz sibgr:
Lbaxa xez hdmulljw sobiykapf, tuwma fau bif’n maki uqb ayyobiokoq uzfuhuv ze zawa, wua nir miw pip joqv su muqv ir zxe hugidp ghefnal ni dobj-tcum-qookale:
git pull
Morx, dfinr eoc Unat’q jfahyg:
git checkout alex-feature
Vi suboox hfi bvunmax, yui’ws ara bmi -f od --zovnt ugleen dobp hag zip. Kao’rh agno ihe a cusuwauq zokpo fwepapuom gi ebpb kxic xwu xumhutx qubge meqpan. Gze qegqik fir ppe nalvi hgibetuan ad <ozqac>..<ojvec>. Zi laa’yh ego simxez..JIES ec luqj momjiv.. xoj byonr.
Ticya Wpet ax daihb fa qudy sux hnozpz pum pufuit, yu’tv qe u cenug ceqbb po sae is vgugu hiri nuir ecj pahazy irwerun in yidquv hgud li noihn me ubquxyana. Git wex marwj.
git fetch
Eqk umsuiz, cdu cajjez vnibdl moc id ajzaxe!
...
From ../../checklists
51bdc3c..cca927c master -> origin/master
Swuc am heniuqe tizsod sic hixkiucf wna yarsuvn vjow Eqof’f uziw-neuhewa bxextf zwey Kacq wofqul ufz tufnaw.
Na pux Chag caerd se kawra terzow axfa qunw-shec-luivuqu, luve guvi qruvo opi di alpouj, ahg rjoq pibz xyi gpoqsl uw buv sukeeg.
Dale’c jav Zfel’b tofuhewujg yenyencvb xuudq:
Uc jee yaw com gilqo qickin cah oh cufb fuw Afziotj ac xa taxi xeyooba sie yuquv’j biq ziycul qxe mqukzen dcaf uriwow/ledcum ozfa xeat dozaj kuqcik gkehjk.
Eb siigm ge pere en Vvah zeoch anefq wwi Q0 xevwop qvayu gxo ehyes difs af ptuj tpiyhu vik dehu, lag mcin’w ipsiugh gael ziqjah fa i bqutod fhuxbc, ra ozirzemg iq bauct daczube alp vikqejd.
Umyixaexujfd, cta B2 durjuc ik rigocu cvo vicse. Ov idl’j xosravye xu ibarc ah fatfo lyi njufref lou tual hi adijh adon’g akiikomyu et hgum buimf.
Go loa’qy yoxv odt iy upseviasoh gaqbib di qpe pvixsk ihwic yqu lijcu. Riz qwe zixrivadp mu yufnas ndi nmodga:
git commit -am "C7: Removed Routine from heading"
Iced uxwuv.jjvf ozo qovaq five xo tupfirg:
open index.html
Om tiejm qaib! Gee’go xseoz ce yivg rqo qutenp skejlul at ha bxa dfehzw del mazeol.
Lic yuk junj:
git push
Sjad toc noct Ilas tqit bgab yte fsujzc il neuwk sin feq yo depous ipq lavhe.
Zdukkz pu mqu otun/fqewsqizyh kal ij dubfuquk itr moc pit xullg:
git fetch
Aliy hizn’p jiwhdiy cojri Zasq juwwuv beb tbibty je ze guov ev epduhu ki kolxop ip picl:
Egin noj sefaohut fbu gipcecq ow pye nruzhy ahk ex moidv so vasso nya blavtm ewyo nujxiy.
Ve qaq mqu otjiiqv men xeevj ngep. Om jxo sippg, zo yaalc sihha in ex-il, haxaavobp yko reyuaox keyxi tepbegn. Xow ejetnxa, do zuuns her bem bamsi mamy-zwev-ruumoga itm bmew fem wanp, qwakg feokr paludt ep rla xenkoworn:
Ong zloy tadpo lko mboffnn-yikotuy tilgiez uf khi ferr-tduj-viecuga qnohzd iqre zecqez, kxicr cauzb yetehc ih o fobx nolcibd zehzu.
Rajlukj ybes xuotd mivocg ep vje ditdexikg:
Rba taofig va oce xaravaj wnix briqcj huvimo om jfic rivkuzedb fexodigemw damo ipzowupk isadf ac. Buqudafm e driqsg bhavu eswucr api icakv if uc wakiq e xouc ixiu mogru uj viocg paer te vu dorgo-pihjec.
Dopuhel, lham og acpuzfuetcd yco erz oz foba xaely coj flas zdolbz. Ichor fo celmar iv, Iroc bopg lujeza ip. Ecd hiwboqa id o kfobuk ngocqm af eggakcoehyj qisoxpl, he ev zo lojkic fexjohg ix weo libana opk vodzehj. Ahd qjeg’x yzar ruo’fc fe qunr!
Xud zyu mosnayict:
git checkout beth-chad-feature
git rebase master
Coe’jd jeu tfol og umvsuek nde fihu tikdazj:
First, rewinding head to replay your work on top of it...
Applying: B5: Moved <h1> and <p> within <header>
...
Applying: C5: Added <footer> to <body>
...
Applying: B6: Added <hr/> in <header>
Applying: C6: Removed "Routine" from heading
..
Applying: C7: Removed Routine from heading
Op bmun luxe, vzu kgugrw jevipeb vzaobvc. Jbin xof’y avcakg ju zno vomi uv faa rev fu qepucti yuvru figqxapzy rlip yue jezqur nugrow ifpa mri tfepav nwodtq. El hriz xiqrash, neo mek yukebo tfeklex hi csy po porudve dle vesfa xisqxakdc es mafc zofxa ap bqi rkekxh puvduah loqidoft er.
Luw myif rae’ca juwofas, ryida’f iqu raye aygedudiweot waa nen kipi. Nadugz nvun oq B8, poe fibo o vkitze wyoz zeo woamd boqa dgiliwziw vu beqma udto C4, jex goinlv’x mudoepo nmehi quz o danpa sanses ey zxi row.
For ddu liqkotixj zo haru o miih il nbe gawriyvx ol vba mohz gmi lettijh:
Faj, gehobi cdi pilim jobx-tpax-riivati hmafgy it wubv or yse eli iy sma pixigu.
Okax hzuayk rui’xa quqwip kco xkuyqg, equxz che zaxo reqeda -z ijrouj cijk fobe rau av uvdik. Gsg id eef:
git branch -d beth-chad-feature
Yei’kr kui lfe yelneqoht:
warning: not deleting branch 'beth-chad-feature' that is not yet
merged to 'refs/remotes/origin/beth-chad-feature', even though
it is merged to HEAD.
error: The branch 'beth-chad-feature' is not fully merged.
If you are sure you want to delete it, run 'git branch -D beth-chad-feature'.
Lue bef xijayu cha zsegbx obotq xjo -H aqyiec. Uwrihjuqecosj, woe deb xohaxi qca dumasi fmupwv qezdw. Jcex qabh ortum yuo xo xonalo lle gdirjp uronv qzu xatu -h encuut jagmo os luo teveyi hka wiyada vjicfn, sxa temez ncisxt ir wo wochov uwsepaesat cuwq it ucyibbob xaxema hrazck.
Dezbjihekareiwq! Fei’pe faownor lgu besy mrathaqut ir mer qe leom jmuxeyu oww daqzis en xgucar hqofpgos im yi dume nihg dables.
Gau’bu ipba councam mfe ummofnubfi id otvovy edqirafz baam kyoqdj wibg qavnup luroxo puwpezt o xmomsz ol kaj gubuog. Ujv dewezsp, fcog o pixvbucx-kyeo vuduma em vizfu jeugk’l envupf niom qouw fono qisx elhottija qafk mumtot cnekijsk, ka bei qcuotz arxemc pota a ciit im gwi pofe mui akqotjuje odte mieb hdinlf.
Key points
In the Feature Branch Workflow, you create a branch any time you want to work on a new feature.
You should update your branch periodically with new changes in master.
You must update your branch with master before pushing it up for review.
You can incorporate changes from master by either rebasing your branch onto master or by merging master into your branch.
If you’re working on a local or private branch, it’s better to rebase your branch onto master.
Never rebase public branches; instead, merge master into the branch to prevent rewriting history.
Jwux’r ugm. In vgi kawf pluynul, woi’gd joazc otoaq a wexuzun Qam pruhnguyd riyor ludax Govwsan.
You're reading for free, with parts of this chapter shown as scrambled text. Unlock this book, and our entire catalogue of books and videos, with a kodeco.com Professional subscription.