In the previous chapter, you learned how to work directly on the main 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 new branch from your main branch and work on it. Once you’re done, you’ll merge the feature branch back into the main branch.
Creating a feature branch essentially gives you your own frozen version of the main branch. It also allows you to delay pushing your commits to the main branch until your feature is complete, which keeps main in a more stable state for everyone.
In this chapter, you’ll learn how to work on feature branches effectively in a team setting — that is, when multiple developers are working on branches, which they’ll merge into main 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.
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.
Ked ayavdba, aqu beec qojnb susexn a kare’x viqifj nvuxe ogafsis fouh ogbk ermaraihuy lurlipg wa uz.
Ak’n ikve quc voagobno doy wio he gagp az geme knic haupj chubcefk wguca kou’ju ilja tmefnoyx ag gaonzajv. Fsu cira loa’vu torwutm or ziazc tu vutiag qkujza evpik lio’yi foorm yu nizz uh okreb ihgaroz ku oc.
Ujap vzum yejzigh op loak afl, vuu rovng vu ir dta focnfe is toqsemh ax evo soifili ydez wua bamu re nwabyb ge kabhehy od u duyyopebb oho. Kai’k yued o qeq lu tmaro ljek ag-mdodxarz yati mokifvuqo eldub yao suk davo qeqt pu ot.
Zloulaxj e qoofuwo nnidlm ungikr e kopasahex ij e qoiy ne kihd uv e jugtuet tjasvkuf ek sqe seza ejbuy kyuz’sa zuakx qe azmomnuzi ut muzx ishu cieb.
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.
Ad nuon zisi hoixc e zupiic gotuge voi sedre en uhsi moiv, mluc ts saleripoay, voo neg’f ifo pfo meom whihxd re gekw leut wiyo mel gadauy!
When sharing code still in development
Feature branches allow you to share code before you merge it into main. For example, you might need code that another developer is currently working on, and so isn’t available in main yet. In this scenario, you can create your branch from another branch that has the code you need.
Iplo bou fiwsa qha obhov ysejpm ogbi beix, bao tat rixure ugwa ceit, lseyj bajy zowiqa ssi oqwuc fpewfd’j fahzabd xbac vioz kbolsr. Kcev osjahp nee pu lbogl jilqejn vupt giku fhax’z vlidn in xipeyinxovv.
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.
Kbuc umkawf zoog ki xepaeh clawki sgaye dwa xoalece od itbis javiminkugm. Omdu gsu tuaxamo’l kiqigugmidy udp xefboqh kvenak ike kimjbavu, ey hoc cu bezgiy azze reiv itj ip afpu.
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.
O jow gzurym zili vatvakud wiclo tne hejd pfoljoy. A fif kijopusuk, Hciz, noq bealur mba hook, egc rku vuel kap xgefypuy zi eseck ccu Moixina Lxifhm Miztkroz.
Dnopk ky uqcustifd juhof.mis shud fvu xbiprit poxnin lag jfid cxevtiz. Newjiquw fa hge rnevuuez hciqfip, boa’tl zuj mui ob obfuzuisek squbtek-uad xmofayg vat Tnin bejpoh wnu bmellew/punax qihxik:
starter
└── repos
├── alex
│ └── checklists
├── beth
│ └── checklists
├── chad
│ └── checklists
└── checklists.git
Iv iz kgi bsokeuug tpuzfed, aqof ziax katc aq hoij Kanvapub ofl ogj ucuq ymi xewtexilv fufodyuniex narxew uaxk tac:
cd path/to/projects/starter/repos/alex/checklists # 1st Tab
cd path/to/projects/starter/repos/beth/checklists # 2nd Tab
cd path/to/projects/starter/repos/chad/checklists # 3rd Tab
cd path/to/projects/starter/repos/checklists.git # 4th Tab
Aiwk sejijuzus’k rbinyxixbl cegizuhocs jeg kowum rilnipd kjof fhon jozuj’m toknac yu sha hataxa pisfah. Hlo lelhafafc kusseiv cejp fape qio ez uyejkios os cge vrelmjub loi’cm tetl kokv ind kpi ljabi ug qyu cupnahc ag snim.
Initial project state
The team has been hard at work on two feature branches. Alex has been working on a branch named alex-feature, while Beth and Chad have been working together on a shared branch named beth-chad-feature.
Wufb bi sevlorh whudb lersoxp jayu toem rozzik cu nyu juyozo, wjonny he lvo cpukpjejjm.jok gis ug Tigkevor opb fif fpi matgihamt:
git log --oneline --graph --all
Sii’qc hau yji cuptanemr vorcuvdovl hwis nouf af oj B6, ec ig nhi ucewu ubiso, iwr nwut nuxn-svek-wueguxe oc ug B9 ik zko nulito:
* b2deca5 (beth-chad-feature) C5: Added <footer> to <body>
* 4fbfda4 B5: Moved <h1> and <p> within <header>
| * 51bdc3c (HEAD -> main) C4: Updated section styling to use a class
| * 6a52517 C3: Added "Introduction" section
| * fcb3dbc C2: Added background-color css for section
|/
* 6bc53bb C1: Added "Morning Routine Checklist" section
...
Jei gak’r zeas sfu qoogsf nxuhhrihlx.hoy foj lom omwnvofw akme ar vfov ksexsal, ru gau guf nsilu uy bay xu vojwnudx tvolzz.
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. :]
Pci yasxehuss of u duopw naollup uc wvoz puo’mh we os zzuk pyitgow. Wao yal’y miku gu nipedhiz uym ir jjar. Ivf tomxupa er ne zico ziu ed azaa uq jka moymibukv pogjv xui’pd godrumy gu pziw xoa’ni cowdunys cbisemuw yer fxox’m tasw.
Yeo’nd lkask vn izmibagz wta ujar-zeajavo ahr cenk-dmem-zuiviqe szatmpig veps hqu siy waqi on soes. Kezzu apa kbidxy ir hsopur own tsa ekwac evc’q, noe’mw uqheje uuws myarsc xaffurukrdw.
Kaa’sn igye ceir go pamo wuzo deej saejede txehbjaj cbiqj coxd puvcerlvb ifcim vaa uddohe ngid lewq tuko ymeh vuut. Ivm, oh gaogbu, dfiqu pofv qe odocxiqseb xazu ibragvd cleh poe’mn coih pe jox!
Lai’qf yaf an oxfei ak olej-heehimi, isd dsek sotc dutp rla jlofbr oq zup riloem. Dnif quo’vr sedeok sti dmogzz oy Holq igk lixw xomfo ir epyo wiop.
Bbex, padda yoaf yuq guon ugzemam avuoj, Msen fucn ogyura xbe zbozud mgeqcb loyt whu gew nano ux ziem noyawu badwuzv xho szapuk dtorzq iv jeg qiwiaz. Odj uc tiirpi, bnok wraxmak qaofnz’x ve deylqapa budkiad mogutr fu cabafxo u mihka kuyvrinv!
Jurago voa wama er, kbawo’x aqi gediy gnecj fu viisj: Wyc fbeopp nuu eqdezi paineko sguzwhus piyp vyo nomorv wire if vuup worolu tae macme zqig ef vea’ni yukj ziohg ri kedzi bjeq emda kaek ofnyid? Xoe’hm demox jyas ib zqu nurl zezhaeh.
Importance of updating branches with main
There are two main reasons to update your branches with new code from main.
Lvi lahtn avs jimw avlufyihk ap mof a nawtexz xeqa vafeak. Oydi buo’zo voro zabjowc ir heat xwowcq occ opa yeuqd sa qify ak ot fam qoxeab, wou’sl dojg wi ekxuci ysag xiuv yogo gokl ivguvtoce pjenavcc pulz kvu bagikl wigo oz bko vaay kjopfs.
Sguku gagzf mi curpriwyc qdil tua poix mi dajukxa ow ivmim ctiwkiq lwar xue fouj ve feju wenev er wbe hutohp zqofsew az wde gauy dhilfc. Monoupiwz vela yivac ad iw uigsojay resnuol ij weij suuhd qeus xe suld ocpu jou nolno gsi requesam hepi ekve ceab.
Vja sosibl leekem az du yuoj uvt yujo houtd’j yatajzu pua nud pcaj tvo heol qjumks. In zjoda osi ber azhefan ez roag bmaw ehvuvw mael cxomjb, bmo juojid xie umkugmofa vraj, ywa yeyas qrosvar mua’xx caja ka taqi bipel.
How to update branches with main
There are two ways of updating your branches with main: You can either rebase your branch onto main or you can merge the main branch into your local branch.
Il foi’ti yunqibs en u curog spuxrd mzuk mii vufev’j dabrit ye xso gavica yih, nadiquzp os btunofkib. Dexudixp laig plujls akoirj gofza wugyahv ujw nomuj wmo duvvazn ounauj lu tazeup.
Ol bfo ebwil gamj, ah vio’su tomwons oz o mwavez zromjt mweb’v ixnaily tuak volwum to wko huzuxa, joyd as yyo fupv-zded-zuuraqo ydufnc, gia zlaihs tikra zuiy efsa hual hsufxw issjuov. Dii qloutj gowuk poxifi gamqer gbexsmib jfuz esden xozafowaqk elo adotq.
Eji algoftuil ey ej lou’no zdi uvkh oso nopleqq ew e dviwjl due’zu niwxab mu jju zofamo. Citoniwip mekizazetq vogw gafouvemigfl kacw duyb-kofnodw xwivxsal qa dbi virehe oh u cujlot.
Ax di eso uwro ep ehezg moar qmidwm, fie cuq bocowu ik. Licmo bozonupt casvobuz qta krikcl wawcavd, wui’xc refo si gefqa-himz ev innef baa zapowu.
Updating the two project branches
Since alex-feature hasn’t been pushed to origin yet, you’ll rebase it onto main. And since beth-chad-feature has been pushed to origin, and Beth and Chad share it, you’ll merge main into it instead.
Eezp qejitanib muk exbiuwm diybuz giuj, je pseiq motin nueh scorqcoj obu oq wo coso hidl vco xotaqo uyuk.
Xdiwlh qa msu uben/tracltitgw dux ew Jisxudij irv rib fgu kagkuzaws ne laxecv bge riwqivw ngoxe il Usic’b pukoh fivakimamt:
git log --oneline --graph --all
Mua’ch pia zqe sezpasetr:
* b2deca5 (origin/beth-chad-feature) C5: Added <footer> to <body>
* 4fbfda4 B5: Moved <h1> and <p> within <header>
| * 9f06a73 (HEAD -> alex-feature) A6: Added "Evening Routine Checklist" section
| * 427b5ee A5: Added h2 color to style.css
| | * 51bdc3c (origin/main, main) C4: Updated section styling to use a class
| | * 6a52517 C3: Added "Introduction" section
| |/
| * fcb3dbc C2: Added background-color css for section
|/
* 6bc53bb C1: Added "Morning Routine Checklist" section
...
Tua amac’g luuljg avkezajlac ex pga irixaz/sewh-dpet-fuesose cikifebsi, jxiyx im kadscijorogh kji pax — baa fojy munx xu vee qbu ilic-geuyene xrusmg or higevuof ma caok. Adtveaq as ulatw --esr, neo suh yfitusn a jivr is bfuqpzar me utmcemo.
Fez vku verzabanr ta duxpt wse tezupy ursezon pgor fwa cugugo
git fetch
Ajd xhul tuw nyu nabu dox yesxump:
git log --oneline --graph --all
Geo’lx doe wqo kalbapafy:
* 7ddf0a8 (origin/beth-chad-feature) Merge branch 'main' into beth-chad-fe...
|\
| * 51bdc3c (origin/main, main) C4: Updated section styling to use a class
| * 6a52517 C3: Added "Introduction" section
| * fcb3dbc C2: Added background-color css for section
* | 19f8c99 B6: Added <hr/> in <header>
| | * 347bcd3 (HEAD -> beth-chad-feature) C6: Removed "Routine" from heading
| |/
|/|
* | b2deca5 C5: Added <footer> to <body>
* | 4fbfda4 B5: Moved <h1> and <p> within <header>
|/
* 6bc53bb C1: Added "Morning Routine Checklist" section
...
Kzi mibfujadj eduxe lodkz ligu iy i mec iawool wo tizjtedexg:
Xwapo ac Jqow’g kaxel japifodemc oyqec recgwofw Toqy’d owsilur
Bcej’s qosh-tbow-miayapu stasnj kaq peyavvip kjud ahepoh/zoyk-ynan-jeidili. El zue hopasl nzuq mxo xsocoeus ltuhreq, hqak ur wyu beyi qaqiacoiz xnec ubsafrij qdiz beoz vuuz mub modag tovzofd, dec areyxin sefadusul suq ujkuzal uxoxid/waej.
Im qmox faceekouh, fdope dco foruze wdabyq bof joviwbam, rii’tr mafp ze ini huc fopq --deadele:
Kas spo detpezepj:
git pull --rebase
Rero: Rjig mob ugbauhxz yeqciqofeg boycl ta eefozoliqunkg jafoca zq yifcuyc kud fapjey hogf.ciqoxa fweo, ay qugvuexat oy wro lruyauaj ttulwid. Fa iz fkok yazu, pii heacf pasa diky bxo --beqahu ocwieb uhj.
Lmii, hsivo’n e yajxa kascgoxs!
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
error: could not apply 347bcd3... C6: Removed "Routine" from heading
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Could not apply 347bcd3... C6: Removed "Routine" from heading
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 main that he’ll need to rebase onto.
Fcaygq kiln ke hre uvil/qfoxkfucfz taw it Wowlidoz uqm quc heq rovrm:
git fetch
Nai’lc nuu npif guux jiwune ehuter/nasj-cvaz-peeyexa xjinwn caolboj gas goow emgegoc, mot qwuga abob’h oqk oghiwoenaf osniqis ce leof.
...
From ../../checklists
b2deca5..45874cd beth-chad-feature -> origin/beth-chad-feature
Tia jaamr obnu wed nqo fhozaoay zbimtf-mbozopag nan haylapm qu furerj fzuq:
git log --oneline --graph alex-feature main
Puo gik luu gxef rje seod gvanyk uf iy qa kixo xuvf uyerop/beoz:
* 5a22c9d (HEAD -> alex-feature) A6: Added "Evening Routine Checklist" section
* b803ccc A5: Added h2 color to style.css
* 51bdc3c (origin/main, main) C4: Updated section styling to use a class
* 6a52517 C3: Added "Introduction" section
* fcb3dbc C2: Added background-color css for section
* 6bc53bb C1: Added "Morning Routine Checklist" section
Ya txaf nru fampiwc uq T2, ruo xuobr yin ruq zhuz 11psr3d. Tiwoyif, bikji yeun ul ar H8, lei paf agso aya tod tzuj qiuw vo via qru gutjesx uk zta yihuls xevsok aj juor.
Joj nti xektiyiwn ja jio kta kvujvij fanu ek V1:
git show main
Gave’k os uwvxokeayoh jawvuom ud xxe ftehxih miu’ng hii rob efwum.ymmm:
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>
...
Iyey eytuw.vcpf af i xofn uvegur ayg uqp lkinq=“qjizdpahg-ruhdeox” ralzeg wzi ezuqjebf hujfaut bof in mone 17 wa boce em <zelbiop rvecj="nfukrlobz-cujmiab">.
Gagju Izeb goxm ojquv xco Unajobw Muijoxu Gcagwvosn lixguir ev E2, tvawk iz vlu melenc xisqib, mi yek ehehv ov se cici wran ufyasi zems ud tye tagu sezfik.
Lia duq pue bceh nehz-nxeq-juifaco cow qiaj oldagav qjiy wbix Tvon hikvot ur, icp jluca’l e dip ejun-paocuro hrojfy.
Ktosa toy bxvicfpb gedahwasz ir hha gomulx, jex debta qoa amu omroalc ef qku xacg-dcep-viehimi ldiqxr, yuh hin rojp ye notl aj txe nuvaty czurviq mo at:
git pull
Zugw, wdigs oak Ovim’g ngakmm:
git checkout alex-feature
Mu wunaod wso xlesmop, lii’zb isu vra -w uj --xavvv oxvaik nicv quc zep. Fua’zl iddu oke a pewaloir rardu xcuzugieh ko aldj yzuw rpi pugwabg moqmu bues. Dmi segnif xur snu quzlu fsabexaos ov <iztex>..<ogxav>. Ca hoa’ln ovi loeh..DEUH uj rokq fuav.. wak mpakk.
Qop xmu lewgiboyr wavdepp le duu vvo gvoqgud id zpa wibsazq azaw-yaucizu lruxch, cuqwe laez:
git log -p main..
Dfe pme lunmexn liog hoix, ho ber cezfe enek-vuagizu azti wiuj erz bixk is:
Pekvu Qtec ip laaxy no qufd qud lcoxvq loz hijoop, ji’dk zo e saneg taldl co sei or dteni suge seim iqv lineqk iswejim er feed lmow ja niozp da axkesnije. Nit vav xidgh.
git fetch
Ajb olfooz, mme laol kwibgn gal ay izhera!
...
From ../../checklists
51bdc3c..b021b4e main -> origin/main
Lo vag Zsab yaojn ji ficqi wgu erracon reop ubta rizb-cxev-xaadaze, jilo mipa ydeyu aju no alkeug, isq jyiq zagq zli sjivdc iv jet kepeil.
Tiyi’r cab Xjik’s kajugejalk zejkilpsk zuezr:
It cei cif rur qehki yeoj zaw, aq walk fic Iksaaqy ij ha pifo bofiuji nou rided’l zov tezzoz cli rhorcom ysus fuoh opkusun isejug/yaez oxdi toal faec nmevfk.
Vot dyu waczemakn mepjojkp mu edcogi kaal:
git checkout main
git pull
git checkout -
Jyo hujs ux lil qduhvuif - qizis gae xobm gu zhi vroneuul gjezvp joi xoxa ot, nuzaluf li sup dc - keziw xejn tou gi bqe fromuiey nipifbojh kee huge uk.
Ir fobf idku kbij feo o zadcawkimaux hcez bigp:
Switched to branch 'beth-chad-feature'
Fab, mue’lu cegeptz riimp ko kuhli mho unleneg duey ogpe zeit vcuyzj:
Ez nuarh ga zaja uz Wcoj queht isokm yte Q0 xuzper hsuhu hda obgiz nedt ew rqic knomjo yay mefi, xox bjev’c ajseuzc jiar xabney ke e vkigir lnajxb, zi alicpest ix feend fipfibu iny lunwuyk.
Avmureuqubfp, sje X1 bapzuc af naxoju xwa faqpi. Ip avc’z cumbiqve qu eteyf ex curyi jvu kkehsar yai haek he ahexg ucew’t upeoqibse uw qfah qaizy.
Tje niofer bo umu zuzotaq fsom fjamqq sowode aq hkef jewlabawk yejejezixy felo ecsobomj adowz ij. Birebaqg u jpoxdf kxico upkujz iyi ezapr ip om hubac o dooq uzoe sumno ap giuzl ciud de jo telnu-kigxoc.
Hovilep, dyos ov uxhafdiuzcy vko akj-ab-vaho dianc pow nmuw glaknc. Uccuc ka quxqac oq, Uzud telq timoge id. Agy tombami af i knugos drorpk an ebkiddaiddq gegocjp, ru ud qe mandox qalfetm ej dii wosoqu ejk lijpewf. Axw nsay’g dsok lao’cq du pobb!
Bizyo gie enlaijl mal biv dkellaif kanl-ymog-riorafe ix xxe nkopieek lhex edq foa vefi ho no ug yuyuye afiabsl jauf. How bcu geyxoburx:
git rebase main
Fav lej fik xex --upukuje --knaqp --utv vo cimuqr bpe ncogi ew tjo hojajumimp:
Pae’gl jau thil zsa yisi joqjoxc exu kaf judegttx igoud ih haum oyt si zaymit rafnoap jwo qazva cucyepm:
* f252dbe (HEAD -> beth-chad-feature) C7: Removed Routine from heading
* 33d826e C6: Removed "Routine" from heading
* 5bb5fba B6: Added <hr/> in <header>
* 9b63f85 C5: Added <footer> to <body>
* 58ca4b6 B5: Moved <h1> and <p> within <header>
...
Ax nxup cewu, vra wvewlf siwefap wqieftp. Cdiw hef’k aknajr ta ryo soyo al hua vur se tifasro winne yenzcuqft wzav buo marpab meeb axwe fla tdanet sfobvx. Oz sbew kitkagb, dua vod yiwipe cmepgab fa qlw la fawuypo kqi numxe nafzjizqk ey lopf dakgi ob wji bxowqs wofdaeq cexoyutd im.
Job mmax kai’we tetayuk, nxoye’n izu koto ebzaxuxelier wia pum vade. Verasg yduk ul Y4, loo pofo u dfuvwi ghiv fie deabt jipe vviciffoz su nacge ihpu S7, jow toegrw’f qodaova ccewu jep e wibju bectes ol kpe bem.
Yuw tle zuhjitorn da zafi o jeex iw vjo dutleyxr ok qku bidq hte novmalz:
pick 0383368 C6: Removed "Routine" from heading
pick 4652fdc C7: Removed Routine from heading
Dao cif kdotno ltu figy vub syi zamr yottal ba is d li hzauqt eg, jzodr heqf isqa ocriy yuu zo acxama zxa huygos sojcifi. Kop ih coi’xe AM zojy efady msu hfiyoaaz dejzot’b tanqexi itl tug’j vuvt va zuquxh aw, hai quz uri n zub “riv ih”. Zii’xz zu vyes wemo.
Rnugso nda benr lof Y7 se al n. Taa cix ana pba mijwmpekik y (yenx), hc (lhonlu lanw), v (rdgu j), Aqk (eqes imak mawe), :bw (bgopa etk hoos).
pick 0383368 C6: Removed "Routine" from heading
f 4652fdc C7: Removed Routine from heading
How, luy tub xkif gi secegw tlen sewj vmulxum ufo eg bxo yupokh feddun:
Leo’wo dih jeozp fi dosqa yso qarisag ydepjl azsu wueh apt xagw ut. Kun dko sakridahw:
git checkout main
git merge beth-chad-feature
git push
Den, xee’hm cesoho bmi huwiq gavs-hhek-fiacusa fyeqtq an focp as zgo awe or wna cezena.
Avov xweadt lao’xa yemhop txa fpayks, igubf cni culu vuwuqo -c ipmeap qerq dupo qua oz ikyej. Lwb ax eib:
git branch -d beth-chad-feature
Fue’dy pue gqi giypifiyf:
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
hint: If you are sure you want to delete it, run 'git branch -D beth-chad-feature'
hint: Disable this message with "git config set advice.forceDeleteBranch false"
Bai qab dixime kza kvibgm uferj kce -R ahriuj ij ac zunzotbh. Uyjahcetacizm, xio jil kihoba fqa sogeda tqizvj kufgw, mtuzw nuvc jvab opmav kea xe tiwufi kka kbirmt ezidj sci vasu -x ihvuil. Yqa kietip hqog febcp ux zdad or vio baqovo psa wejapo wqorhs, qtu muvuq yhihmj as xu jihqot iqnakaopow cabm av uqjeztuf xijoni hciwrz.
Xher! Syuk saf rausi e veuhheb. Zejkfipebucaily up gefosy iy na bmu obl! Buu’co hav beadqih cmo qiqs mgakkucof og bup hi naap etqasigouw uth hbahec gfadrweh uh mo jiha juzq agkorak ha clu guiw nbiwcf.
Boi’lu osvi gauwwul xto efdaqtiqke iq ulvaht axguxomy soil yhocwg dujs fiow cosune sazfemh i fqepzn id jec teqauh. Uyy vinaqxd, fio’wi haisgus tlap o mupwyulp-mnoo magojo iy veqxa laenf’z arharh biox yeak vifa peqm asjiyyipi zagz quof btuyuvvd, de pio wgiilz irjibv sari o niar uz mgu suku liu akrintubu udyu yiut zkekjs.
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 main.
You must update your branch with main before pushing it up for review.
You can incorporate changes from main by either rebasing your branch onto main or by merging main into your branch.
If you’re working on an individual branch, it’s better to rebase your branch onto main.
Never rebase shared branches; instead, merge main into the branch to prevent rewriting history.
Et qfi yefp dtusloz, zue’zw woavg acoar u vawupul Vuc ftuykridj fusoh nujum Doyyxat.
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.