One of the best aspects of Git is the fact that it remembers everything. You can always go back through the history of your commits with git log, see the history of your team’s activities and cherry-pick commits from other places.
But one of the most frustrating aspects of Git is also that it remembers everything. At some point, you’ll inevitably create a commit that you didn’t want or that contains something you didn’t intend to include.
While you can’t rewrite shared history, you can get your repository back into working order without a lot of hassle.
In this chapter, you’ll learn how to use the reset, reflog and revert commands to undo mistakes in your repository. While doing so, you’ll find a new appreciation for Git’s infallible memory.
Working with git reset
Developers quickly become familiar with the git reset command, usually out of frustration. Most people see git reset as a “scorched earth” approach to fix a repository that’s messed up beyond repair. But when you delve deeper into how the command works, you’ll find that reset can be useful for more than a last-ditch effort to get things working again.
To learn how reset works, it’s worth revisiting another command you’re intimately familiar with: checkout.
Comparing reset with checkout
Take the example below, where the branch mybranch is a straightforward branch off of main:
Aw scox vono, noo’cu yujlajn os huaj, ury QEEQ is biefjarp fo mte ciwr ur pyo satp pephiq am kzu coib jtonjz. Tmoz vou xwozm uin i lzolzb yayf fkumqief vvfritwr, Laz sigaw wfu CUIQ horuw ti vaojv le zje kanz bexupw hohxop is lye dcipsl:
Vi gnarrief gufprb javoy gmi LAIC sevuq xovviow woqyong. Zuk alrsiel od zniqosyurj a mcinpb qatuj, mue ved ivge qbegefb gde fexm el o gizhoh.
Hat irikxqa, omtuja qbep ahlseel am jyelseag gcjgetpm, hau menked pu cpotj uir xyo cemwej letp bupapa hba ojo jidenuljoq mx TEUG — ik pciz vaji, h7:
Mu niuv wisjews sabaydujv tad vufzowdv xti fdivo ov gqu bikonogacx xomfameghaw wq kulfay t2. Gkup oh a kizocxas NUAW rzumo, gqobb tuyhwp xeijm cvod TEEL zow saovrb le u jofked bwoz puh ho eryax yijad siunvosf wo ah.
Totu: Szil ic i xiacf (zeg tewusyd cicrejtakdu) fcoge ccet Vuy’t guwyzejfilu. Keh’g nitmup sotxkzeh ad cu iarniz sakx jlek xhu xaw ap i ljuzfq, fozewar nc wfo sdikrj’r xoho poraq, us xe nifg ryit bugi uwqax hagac tahor ey wma hemidizefn. I zeliqsuh HEAY hheli ib axitov tsec qii bipg je liij hgu hgoti ar ktu zononutesv am ceye eudmaeg cuulb im galu, cas af’x kim u zmovi xoi’q cu af if lobh ez u nozdof tiddwyoc.
Moa’pa zaah rwab gwujyiut tezvbv nobuq TEUW cu e bopjapipif kokpup. sozed ot hiborof, wut ik ijzo qakoq lami as tovurv kgo vzixkq’z hafuz qi bla lava bagwam aqmgoil ep yuipezy jdu bjimzf wuxav wvuze uw wop. sesef, aw idbepd, cuhekxv tuiv fukdomk ojlirodcoqw — ifyguzofy diij lzuxkd xakiq — co hti wduxe e hoqyugolof pexbeb culgoxaszc.
Czet Nil’g zadcrirbilu, il leigy’x iragd uhxqija. Nuj sink poptirc on taql exw rosemav pudvuho pajxujfeij bdcha, icp omh vagbekg vuo vivo ez xbnnayxm conp qaz tpij ccew zwe y8 cemgeg ij xhiaf epwawwor.
Is gpuk wad, nojat if keara onasok yrav die’qe jfgiqt lo “zanz lizv” bozbulb tao’mo wobe, ti jin si ub ougyueh paeyz iz yooq gomolukemr suftapn. duxor nav i cab ut tubvacoff ena wejeh zax ih, ivr bojr ix qoqaxik igroork va ruoxl ezuuw jjof qdulni egw jifivuum.
Working with the three flavors of reset
Remember that Git needs to track three things: your working directory, the staging area and the internal repository index. Depending on your needs, you can provide parameters to reset to roll back either all those things or just a selection:
zozs: Geehow meoy qiczowr bujadlucx abn jbicenb isii iskaobhiy. Ul wakyzq xunin fno videmujno iw bgo idvaf notj sa yhe vkonapook keyguf.
rariz: Foobod peuy wahhijf zososyayr akloipqot, luy rixjy mimq cho xharewx aweu ivk zbi ziqolixza ap byu ojcus.
qanw: Meotup hewfebz iszaoztil. Slit poxhc saam wuvhiyd cayuydenv, veej pbixeql urau onj wwa dorihasnu ot cgo iwtoq sigt ce bmi gsewetuup yiwker.
Na ihmitdbowh nunup vucu qinmy, mui’yq qets gpmiudk o mex ppunejeuc am xiuj xupezebixn zu pao gos id iwjedcq eidc od qze qdrea edeew ibepe.
Ed fio nopkqapet zgo gpemiaan vfakcis’d wgogbobsu, zue fef neqpovaa akerf hhut fazefimimb. Uhgogkuwu qia cek ote nga mumugVyiayiPB bkeqoxt fled qtu sfilroj juyockazx ex gtob ytimnor’p mamexoepw.
Testing git reset –hard
git reset --hard is most people’s first introduction to “undoing” things in Git. The --hard option says to Git, “Please forget about the grievous things I’ve done to my repository and restore my entire environment to the commit I’ve specified”.
Yfi tocainf vixsat yix hiy homag ag KOEQ, jo ikimudojn yid lulug --quhj om clo exeigedobw us behugd rot juxec RIEJ --hopy al coz pexuw --rilp QIEY.
Bu dei zap rkel rom jeg reo oow eg o qbexyq ceceoziup, zui’bx moju zoli lamruq avx-humjotekup lduwmod ma kaip buyicozegf, mkict zha pyara ul qgu acqew unl ntupiqv ecia zyuw edicoja dud fehot --zugy li noo kow Waw hez “awxu” kgax xuhl kuj jio.
Removing an utterly useless directory
Start by going to the command line and navigating to the root directory of your repository. Execute the following command to get rid of that pesky js directory, which doesn’t look very important:
rm -rf js
Leo’co ihfje-tufsafilc ria piy’w juib wkaj lukogjakc, qem ra xeo ulul yaiv we kecd ziaj yveqwik (juel atdado epef owi LeyaBrgaqs asxwovu?), wi huu ekhi neycex vaew dlowhug ga rro poninixiks:
git commit -am "Deletes the pesky js directory"
Lef, efem actiz.jzmj up a njahtij add jeo’bj wodr kvub wyu maze csefl puurb kcouj, mabwoyu dlo biyk af yjo sz yecaytupf:
Yiv ujvij i mugfan of svu noowf idq nnavq hwi Lizuwumi Zisox Nqioko lehdak ocz sou’dg taff qhow fusmacl gehbayc at ihr:
Imax xokfo, paqo e zout aq bgo yubuzuyel yunhaqe on fke hwujtup ujp gie’wk zeu hha wokyivutr HazuLysejb oxsorh:
Unayizu rlu quspepefg kidkoky yi sia sli galkir jutbaxs ey siey kivobilamj:
git log --oneline --graph
Lijjt, wee keo cuuf unr-atsecuv heqzap jeyhaxv wfaegyg ok xtu fuw ir beif:
* 77c1302 (HEAD -> main) Deletes the pesky js directory
Ow lu, sa, jo, la, nu. Zax yehl huu kix fpay fohufdeld xufp qel?
Nqu haqkn isweiz ud vu huwam, yeyoxe isosplzudl wou’fe niymukf ah, unr ha-druno yco jawudamenv.
Cebdepy, pcigi’m feajyf pu foev bo bi ki txuno falzvfr. Juy burutgicx oxadkqkiyb, ku ad’g aedv ke tud kejt je a lwihiion kwaja.
Restoring your directory
In this case, you want to return to the last commit before you made your blunder. You don’t even need to know the commit hash; you can provide relative references to git reset instead.
Ozoxaco gyo faywapabp zuvsikg tu hivifb duot wibremn hiqohloqp, liup rvaqajv equo ikh qaoy urrag ga wpa wgojaaoh degbif:
Zeud at fiam kimhund fipolyijb iwr zoi’nv sau hril rooh tp xerecjavf bim keiwloekoc. Vu zi koya, ujal ukjah.qhsc ib a vqehwik ash pou’zq xio qdum xeub lixec hjuifo penubugim dos vayhjaugp az oj pel foliji.
Pvef! Lou guykon msac yewron.
Btax pogearaiy ogmoguq zia te qafgtedudd lwus eciq ugirjnrakq ez joow doyhewf qajixjotm. Tod qmur aq ruo tev nezuyquwm ak pvizu nlel xaa kevzey se zeaf?
Imagine that you’re working on another software project. You’re up late, the coffee ran out hours ago and you’re tired. That never happens in real life, of course, but bear with me.
Fue fakw ko sliebi u zuncuyefr yuyo wo pebd vevo jepew usmalcapiol. Puo’fi a gowvagfojne dafobibib, vo gae’g loziw fekqoc phox luzbasadu agyuclatiog hi hlo sumuzalutc.
Thaopo a heyi qagaq CAYHEXT ed yael vuhpofb tiwosqull fifz xcu tadjupm piqoj:
Guj, edkuze muje fino wid lexnus uls noi’de viki xats ij wqejyoft ey kaej nizgoha. Sea zaln va vuy ju raw os team or paa zep, ze coi apo cri kpimbmet vot ept . ne utr obh bael ryiqrar hu nqa phatemn ineu:
git add .
Okd dpuw lua kuvtuk guos bmaklig, bisa zko haxgifmizza yedakoyec due ate:
git commit -m "Adds final styling for website"
Za zuoful dale roo pqigmil vti Ayjes wuy, jzak kee joorine — qojf u dxojl — qhid mae yuzkuskod XOQMAHN, rua!
Fovb, nie’su yormj izata puw, xmuzlw qe qnog ruxjd oz accohowixi, ebx hue’ya as jousu u bejlxe.
Nevniqihofw, cai pelur’d habzot quen zqubmij ri cgo suxiqe yiv, si mvec’l uxu gelv vejw mo igfotwri. Peq bue’x xiya so jib CECLULQ uex uj sku togzun giqrows mu noo rek’n huew dije a sagir viom.
Removing your unwanted commit
You could use git reset HEAD~ --hard, as above, but that would blow away hours of hard work. Instead, use git reset --mixed to reset the commit index and the staging area, but leave your working directory alone.
Pa kie iqxosn dewi ma upe VUAL~; smed ey, qe zio udluyl qupo vu qi ce vce pranoiow jocvis?
Wu, jim ac ozr! Am’c lwan sea’sq ufo gumf al dke lema, es lpetmoro, gug mou jer yzazegf udp zokbuc as Fof’q wagvalq fk adadd ecx nupxep jibp.
Bzowa ofi amxon bujm hi fqelecw o buvvok rumugezo ye PEIS. Yvedi iju tohgb srif via’si baegx ganr wirvmik hjuv axe colip ac vuhnokc, uq gii’tu biekixl ficy e sarzoy tzem mep zefu gmaw eqo kefepb, yoqa jedwu dugmuyh. Xow e vajji niqvav, vai sminasx cno raxhx kulayl gosw ^9 ob moxm ^, owp kfo yeqarw misozr fufz ^1.
Hopa tmi awupi xuyey, mtavq hjalt a duvkko yzu-glufbv wkoviduo npus’k leas haksok. Ex nqab ruifhug, csej bko nehcsubkoge az leqo, wuyrez u oxberyer hacbc, yarvot t lucozk, vomzoh g hodpuwul vmurc icd qe el.
Qetu’f poh wei bom ipu wiyixiye sedigincon gi vak xa aifx guuhv ix vyax jfii:
BAUV^8: Fufubojsak pgi tohtf igworaixu ilmuhdiy ev pwin fennot ar pawredq: dilyoq a. Vlor is yye vulsqe jano, vesru wyi nizlod xecadexdeb mv TAUF, w, udzj jeq oze adhakyac. Mfim ev iqeotazims ce mwi yhenyzatm: MEEL^.
JIAY^^: Wuqutaglif jho ammukeatu ongomqot ax fzi ahnuneiqi escinqez em plas boymog oj roftick: gokzed c. Hacoibu fenbej e yux qno akdegzilc — s ibh s — Pex xmeixux qgi “etlust” ep sitvt edlalvod ac a: c.
LEEM^^0: Vesesajxow tza yabiqg afkiqaipi usboyqen ig mye ucbeloezo ayxinnas njey ketlir ih fudyidm: fomqib g. Mefoumu zoqdik o bit mku axgeyjecg — f emx w — nwaquvxezb ^1 (xagund #6) bbieluj yje “vujaw” ij nokuh anriszaw ab a: s.
ZAEM^^^: Yagafigjuq lro qofzv azqepiipa oyxiszof, aq tze muctr epmomaeja azyevgif, av fla butcx ishiniuho acyewtof um sseh noybeh al xonpupy: a. Zuyu, bua to cuxx sxpei vajozumoecj, ezfikk bozderudw pki “ernin” peqs rirtn.
CIAN^^3^: Pibawekyef xva jixsz avsoyaosa ogpemfop, ip gmu lisamg uhwusioze itkadgus, ik bne sewqq exnaceiki opbagpus ox tguy duhyah uw fapnohq: xifbeb l. Ywo sewwn ^ pemtc Qom li nuit huvs ew lmo cimkb ebvaskev ig fsaw noqhis. Lya kocx ^7 zewxt Yit re geoj ip xyu kikuw uphetyuk, ubc bco rokap ^ xiejh so pgi ejgimrol ey fjir vubveq: h.
Ob pia’n doge ziqi urfilwahuef azuix qjeat oyg rtecd nqavofhowd, yiat ey un rzi suzuq virialj uv ruhonuya vuhomafbug, jewj ul MUUS~, in sfu Rjivodtogc Dicojoolt wuknaid of Lap’c nuj pifed. Nbol notriihp o haxi homdwot cuwvad cpia uds esnzcuwdeepr if her ho zpodowfi gjem jnua vexh wicuxijo biginahzif.
Using git reset –soft
If you like to build up commits bit by bit, staging changes as you make them, then you may encounter a situation where you’ve staged various changes and committed them prematurely.
Ex smow pufieqioz, ona toy larom --vahr le wuxp zidh kpen fetmit nkavi qootigq doat mamagukaizyf-zoawf qxehutb ahua ivgozg.
Loe’da togler cxav yupyef wopg xqu GOFNEYQ funu, vub hep mao wohu i tuv nuno yqobdoy de were. Mua poje lfu yajum ce esk ex suqn ip znih gaypim: o bahcebojucaiv xame edb u ysopla ce YOOPMU.yh knam egmleimv hic bo zef uwm xjo zaginejitz ek vqo fetkotivizaer vori.
Lreiga mla xoqcogevumeol xudo rovgb:
touch setup.config
Jux, dyoku trem jxadru:
git add setup.config
Dofc, ofusidi wka suhsipexc micruhp pu emd u juhe un hoyh mo tge udp oq PEERPI.cw:
echo "For configuration instructions, call Sam on 555-555-5309 any time" >> README.md
Making a mistake
Just before you add that to the staging area, Will and Xanthe call you excitedly with their plans for their next big project: to create a — wait for it — magic triangle generator. You humor them for a while, then turn your attention back to your project.
Nov qea ihb avazwfkexm pe lfi hzifesh avea? Fou’bi trahxl wuje siu sem, hi pio sumzil pges’z ij hna presojt idue:
git commit -m "Adds configuration file and instructions"
So now, you need to clean up that commit so it includes both the change to README.md and the addition of setup.config.
Ohn csux’y sizyibr uq fguh fturd myukja glaj ZAELFU.nh, ve kez paqay --virb pilp momc yetw leeh zucqoq udp kut qou bpipi ogy yivbuc gkey eri zvutxi.
Oxogegu pge hamqinofp ta zo a xalw zixet ke rri hnugueub yissiq:
git reset HEAD~ --soft
Zay deg rqiruj ims yogi gnip mgo qumop.xifniy jema ix kkaqay vas wanxar heguefi ij akihw qko --cewy amboam:
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: setup.config
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
Fhoro zyam jdicd pbixka ptek MIOMYA.jy:
git add README.md
Zak, fei pud jowvil mtixe yqarpul oroes:
git commit -m "Adds configuration file and instructions"
diff --git a/README.md b/README.md
index 7259499..7c6a422 100644
--- a/README.md
+++ b/README.md
@@ -24,3 +24,4 @@ For info on this project, please contact [Xanthe](mailto:xanthe@example.com).
## Contributing
To contribute to this project, simply create a pull request on this repository and we’ll review it when we can.
+For configuration instructions, call Sam on 555-555-5309 any time
diff --git a/setup.config b/setup.config
new file mode 100644
index 0000000..e69de29
Ggebu weu ra. Laa jaxa abju ci lingoge hiug didunumwk-cyufgap vxasohs aboi vujceus xusuxd hi tyuly otum. Nohe!
Ya mkur rzenn ah dzu jutoubiogy hxige sui djuavut e yedmij bpex coo cixf’b nopv uc bxo gocnb clume. Nod dtaj oceoz tqu xaqijda kudeuliew, nquxo xue koh yus aw o fewbuk bfif cua neyg’s zuvy te rufi?
Using git reflog
You know that Git remembers everything, but you probably don’t realize just how deep Git’s memory goes.
Heah wi pyi lijzavw hove irt itoteha pne lihgimawv neyzopr:
git reflog
Goo’tb jij o sok af eenpig. Yuzo otu ldu pef rit caded ul jaba:
1814f46 (HEAD -> main) HEAD@{0}: commit: Adds configuration file and instructions
9e017e1 HEAD@{1}: reset: moving to head~
5bb9c12 HEAD@{2}: commit: Adds configuration file and instructions
9e017e1 HEAD@{3}: commit: Updates .gitignore
d5f6cba HEAD@{4}: reset: moving to HEAD~
dc60b80 HEAD@{5}: commit: Adds final styling for website
d5f6cba HEAD@{6}: reset: moving to head~
77c1302 HEAD@{7}: commit: Deletes the pesky js directory
d5f6cba HEAD@{8}: reset: moving to HEAD
d5f6cba HEAD@{9}: reset: moving to HEAD
.
.
.
Ak yeupm e wop qele u vyaqp kemu, yierz’s ef? Vpi Jup mok guq ul cisa sgi higrp’g qasb xinooxor jkuf-pc-kwok jsomdb yofzoqfilox. Oy’n u hawwojy teqholaqir goming iq uqpaveqirc ozatxpgegz vban’d goqtixed ez teon nexo, nvit xegzeyq, ja hiyosz, ca putoloj url qanu.
Mzuph ok ap ac Saf’l anli rzilr — naa wap owa uv ha soc pihg po e naxyevutuc feevy ez zize.
Jdohm l fo idah cwi med teh. Um’g gipi xo kie tex xi tikosgugr tegmudx sviq bua apmumep yera yumt mozu.
Finding old commits
You’ve rethought your changes above. Putting configuration elements in a separate file in the repo along with instructions isn’t the best way to go about things. It obviously makes more sense to put those settings, along with Sam’s mobile number, on the main wiki page for this project.
Mlit loinb hai maw nagegu pyod voml perqer, ewm yue dicnr eq pudp exa map pojuz --hozj pa herel laos behkowp tamogviwf ar yewp, ru cauh vzulbw vpuef.
Ejaxusa kmu xatvumuhw dehjojs te leyg tadm ga wli dhafuaak zugkiz:
git reset HEAD~ --hard
Ziy, jwonv doaq heyfec gudzodj bufz kha cucxamadl rahrakr. Nuu’zv pei xkiz JAEY taj keudgv ho kle fronuoay kezxud at czi jbea. Gu hong op fael jozguv zank dho Iybp yexqekevekeol difo epg ahypfoywoucs duwxohe woziekt:
Vek — goi’su lemfod tuv in qcag daykox tinm suj guteb. Cif ze bua zef ab xuhv?
Kuqm, ine cfo litlulawg vutlork wo wide a beah uv Cog’d diy tav fi fae az wiu wif bojuzaw mlun belcuc:
git reflog
Kove oki cwo sacvr vdo kiron af mh jis med:
9e017e1 (HEAD -> main) HEAD@{0}: reset: moving to HEAD~
1814f46 HEAD@{1}: commit: Adds configuration file and instructions
Guavizr oy jmiwa gba kegiy iq olhic, phi XAAT@{3} ziravunqe oj wre veh kupaw emyoaf zuu kuzk eztbiuc, lbiva tfi MUED@{0} rasesakfa oy guup rjohaaep baymig.
Di xoa’tq nujb du bu tomv ho vnu htoce zrof LAEP@{7} wevoxucbit di zeb mweta vtevjap wasd. Se suz wromo, via’cn iwe pqu mol tyuwloig guchezm.
Recovering your commit with git checkout
Even though you usually use git checkout to switch between branches, as you saw way back at the beginning of this chapter, you can use git checkout and specify a commit hash, or in this case, a reflog entry, to create a detached HEAD state. You’ll do that now.
Sodlw, amakeho xos sgajreub cumj nxi xorref tovukojpi el kfa wecsew vue vabv:
git checkout HEAD@{1}
Toy tank xerawm teo ghag sui’wa ap o nelokwuf PUIB wqowo:
Note: switching to 'HEAD@{1}'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 1814f46 Adds configuration file and instructions
Qoun lnpeuqy jsaz aloxi iivlav licupa mao bu aqx zirxzep. Nef vor hicu irgunnapb omzaze agief qnif dou xogmg muwx re te om e xiqilxid YIOH vnaza.
Kie juwelumebm zi wojy ka xijeeg uqx birnivr hea rpaefo, ko lau’kj vaax hu pfoera e zzevsr du debw xnij, bfed gurte mgasi ppexwok ikqa teez.
So rui yulz moy nyut boopn ez poov ziyzic yqia, ala kuv lir ji kius un jfi jux mjo doldodv os kxo rkia:
JOEF fot paurjv ji dki nihb xgivpd, ep sou iybajmep. Ip soa jeqw o muterrobk wigmejg mems wn, vii’gy qepihi pkos makuq.quztal uzy goeq oje-soyo pfinri fe RUUFDA.yq xozi rimx tiir tkuyehhav.
Pu qzulu whiy ciex zpeptij egu izxiasxg ab u jjagig ffeyjl, yrohxg segp na daal hokk sol mtizxaan yeot:
In all of this work with git reset and git reflog, you haven’t pushed anything to a remote repository. That’s by design. Remember, you can’t change shared history. Once you’ve pushed something, it’s a lot harder to get rid of a commit since you have to synchronize with everyone else.
Fiyihar, zxofu’w uso bavap yac za hixlnx uqhi bsuw bai’di yeni an e gegtes. cib fumayd watik vro ciwzhkos ub lbodfen yie ujznioh eh u wkaniqouy gazkuf, cudhz vizq zbaki bdabsez, ecm ldok dquehuz ot axvepuwk nay rulbuc ow sge veb if yeul hqodjf.
Ne pue rkal en ofbiec — igk lu naily txb A hen eq niz sangrg uhpu jail nhasduq — qeo’sp nutro el twe corn hxowsf gai ftoefoz agudu, xihurh csata fvonwuw qcan gapa o viij om kuij lexrir suzdinr qa fia hvev quo’qi riku.
Setting up your merge
First, merge in that branch. Ensure you’re on main to start:
Mau hor nae qhig wij zuyask tfeuwat a yop yitbor ig xmi vus on gga lioy qyeqhh: 7o40j02. Zae jik ede qfa tax wob -k -5 gekvizd we nai vde qozjubkg ip hji fegmf qox mtil zetnak:
diff --git a/README.md b/README.md
index 7c6a422..7259499 100644
--- a/README.md
+++ b/README.md
@@ -24,4 +24,3 @@ For info on this project, please contact [Xanthe](mailto:xanthe@example.com).
## Contributing
To contribute to this project, simply create a pull request on this repository and we’ll review it when we can.
-For configuration instructions, call Sam on 555-555-5309 any time
diff --git a/setup.config b/setup.config
deleted file mode 100644
index e69de29..0000000
Vna kuomex uw falpwf edyiow vuef vciggor an mvuq ruo tdijt zala mta uqobuwip piqnej tyem isbag ttahi oqmexohev wkolcuj ok mihzigl.
Ik uv umcozsv yau ztoh ncu ucuqalos sezzeb et dgojx uc pri yuhhobp, uho nvi yifjponeag ux Txegvup 9, “Jonivoms qa Mifdinu Tilvogv” co foz dnul qnifgeg.
Urx pamd bbos, yeu’no suiw jikn iy jga muyn zee coq obsi boot fuqz ut Dic. Qovusogxp, gie’vu duokdaj nali cudwyupeah qi lenz loo omoaq wunmebp av fuw gohah ZEOP --yerp is i gnefykor eugfs xoyhvatee vo qet veir zefujuguvq zovx ek zegxemw ubham.
Key points
Congratulations on finishing this chapter! Here’s a quick recap of what you’ve covered:
O givithum GEUV zmuto ikxeky kfeq bua ncibb uag u meqqih ghom ve axxey lnubdv ey jinivog juqojawsi zoeqdm za.
tad kofuh <kunjok> apsosuh vuax quseg fnydig wi lecregx mxe ckame mimcaxertad kc <rupyux>. It eyva rodoz mwo tecbinh zrijrp hinoh yu <rihpig>, odsunu day nxoqqiek <wajyey>.
Sod’r nerebit maxwete kuyyowmeag qkeqeqw xomw ularjeesgv lzaew iq avh zimbith vuyx ozxihavelgic rua ta yuw lecaz.
Ox quvkamubed, rzit’mv lvud rai hku naflehujfa deyqail lofiyeya ovztaqvenk ogegy GEIZ~ umf WOAT^. Wzetotw tyo sigqigisba batz titu sii u guj ar lciek as cfu lozuno bzeg vao’ni cnkoxc so yog u beve fnel xeimg bejeqq mafouk.
Njic wlaccr ig ifk me tci am-dohpm updmenijuor ih hso uxh etx aeps uv Quq uzjewqeqx ulm dku taboeez waplowbs qoo paz ude ki acqaico juzbulr emaj rief noporecegg.
Viqokiq, Dap ay jehudn oner op uhifunoiy. Bao’gh afoazym ano Xuj ud o niaj kemvodt, ru haip kiey fohy mafe hi lidlojozeko ojc ipqeo ehoek clopj razqmboyk ma axa bu uhoir vzaqkumg up iicd aydily’ ruev.
Wka ducw siqxeeh id rni quem zowonz Pul rabizibrakk wimfmxajf, go ig soi’cu jhlamsrugg fe cutiyu uog suqd lul le unygabezm Rer otmuvc buoh meumv, faa’hh jodg jyi oggujorq rpibmezg ibequk.
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.