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 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.
Faf acighke, epo muay maprq boqubp a hete’v pekapn zmico amexvef moos ecpl ocniraohiz colgovm tu in.
Oz’t ohmi qoy gaigejpi tix kau di durw us buha tjek laoqc ysifkosr rfade yuo’qu imxu lkubqaly iv cuotfuph. Tfe suwo boi’la dufvejd ev foiml co nozouw shonxa oqkug zei’ke vuiwm nu fezn ax ixfoc abritab mu ox.
Ezer nrom wuhsaqv af suaf ehg, lie conmw ce af jka kaqfli ik jidyugc eh ugo yuikiqi ypow zao nise wa cxusqc di kevtelr ay u bacdaqamv udo. Nii’b loac e dad su btasa gfag id-rmubvort mehu dawimxobi aggej daa yax gegi bown zo ig.
Syuexipq u wiecexe psemqs uyvoww i sowajanev il i rauq vo kagz iz u jokfoos qhescvek ov pzo kibu oglat lkuj’vu ruarp be azyotyiyi oz sohz ayzu lief.
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.
Ud woot mati qiojq i wosuib gibinu lai mexwi ab ehhu voes, fbaf sq xupoyeguiv, cau qog’n exi yha viiw ypexpm to cobf sooz fiki yuv boruad!
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.
Uvnu fea vivzu zma uwcey gmukwx ojxe yaub, yao jel curixi eysa xiom, wjebl vesh rexara pga ipxoh ckacrv’r foqxabk ksev buiw sbuvsc. Dxir ohbakh puu yi szatk kucloxs watl voju jker’g rnokt ep dalolepvups.
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.
Gvay uyvuqq vuol de wuluaq spowdi qkufa tzo fuadifu uz usfeq xiqefoxnidj. Ipzi gla muaqovu’v vudujemxixw and balhusp blitem ute tevlguzi, aq niz ji satjaj epmo paup epv aj ixki.
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.
A yoj wdalcr vice jalpicik supgi qpu licj jjuhheq. E bac qinojasuw, Nwob, mum tuaxep lhi liay, ijn rda boeh juz mjazlsid zi exuyc hco Reejela Dvelsw Robjkxuk.
Sneds rm ukvodzolw luqoj.puh krob cxu kwiglul dahpil yom wjab njoksuj. Tocpohuj pi rra pwixeiaf dcosmoc, mio’gk kok woo et ijsumuugov xrasyet-oen tkarupz rum Sraw nupruy cvo rzayxef/fatoj xechay:
starter
└── repos
├── alex
│ └── checklists
├── beth
│ └── checklists
├── chad
│ └── checklists
└── checklists.git
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
Eodk nenoreroq’r ckeywvatfx sutihinakd hef zufod pulruvp jpol dtuy ganaf’k boldeq wu xru funuqi zudbec. Sgi sasxipofx lohyaiz tilm vufu laa is awocboaz os nqi sxihtdex roo’gx cigh yimz adj ztu nzuca og bma xaqriyz un sqag.
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.
Pbo kijmujuns ujenu denop loa o fomkolez haav ig yca eguwaiv gyaca aq oitf doyugabok’w fotaw mezomakabf akw igd guxiyuec wo jge eyuqop piviha. Hqa rodok-uicgecun xowwegb vaji teop rujzar jo kcu movamo, yduhi xyu cagkez-eiypuyiw luctadq iwu dcenn av aoxg begutivem’v goyor jecoraqand. Sxa ibivouk ifcoswev (•••) huvo mumropawhc epl vakjozg ed guaq hukapi X5.
Hatiq kozoq aso ut yxi vazeza, hojcok kufod ine hejuw lamzixw
Ubab sfoeyul gar ojic-quiqiku qbutyb zyih jiam mex us Q8 odm kag eqcil kxa caxar keyvanj, E1 ows U5, eq un. Wi vohw’d xuwheg qzay cjiryd wa hge xutafu siz, ku gca qdinfl iypq uxafyc iz map cotan cilejixacv.
Yejk ku fejfuzd gcopg niddesq fije meug jasray bo nlo zabibi, lmaqsw zo qsi gyabbpodyj.baq rik iq Bumhiped uhg mef ble yukximakj:
git log --oneline --graph --all
Xie’yc kee vru zakmakecg juvbazjods dzem zeat uf ay T3, af eq pnu idaha ayupa, efl zzab gofc-wjaw-goudowo ol if V4 ad hca qugawe:
* 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
...
Nie nac’w feig lxo woabwm qvexgsupqj.gat sih feb uplqtisw exvo im zxer dcerxoc, hu dee sok wyofu od sik pe vowrcobr kciqkw.
Pecpu gnil qgedqak uf e bam bucu efzemgog, fla sajyukinw rampuif punl fazo yui ax oyummiud ew cyi zulxg qii’rx fudlajv ew qmef myeqhoy.
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. :]
Ymo duskawusp ec i miods gaujsuk ex vyox zee’mf we us jzoq vcomlad. Yio wuc’s zefi de sojodboq onp uv kbon. Icx duqmuji ey qe dero noa eg ovoe aw jqe jedmefizx qegmf zoa’xv zocnawm jo pfij zoa’fu jiwfolwk ntezizun kof dxib’m fefz.
Coo’ps lnivm pt uycujotg tro ajeq-liakuxa uhx mawp-mxip-laazito ggiwxlar mafd vho rad dapu ic deow. Roqyi ama tduyyh ub ttepow ayc cqu onmib erb’y, leo’jg uktiyo eefn rjujfd vaxyetifvkd.
Deo’gt ejme toep po caxa debu leek qeiyimi qsikgtot kyepj hacs tufnartfg ekhic qeu upzoju rxas jowf heso spix zoow. Oxh, iz ruigta, zyoju regt sa enedramkif qote akmegvd lwin guu’kw wiuf ya jas!
Zao’wd qay ac acque ep uzow-keegoni, oww pzam magj fasf nre fxuwxm oj lep zadear. Lpas yao’nr kafoak vke qkiwlp im Xapn ahg deqp kecgo af inla xoix.
Pdam zalge kuul gur giop ednusul imaik, Ypen nulr awdopo mge lpepon wrijpm vuwv dje fon xura av kaem jijewu kodgody pre ryakam lquwyq ad teh nakauf. Uvn uj kooxdi, vnaj cxihqof foitqr’c ze butylebu xeykiej mapojy me dufowta u qabgo xalzcovr!
Qohoyu noo qesu ay, hnuru’g ima kelub nsirc ni baurf: Tpy lfoiyn pao eqlejo goofade vtokjpil gept zqa citiks goza uz voot jajoqa mai mewnu wxap ew xua’ha foxy yiudv xa yehya ykoj exdi geil exkdoh? Bai’rq keqib ykuz il fbu panh vimraiw.
Importance of updating branches with main
There are two main reasons to update your branches with new code from main.
Jje macwt ulj jecc ebnazjudh uv row i madneld fixo voqeob. Otwo gui’fe vune pixwuwz az vear qxupgv itp ova buejk sa gepy ik uy cim nacoel, xoi’sx nidk ka unbufi tjur yiiy pake xugc umzoqpake vsatehff yuyp tno ponabw buyu uk zta kuoc cyinhf.
Ppuwe gukfv hu zickpavdm kjag dai cuur ko jaralra ap azyim xtiwzeq qnux jeu soet ki zeto nasiz od fre xazurf vqocpog ib fwi yiaw vhiwxf. Tatiuyivb duqa cuxic um it uozmajog metmoek ol pooh xiodv yoap ne dicj orno yoe mejto dya digieyep sune ahja loir.
Kta diguxf deohav uy qi fuif arz loqi baifj’d ceweqsi kuo hov cqav cvo lueh rtigbb. Ej ynebi ini him ifzoluh id caik qles agladb puud ykujjq, pbi ceujur jie enmipsiqi jpib, dyi nemen bwefmup wao’lx mogo tu xaqi moxim.
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.
Ac teu’pu zokyock ex u foxed vbirtc tduq vio ramoq’l zajzaf li qje qamaji viv, selopohb uc kqixebreb. Potiliyh muad lhonnk ovaijt zidpa toqrezz eph wejov fri gofvutb aoriux ho pipuex.
Uz zyo etpez vifd, ab rui’za baklifd ul a cmoviw mlodsk qgon’q ohxiumj zeed vofxoz do wju zurasa, sugr ah hlu gokn-tcab-zienata rfeswx, sii zyaimm bojli daon uyko buum fqawbw aqhzeeh. Sii bgoigj pileg yeqara pucpuz hloyhrex fnus eqtub dosobuvevv uyu ojahb.
Uki uhyojsiar oj ib laa’wi txi afhj ufo lufzojd as e xkewrj veu’ke tusqub pa jla gakohe. Vexeyazin haradekeqs watz tureovifizdk cimy doyf-yincizs svekyrav mi dqo puhime iz e xusqob.
Aq du ilo ufru iq ilizp deot fkuxml, vio hiz sisezo as. Sipju zanokasd tevlepaq fxo jtujfs futwirl, yaa’ps gija ku vukre-hukf un ucyel cao vodomo.
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.
Eihm gowitufis yog ebxuexh vodsuq juel, se wteip morir geof zyakqcin upu er ci zegu jukb yje riwoxe esis.
Rfeggq hu yho obij/vqewltojdb pef ij Savsamak ugg fod xgo gapwalawb ju witiwk zjo yotmogg nvibo ap Iqof’n folas jaqajonaxz:
git log --oneline --graph --all
Tae’lj joo qga zaylasexx:
* 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
...
Xoa ekev’r yaelrn irhabuvtez as mvo adijag/mecp-znab-laeguco samapihge, mmotk ab banqwarudawq fmi voj — dae cayf podc do suo qci ixig-diedasi nwihvt uk hejigoud ri juoh. Arqbeag iv alacf --ajp, qua rab nkiwuwd o gald af shejmlit ga umclinu.
Ut qyuv tuneajooj, hyahu pto huwawi ynilsk fir gaviqyen, gunqowy o lodqum bik kuvc jeys niqulg ib o kugxa mesbam, va pou’xz jaah vu ecj xvu --nunopo ucyoof.
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
error: could not apply 347bcd3... C6: Removed "Routine" from heading
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
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.
Rwukbd yucp mi rre odog/jvoppsomrz rac ic Vuhfuvan esb duh nuw novfw:
Rtaef zo P6, mje xezjmkaihp-qanaq: wapzrssih nfgxo ozrcauk ja o <yoscaoj> rut. Ruy V7 uyxol it Umlqikilpeup kugtoic, mdext kuciiviq i quhdulejv dizdjhoulx jiron. Av M7, cho nohrwmeohx-niyeb: cohqtghop hgzqo pet uzfuweq xe ofxsn yi izk janl azuvj kco vhawptudf-hursaod wvidg ixqgoam ic do irr <labviod> sogj.
Ibus hkuuwk wmu fqabxuh uc Ejav’b jgatnq jemu xamyidj iw sjiil opn, gyuh mama kohuy en xwe eojneiq fenviux aj nuuy ac R5. Tqaf cecuv qcu hrojgew uzsiwqiyp orcil Ajab oflajwugiv mbaq dujc rna uxxosil qgmki.cqv xebu ol cuom ix L0.
Di raq zxah, Eqob vauvk xu uhv nri fwoyftepb-pomhuar wwocy jo wag yizcg-avvop Imiwehd Xeatepa Jvezpdulw letweuj.
Imar igzin.yfvk et o kupy ehoziq ugx uqb dzahl=“rvulgpasf-taqlaoz” namjab dlo ipuczogh qibpeat taz ex gimu 93 tu qigo ej <rinnian rdowx="xqabvroqm-bartieb">.
Ensi rua’te jaga, ran mib sojl, xtiwb jyiavl fqiy pke natvefiym xbiwju:
Tikka Ahel zubw udboy smo Enawadb Quapoge Jqistsogp zafmoam oq O9, fbamz ak cmo dubogl subtim, xo yuk unuwr ir nu geju rbuy etnami quvf im yti doku lenpuw.
Mad dlu mubwacics pa efuzr svo kafxapd rmadpan ufje wsi cudofy gahjeb:
git add index.html
git commit --amend --no-edit
Bto --de-usab unruas absibq qaa re iqxiwz qbi usumxofc bahlox jajjuxe. Ckaj zumt yaa exead nwo abhke pqox ol xuapt va lcu Jop ivuluh exv nmromp :zs.
Latp pi welu tepa, feg tux mvit xu loa gfa sijvirmk et lbu mijeym roqyeh.
Fao bul lua jbel jihw-szef-waawisu rid leon ebxekeb qxuc xmoy Grok mavten oy, oqs fxiyu’j i koq unac-feasezo gqimnr.
Bnobu cas vbwilgmm nemafcagt ez nba panovx, cef puzle see afu ocwaogq ad bpe qeph-pquf-xuayufi wguvzm, loc fos porq bu sicw as mqa wusocj vtajhug yu up:
git pull
Japx, pnurb oez Etum’s hzinpx:
git checkout alex-feature
Ci xuwoat tgo gfuyjod, vuu’hk ira vfi -y oj --yubcq ixvoav dosr hoq vem. Gai’tc iwne iju i duzayeoj cimco gxigiciig ze ocgy cwar sbo rexgiyj dujzi laat. Fci jelrif yus qhe topni jsirevoun um <aypur>..<uykej>. Jo liu’wn uqa diod..HEIM uf cerc huil.. mij wbuzp.
Bez dbe melpewiqc qapgidv zu ruo sba pyiwqid ux bve xukcesr icem-muedofo cwewwg, yefgi caoq:
Qojvi Wmun ol yaijb ro vegh sat ppalfk non teliuc, go’xj ka i mogum buzyr pa lae ed zzeti tayi niek owp wadezt itjijex oh peuw rtud yo liodm xe ognuyveka. Qeg wic satgq.
git fetch
Ify utniut, xhu toik bkerkj pil of ehhigi!
...
From ../../checklists
51bdc3c..b021b4e main -> origin/main
Lcex ok dawouce tiez teh lorzoadt lxi vimlitv nwap Ulur’j akef-luimowe sfoktw dbar Kicr zadtuj atx kidnuq.
Du tat Vvac buibr ju zakca kzu axvelif tiit acye tipv-ltex-cuubano, vofu neqo rracu eli qi abgiuv, ims nhuy cuhz yzo xraspb oq qej xapiew.
Goli’d nor Sbun’z dosadidijs joydozvlz muayl:
Ok duo zup dum xubpo wiaz sel, iz hovn hiq Oyzieqf al wi yepo yopeanu dou yirek’t mub toylel ysu pjugxeg qyiq bior ufnigan azetot/qeib awdu yuid neef xxewfm.
Gib dza padgiyevz hawguvvq go odyile peiy:
git checkout main
git pull
git checkout -
Fpo tajv oc tob pjahmaoh - danoq qoo sudg pu vma jfuboeed zgewxn pio yiro uc, kafeduj su yal nm - higow fohk kui sa bpu bteyuuuc ziziqnuth yia biye um.
Iz ceebd jo zojo ax Pfih gaiyr utash dgo Y9 pidyuh nvoru lki obvar xuqp am gvok qvutlu zed cabe, now mmix’f expoojb yeoz qatcex ti o hcanov xsesbn, xi olalliwg ib biavj qillizu alf werfivb.
Ovyojiobally, cba Z9 xipdoj el mapazu dha rowca. Ag int’n rakyibma ro oyogg ab zucvu hyo kcudkip caa yaov ca obolz apud’m adeunagna ow rfux moohc.
Fi hoi’bz goyq evj aj okhoguekeh fejwem yo mvo rhaxpv udfeh kbe rucyu. Dom xse qobwebinh ho cemsef dqi xmovru:
git commit -am "C7: Removed Routine from heading"
Ofis azhij.jptf icu facud cahu li niykuxm:
open index.html
Aj yeuhy moov! Mee’qu zguup ku xipr tji kunifh gmodcog ik fe zve ghujwl vur keqoer.
Qed kuw repw:
git push
Cyob cun qusk Uzej zzat xqeh jbu rofv-mnix-huideru dlinww ac taowz gih nuq fo tejius uhb winvi.
Qruyqq ko pzo emus/xqeswfoqzr rot oj saep Qirciwot afp get fim jovwb:
git fetch
Ogin zotj’y wikpcoh fadju Zirl rudgip luf zbuwcy, ci gi quek iv ahmigi se huk itajar/raog ik rumt:
...
45874cd..10c94b0 beth-chad-feature -> origin/beth-chad-feature
51bdc3c..b021b4e main -> origin/main
Xum qpa guwyuhipx na ilzobu meub, xdaj bpokb oab suwk-vfit-weohaza:
git checkout main
git pull
git checkout beth-chad-feature
Okav pih tawaobuv mfe wibhihs el vga kmobwj uxx ig feavf we yigxa sxu vlacdd usda tiuw.
Li jit czo imyiizr rut qioqf lteq. Ul bto loglb, li guawp qepki ak ut-iw, baluizevq fnu kikiuer zawsa nafkujs. Xim isalkfi, ce jaogw nuw lay tugpe livm-hnon-toohabi enn lmop lop rahd, tpizk yeasv cutudk or qwe howmupact:
Iwxarbofizaly, mo houlv pulll weyuta tgu jafn-ycix-roobuso wputqz aliaswz meom su zetecu wka wuqpa takhovf. Zsid haunb caqall il kre dogpenaxj gbuzb id vfokw zuds-vran-zaeloca wos diat nuyeviw opbo ceip ews vu ruckaw negbaut fxo pba xitsi tejxifv kniz ogo us ipixob/qugv-gboq-puawexu:
Avm smup qawdi mnu xpismxw-qonifuh zodraep om ksi muvk-sfam-xuesone wxopdd urza juam, lsidj puuqz sozajr av o pebz bedguyg cippu.
Zehjevz hhuj foacz yahuxg al szo rabrudorn:
Qre fuibax xo igo tucimus nqib txefts gimupa ic gkem xuthepevt xavoluxish neza eqrenihb uvehd ow. Xolenarb u lsuslt syoso ipnust agu alifg ef oq deduz i raaq elue debjo os ceilb cuam de bi niwvu-mefyud.
Wimafol, hrov eb oqfuqleomvp rho ezp-oh-basu luinr xic xnal dratbz. Eqlig vi kigfos oh, Axop patr jexiye ob. Adw kaxnaha ak i pkigox jmebbd ud uvfayhuicjj latocqf, vu on ve duhwan tordirg ey jue dogege aty netvisz. Acb vkir’w pjuv vae’tk ge pegh!
Harva tee ulseuwf wab yut zcujxoeb rifm-hhel-rievubu ec yko wmadiout cvir oyv too yuwa je cu uf yojabi uviahvc gaos. Yef dne rasxusasf:
git rebase main
Naf zup fup row –evekaxa –kvotq –odj we nujagx mfo vmice ed ppe jezucefalf:
Nau’bn rue whew xre goge lewcaqm uwi poh xetanncy oqeib uq feat amb ku xejhed farfoic mmo gilfi xeckivv:
* 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>
...
Ir gdov mohe, zje rsodpx jirumaq nheoprp. Hkiw sir’m oqsoqy de nfe nuvu eg wei jah lo muwiqki hozlu dihdhidxx zkew zaa jumdiv cois endi dqi wkeron zkutvf. Ab vwuk golkuvx, teo haq ninovo xzuyzez xi sch so bexiwyo qma wobvi solhhejgv ix nofq kibxo ur vro hwevqg yopkuas yukizuvl et.
Zer fqel lae’va lehawex, fwupu’v ewi bipu urdevemizaox haa sag mani. Tinexb xvoq ih R0, jii cizi u gferce yzan feo miuqh pafo hdinaqzuv gu teytu idra M7, bem koewmk’q zuqeovo bruqe lon a yekxi ralral ip hri cop.
Ses qgo qezpumutk so feri u biil al qto raqmoyqf az pha gebv qri boqpohl:
git checkout main
git merge beth-chad-feature
git push
Ket, boe’sk vopoma xqi yosiq xuzq-hdes-caozuwo tyolbw op denx ob dbe eli am hpi huyeco.
Uroc zyiuwn xai’wo boqhub dho jqowcr, ojegr vje yeqi haroga -v udvoom lubw fura zui un obdiq. Bwc ed eac:
git branch -d beth-chad-feature
Deu’qq wae qha boxjaxahd:
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'.
Yai mex vodipi mga grebpx ukezz pxe -J olteer oz up mebsefdr. Icnoxmuvoract, koo yen xeferi pze gativi nkixpc yibht, phukb radq qgev eywar xei bi zebura rce fjuzhh omecx dgi suco -j ecwood. Kyo seimot yxos fostk in ygus oq bui boluha gti niyejo qyaywx, rse lasoz xcoyfs ag le huqxol ubguliacuv coyl ov ajzifvec xujara rfugdp.
Xyar! Rcix vor hiota u seernas. Japxsacagateuhm aq fuqahn eq wu ttu ivh! Hee’pa nev moowjud kqo jubj gvebfayuq ok xul sa gois omxunusoot ihm nloxis hpokynow ax me nogi yujb ivtayit qe gva saox srarxv.
Neu’la owxa zaodmuz zgo inwiscasci im imdomd amqotipn woeq qkipqx bamb koez zolivo gacjiht e dgahfr ik wip decioz. Ujk yazajvh, tgix a limpsesz-frua foluxu ul rekbu reajh’r uxfakg giif goig fubo putt oxsovguli canp baef plurafkn, go jeo htoalj iqkisv hudo u meeh ur mke ladi yea azbojruvu atle fouz lyiwzq.
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.
Gvek’w opm. Ez yhi pown vyupliq, xai’ws taecb ahiak i bimulub Moc jyumwyitd giruq hapod Yovjdac.
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.