Efa nianatra ny baiko Git ve ianao nefa te haka sary an-tsaina ny fomba fiasan'ny fampidirana mitohy (CI) raha ny tena izy? Sa mety te hanatsara ny asanao andavanandro ianao? Ity fampianarana ity dia hanome anao fahaiza-manao azo ampiharina amin'ny fampidirana mitohy amin'ny alΓ lan'ny fitahirizana GitHub. Ity fampianarana ity dia tsy natao ho mpamosavy izay azonao kitihina tsotra izao; ny mifanohitra amin'izany, dia hanao hetsika mitovy amin'ny ataon'ny olona any am-piasana ianao, amin'ny fomba fanaony. Hazavaiko ny teoria rehefa mandalo ireo dingana tafiditra ianao.
Inona no ataontsika?
Rehefa mandroso isika dia hamorona tsikelikely lisitr'ireo dingana CI mahazatra, izay fomba tsara hahatsiarovana ity lisitra ity. Raha lazaina amin'ny teny hafa dia hamorona lisitr'ireo hetsika ataon'ny mpamorona isika rehefa manao fampidirana mitohy, manao fampidirana mitohy. Hampiasa andrana tsotra ihany koa izahay mba hanakaiky kokoa ny fizotran'ny CI anay amin'ny tena izy.
Ity GIF ity dia mampiseho ny commit ao amin'ny tahiryo rehefa mandroso amin'ny fianarana ianao. Araka ny hitanao, tsy misy sarotra eto ary ny tena ilaina ihany.

Handeha amin'ireto sehatra CI manaraka ireto ianao:
- Miasa amin'ny endri-javatra iray;
- Fampiharana fitsapana mandeha ho azy mba hiantohana ny kalitao;
- Fampiharana ny asa laharam-pahamehana;
- Famahana ny fifanoherana rehefa manambatra sampana (manambatra ny fifandirana);
- Misy hadisoana mitranga amin'ny tontolo famokarana.
Inona no hianaranao?
Ho afaka hamaly ireto fanontaniana manaraka ireto ianao:
- Inona no atao hoe integration mitohy (CI)?
- Karazana fitsapana mandeha ho azy inona no ampiasaina ao amin'ny CI, ary ho setrin'ny hetsika inona no atomboka?
- Inona no atao hoe fangatahana fisintonana ary rahoviana izy ireo no ilaina?
- Inona no atao hoe Test Driven Development (TDD) ary ahoana no ifandraisany amin'ny CI?
- Tokony hanambatra na hamerina ny fanovana ve aho?
- Avereno na amboary amin'ny dikan-teny manaraka?
Tamin'ny voalohany dia nandika zavatra toy ny βfangatahana fisintonanaβ aho na aiza na aiza, saingy vokatr'izany dia nanapa-kevitra ny hamerina andian-teny amin'ny teny anglisy any amin'ny toerana sasany aho mba hampihenana ny haavon'ny hadalana ao amin'ny lahatsoratra. Hampiasa βprogrammer surzhikβ aho indraindray toy ny matoanteny mahafinaritra hoe βmanolotraβ izay tena ampiasain'ny olona any am-piasana.
Inona no atao hoe fampidirana mitohy?
Fampidirana mitohy, na CI, dia fomba fanao ara-teknika izay ampidiran'ny mpikambana tsirairay ny kaody ao amin'ny tahiry iombonana farafahakeliny indray mandeha isan'andro, ary ny kaody aterany dia tsy maintsy amboarina farafaharatsiny tsy misy hadisoana.
Misy ny tsy fitovian-kevitra momba io teny io
Ny tanjon'ny fifandirana dia ny matetika ny fampidirana. Misy milaza fa ny fampifangaroana kaody indray mandeha isan'andro dia tsy ampy raha tena ampidirina tsy tapaka. Omena ohatra ny ekipa iray izay maka kaody vaovao ny tsirairay amin'ny maraina ary mampiditra izany indray mandeha amin'ny hariva. Na dia fanoherana mitombina aza izany, dia inoana amin'ny ankapobeny fa ny famaritana indray mandeha isan'andro dia azo ampiharina, voafaritra ary mety amin'ny ekipa samy hafa habe.
Ny fanoherana iray hafa dia tsy ny C ++ irery intsony no fiteny ampiasaina amin'ny fampandrosoana, ary ny fitakiana fotsiny ny fivoriambe tsy misy hadisoana ho toy ny fomba fanamarinana dia malemy. Tsy maintsy vita soa aman-tsara ihany koa ny andiana andrana sasany (ohatra, andrana natao teo an-toerana). Amin'izao fotoana izao, ny vondrom-piarahamonina dia miroso amin'ny fanaovana izany ho fitakiana, ary amin'ny ho avy dia mety ho fanao mahazatra ny "andrana fananganana + unit", raha mbola tsy nisy izany.
Fampidirana mitohy tsy mitovy amin'ny fanaterana mitohy (Fanaterana tsy tapaka, CD) amin'ny hoe tsy mitaky kandidΓ famotsorana aorian'ny tsingerin'ny fampidirana tsirairay.
Lisitry ny dingana hampiasaina mandritra ny fianarana
- Ampidiro ny kaody farany. Mamorona sampana avy amin'ny
master. Manomboka miasa. - Mamorona commit amin'ny sampanao vaovao. Amboary sy andrana eo an-toerana. Pass? Mandehana any amin'ny dingana manaraka. Tsy nahomby? Amboary ny lesoka na fitsapana ary andramo indray.
- Alefaso any amin'ny tahiry lavitra anao na sampana lavitra.
- Mamorona fangatahana misintona. Ifanakalozy hevitra ny fanovana, ampio ny fanoloran-tena bebe kokoa rehefa mitohy ny fifanakalozan-kevitra. Ataovy ny fitsapana mandalo amin'ny sampana endri-javatra.
- Ampifandraiso amin'ny master. Ataovy andrana mandalo amin'ny valin'ny fampitambatra.
- Alefaso avy amin'ny sampana endri-javatra mankany amin'ny famokarana.
- Raha tsara ny zava-drehetra amin'ny famokarana mandritra ny fe-potoana sasany, ampifandraiso amin'ny master.

οΈ Fiomanana
Ataovy azo antoka fa manana rindrambaiko mety ianao
Mba hahazoana ity taranja ity dia mila ΠΈ .
Afaka mampiasa mpanjifa Git rehetra ianao, fa ny baiko ihany no homeko ny baiko.
Ataovy azo antoka fa manana mpanjifa Git napetraka ianao izay manohana ny baiko baiko
Raha mbola tsy manana mpanjifa Git izay manohana ny baiko ianao dia afaka mahita torolΓ lana fametrahana .
Omano ny tahiry
Mila mamorona kopia manokana (fork) ianao amin'ny GitHub. Andao hanaiky hiantso an'ity kopia manokana ity tahiry fianarana.
Vita? Raha toa ka tsy nanova ny firafitry ny default ianao dia azo inoana fa antsoina ny trano fitehirizam-pianaranao continuous-integration-team-scenarios-students, ao amin'ny kaontinao GitHub no misy azy ary toy izao ny URL
https://github.com/<Π²Π°ΡΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° GitHub>/continuous-integration-team-scenarios-studentsHantsoiko fotsiny ity adiresy ity <URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ>.
Ny brackets zoro toy ny
<ΡΡΡ>dia midika fa tsy maintsy soloinao amin'ny sanda mety ny fitenenana toy izany.
Ataovy azo antoka izany Hetsika GitHub tafiditra ao anatin'ity fitahirizana fampianarana ity. Raha tsy alefa izy ireo dia avelao izy ireo amin'ny fipihana ny bokotra lehibe eo afovoan'ny pejy, izay azonao alaina amin'ny fipihana Actions ao amin'ny interface GitHub.
Tsy ho vitanao ny hamita ny fampianarana manaraka ny torolalako raha tsy alefa ny GitHub Actions.

Azonao atao foana ny mampiasa ny fahafahan'i GitHub mamadika ny Markdown hahitana ny toetry ny lisitra ankehitriny izay noforoninay eto.
https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.mdMomba ny valiny
Raha ny fomba tsara indrindra hamitana an'ity taranja ity dia ny manao izany amin'ny tenanao, dia mety ho sahirana ianao.
Raha mahatsapa ianao fa tsy azonao izay tokony hatao ary tsy afaka manohy, dia azonao atao ny mijery ny kofehy solution, izay ao amin'ny tahiry fanombohana anao.
Aza mitambatra azafady solution Π² master mandritra ny fianarana. Azonao atao ny mampiasa ity sampana ity mba hamantarana izay tokony hatao, na hampitahana ny codeo amin'ny an'ny mpanoratra, amin'ny fampiasana ny fahaiza-manao rehetra omen'i Git antsika. Raha very tanteraka ianao dia azonao soloina tanteraka ny sampanao master amin'ny sampana iray solution ary avereno avy eo ny lahatahiry miasa amin'ny dingana ilainao.
Ampiasao fotsiny ity raha tena mila izany ianao
Ampidiro ny kaodinao
git add .
git commit -m "Backing up my work"Ireo baiko ireo
- Hanova anarana
masterΠ²master-backup; - Hanova anarana
solutionΠ²master; - checkout amin'ny sampana vaovao
masterary soraty indray ny votoatin'ny lahatahiry miasa; - Mamorona sampana "vahaolana" avy amin'ny "master" (izay "solution") taloha raha toa ka mila sampana "vahaolana" ianao amin'ny ho avy.
git branch -m master master-backup
git branch -m solution master
git checkout master -f
git branch solutionAorian'ireo dingana ireo dia azonao ampiasaina git log master mba hamantarana hoe inona no commit ilainao.
Azonao atao ny mamerina ny lahatahiry miasa amin'ity commit ity toy izao:
git reset --hard <the SHA you need>Raha faly amin'ny vokatra ianao, amin'ny fotoana iray dia mila mamoaka ny dikan-teninao amin'ny tahiry lavitra ianao. Aza adino ny mamaritra mazava ny sampana lavitra rehefa manao izany ianao.
git push --force origin masterMariho fa mampiasa izahay git push --force. Tsy azo inoana fa te-hanao izany matetika ianao, saingy manana toe-javatra manokana izahay eto miaraka amin'ny mpampiasa tahiry iray izay, ankoatra izany, dia mahatakatra ny ataony.
Manomboka miasa

Andao hanomboka hanangona ny lisitry ny dingana CI. Amin'ny ankapobeny dia manomboka ity dingana ity ianao amin'ny alΓ lan'ny fijerena ny kinova farany amin'ny kaody avy amin'ny tahiry lavitra, saingy mbola tsy manana tahiry eo an-toerana izahay, noho izany dia manangana azy avy amin'ny lavitra izahay.
οΈ Asa: manavao ny tahiry eo an-toerana, mamorona sampana avy amin'ny master, manomboka miasa
- Clone ny fitahirizana fampianarana avy amin'ny
<URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ>. - Mihazakazaha
npm installao amin'ny lahatahiry fitahirizana fampianarana; Mila azy io izahay hametraka Jest, izay ampiasainay hanaovana fitsapana. - Mamorona sampana ary omeo anarana
feature. Midira amin'ity lohahevitra ity. Ampio ny code test amin'ny
ci.test.jseo anelanelan'ny fanehoan-kevitra mangataka ahy hanao izany.it('1. pull latest code', () => { expect(/.*pull.*/ig.test(fileContents)).toBe(true); }); it('2. add commits', () => { expect(/.*commit.*/ig.test(fileContents)).toBe(true); }); it('3. push to the remote branch with the same name', () => { expect(/.*push.*/ig.test(fileContents)).toBe(true); }); it('4. create a pull request and continue working', () => { expect(/.*pulls+request.*/ig.test(fileContents)).toBe(true); });- Ampio lahatsoratra miaraka amin'ireo dingana 4 voalohany amin'ny rakitra
ci.md.1. Pull in the latest code. Create a branch from `master`. Start working. 2. Create commits on your new branch. Build and test locally. Pass? Go to the next step. Fail? Fix errors or tests and try again. 3. Push to your remote repository or remote branch. 4. Create a pull request. Discuss the changes, add more commits as discussion continues. Make tests pass on the feature branch.didy
# ΠΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΊΡΡΡΠ°
git clone <repository URL>
cd <repository name>
# ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ npm install Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΊΡΡΡΠ°; ΠΎΠ½ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Jest, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ².
npm install
# Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π΅ feature. ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° ΡΡΡ Π² Π²Π΅ΡΠΊΡ.
git checkout -b feature
# ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ci.test.js ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅.
# ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ci.md ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅Mamorona commit amin'ny sampana vaovao, manangana ary andramo eo an-toerana
Hametraka ny andrana hatao isika alohan'ny hanaovana, ary avy eo dia mametraka ny code.
Toe-javatra mahazatra rehefa mandeha ho azy ny fitsapana
- Eo an-toerana:
- Mitohy na ho setrin'ny fanovana fehezan-dalΓ na mifanaraka amin'izany;
- Amin'ny fitahirizana (ho an'ny fiteny voadika na JIT-compiled);
- Mandritra ny fivoriambe (rehefa ilaina ny fanangonana);
- On commit;
- Rehefa mamoaka amin'ny tahiry iombonana.
- Ao amin'ny server build na build environment:
- Rehefa avoaka amin'ny sampana/repository manokana ny kaody.
- Ny kaody amin'ity lohahevitra ity dia andrana.
- Ny mety ho vokatry ny fampivondronana dia andrana (matetika amin'ny
master). - Amin'ny maha dingana fampidirana mitohy / fantsona fanaterana tsy tapaka
Amin'ny ankapobeny, arakaraky ny fandehanana haingana kokoa ny suite fitsapana iray, dia vao mainka azonao atao ny mampandeha azy io. Mety ho toy izao ny fizarana sehatra mahazatra.
- Fitsapana vondrona haingana - mandritra ny fananganana, amin'ny fantsona CI
- Fitsapana singa miadana, fitsapana singa haingana sy fampidirana - amin'ny fanoloran-tena, ao amin'ny fantsona CI
- Fitsapana singa miadana sy fampidirana - amin'ny fantsona CI
- Fitsapana fiarovana, fitsapana enta-mavesatra ary fitsapana mandany fotoana na lafo - amin'ny fantsona CI/CD, fa amin'ny fomba/dingana/fantsona sasany amin'ny fanamboarana ihany, ohatra, rehefa manomana kandidΓ famotsorana na rehefa mandeha amin'ny tanana.
οΈAsa
Manoro hevitra aho ny hamita ny fitsapana amin'ny tanana voalohany amin'ny fampiasana ny baiko npm test. Aorian'izay dia ndao ampio git hook mba hampandehanana ny fitsapana ataontsika. Misy haza iray: Tsy heverina ho anisan'ny fitehirizana ny Git hooks ary noho izany dia tsy azo atao klΓ΄nina avy amin'ny GitHub miaraka amin'ny fitaovana fianarana hafa. Mba hametrahana hook dia mila mihazakazaka ianao install_hook.sh na kopia ny rakitra repo/hooks/pre-commit mankany amin'ny lahatahiry eo an-toerana .git/hooks/.
Rehefa manolo-tena ianao dia ho hitanao fa mandeha ny fitsapana ary manamarina raha misy teny fanalahidy sasany ao amin'ny lisitra.
- Manaova andrana amin'ny alΓ lan'ny fampandehanana ny baiko
npm testao amin'ny lahatahiry fitahirizanao. Hamarino fa vita ny fitsapana. - Mametraha commit hook (pre-commit hook) amin'ny alΓ lan'ny mihazakazaka
install_hook.sh. - Apetraho amin'ny tahiry eo an-toerana ny fanovanao.
- Ataovy azo antoka fa mandeha ny fitsapana alohan'ny hanaovana.
Tokony ho toy izao ny fitehirizanao rehefa avy manaraka ireto dingana ireto.

didy
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ pre-commit hook Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² install_hook.sh.
# ΠΠ°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ "Add first CI steps" Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ΅.
git add ci.md ci.test.js
git commit -m "Add first CI steps"
# Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ. Mamoaka kaody amin'ny tahiry lavitra na sampana lavitra
Rehefa vita ny asa eo an-toerana, dia mazΓ na no ataon'ny mpamorona ny kaody ho ampahibemaso mba hahafahan'izy ireo miditra amin'ny besinimaro amin'ny farany. Miaraka amin'ny GitHub, izany dia azo atao amin'ny famoahana ny asa amin'ny dika mitovy amin'ny tahiry manokana (fork manokana) na sampana manokana.
- Miaraka amin'ny forks, ny developer dia manao clone ny tahiry ifampizarana lavitra, mamorona kopia lavitra azy manokana, antsoina koa hoe fork. Avy eo dia manao clone an'io tahiry manokana io izy io mba hiarahana miasa eo an-toerana. Rehefa vita ny asa ary vita ny commits, dia atsipiny ao amin'ny garderie izany, izay azon'ny hafa ary azo ampidirina ao amin'ny tahiry iombonana. Ity fomba fiasa ity dia matetika ampiasaina amin'ny tetikasa open source amin'ny GitHub. Izy io koa dia ampiasaina amin'ny taranja mandroso [Team Work sy CI miaraka amin'ny Git] ().
- Ny fomba iray hafa dia ny fampiasana tahiry lavitra iray ary manisa ny sampana ihany
mastertahiry iombonana "arovana". Amin'ity toe-javatra ity, ny mpamorona tsirairay dia mamoaka ny kaody ao amin'ny sampan'ny tahiry lavitra mba ahafahan'ny hafa mijery ity code ity, raha milamina ny zava-drehetra, ampifandraiso amin'nymastertahiry iombonana.
Amin'ity taranja manokana ity dia hampiasa fomba fiasa izay mampiasa sampana isika.
Andao hamoaka ny kaodinay.
οΈAsa
- Avoahy ny fanovana amin'ny sampana lavitra manana anarana mitovy amin'ny sampana miasa anao
didy
git push --set-upstream origin featureMamorona fangatahana misintona
Mamorona fangatahana misintona misy lohateny Famerenana ny dingana... hametraka feature toy ny "head branch" ary master toy ny "sampana fototra".
Ataovy azo antoka fa efa nametraka
masteramin'ny azy sokafy ny repository Amin'ny maha "sampana fototra", dia tsy hamaly ny fangatahana fanovana amin'ny fitahirizana fitaovana fianarana aho.
Ao amin'ny lingo GitHub, ny "sampana fototra" dia ny sampana iorenan'ny asanao, ary ny "loha sampana" dia ny sampana misy ireo fanovana natolotra.
Ifanakalozy hevitra ny fanovana, ampio fanoloran-tena vaovao rehefa mitohy ny fifanakalozan-kevitra
Fangatahana misintona (PR)
Fangatahana misintona (PR) dia fomba iray ifanakalozan-kevitra sy fandraketana fehezan-dalΓ na, ary koa fanaovana famerenana ny fehezan-dalΓ na. Ny fangatahana sintonina dia nomena anarana araka ny fomba ankapoben'ny fampidirana ny fanovana tsirairay amin'ny fehezan-dalΓ na ankapobeny. Amin'ny ankapobeny, misy olona manao clone ny tahiry ofisialin'ny tetikasa ary miasa amin'ny kaody eo an-toerana. Aorian'izany dia mametraka ny kaody ao amin'ny trano fitehirizana azy manokana izy ary mangataka ireo tompon'andraikitra amin'ny tahiry ofisialy haka (Sintony) ny kaody ao amin'ny trano fitehirizan-dry zareo eo an-toerana, izay andinihany sy mety hampidirana azy (mandeha) azy. Ity hevitra ity dia fantatra amin'ny anarana hafa, ohatra, manambatra fangatahana.
Tsy mila mampiasa ny fangatahan'ny GitHub na sehatra mitovy amin'izany ianao. Ny ekipan'ny fampandrosoana dia mety mampiasa fomba fifandraisana hafa, ao anatin'izany ny fifandraisana mivantana, ny antso an-telefaona, na ny mailaka, saingy mbola misy antony maromaro hampiasana ny fangatahana fisarihana amin'ny fomba forum. Ireto ny sasany amin'izy ireo:
- fifanakalozan-kevitra voalamina mifandraika amin'ny fanovana fehezan-dalΓ na manokana;
- ho toerana hijerena ny valin-kafatra momba ny asa an-dalam-pandrosoana avy amin'ny autotester sy ny mpiara-miasa;
- Formation ny famerenana ny fehezan-dalΓ na;
- mba ho hitanao any aoriana ny antony sy ny fiheverana ao ambadik'ity fehezan-dalΓ na ity.
Amin'ny ankapobeny dia mamorona fangatahana misintona ianao rehefa mila miresaka zavatra na mahazo valiny. Ohatra, raha miasa amin'ny endri-javatra azo ampiharina amin'ny fomba mihoatra ny iray ianao dia afaka mamorona fangatahana misintona alohan'ny hanoratana ny andalana voalohany amin'ny kaody mba hizarana ny hevitrao sy hiresaka momba ny drafitrao amin'ireo mpiara-miasa aminao. Raha tsotra kokoa ny asa, dia misokatra ny fangatahana fisintonana rehefa misy zavatra efa vita, natao ary azo resahina. Amin'ny toe-javatra sasany, azonao atao ny manokatra PR noho ny antony fanaraha-maso ny kalitao: hanaovana fitsapana mandeha ho azy na hanombohana famerenana kaody. Na inona na inona fanapahan-kevitrao dia aza adino ny manonona ny olona izay tadiavinao amin'ny fangatahanao misintona.
Amin'ny ankapobeny, rehefa mamorona PR ianao dia manao izao manaraka izao.
- Tondroy izay atolotrao hovana ary aiza.
- Manorata famaritana manazava ny anton'ny fiovana. Mety mila:
- ampio izay zava-dehibe tsy mibaribary amin'ny kaody, na zavatra ilaina amin'ny fahatakarana ny teny manodidina, toy ny #bugs mifandraika sy ny laharana commit;
- @ teneno izay tianao hiarahana miasa, na azonao @ teneninao ao anaty commentaire any aoriana any;
- angataho ny mpiara-miasa hanampy amin'ny zavatra iray na hijery zavatra manokana.
Vantany vao manokatra ny PR ianao, dia tanterahana ny fitsapana natao ho an'ny tranga toy izany. Amin'ny tranga misy anay, ity dia mitovy amin'ny fitsapana nataontsika teo an-toerana, fa amin'ny tetikasa tena izy dia mety hisy fitsapana sy fisavana fanampiny.
Andraso azafady raha mbola vita ny fitsapana. Azonao atao ny mahita ny satan'ny fitsapana eo amin'ny faran'ny fifanakalozan-kevitra PR ao amin'ny interface GitHub. Tohizo rehefa vita ny fitsapana.
οΈ Manampia fanamarihana momba ny kisendrasendra ny lisitry ny dingana CI
Ny lisitra ampiasaina amin'ity taranja ity dia tsy misy dikany ary manara-penitra, tokony hanampy fanamarihana momba izany isika.
οΈ Asa: mamorona fangatahana misintona ity fanehoan-kevitra ity
- Hiverina any amin'ny branch
master. - Mamorona sampana nomena anarana
bugfix. - Ampio lahatsoratra naoty amin'ny faran'ny rakitra
ci.md.> **GitHub flow** is sometimes used as a nickname to refer to a flavor of trunk-based development when code is deployed straight from feature branches. This list is just an interpretation that I use in my [DevOps courses](http://redpill.solutions). The official tutorial is [here](https://guides.github.com/introduction/flow/). - Ataovy ny fanovana.
- Avoahy ny kofehy
bugfixmankany amin'ny tahiry lavitra. - Mamorona fangatahana misintona nomena anarana Manampy fanamarihana misy sampana loha
bugfixary ny sampana fototramaster.
Ataovy azo antoka fa efa nametraka
masteramin'ny azy sokafy ny repository Amin'ny maha "sampana fototra", dia tsy hamaly ny fangatahana fanovana amin'ny fitahirizana fitaovana fianarana aho.
Toy izao no tokony ho endriky ny fitahirizanao.

didy
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° Π²Π΅ΡΠΊΡ master. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ bugfix.
git checkout master
# Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ bugfix-remark.
git checkout -b bugfix
# ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅ΠΊΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ Π²Π½ΠΈΠ·Ρ ci.md.
# ΠΠ°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
git add ci.md
git commit -m "Add a remark about the list being opinionated"
# ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ Π²Π΅ΡΠΊΡ bugfix Π² ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
git push --set-upstream origin bugfix
# Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ pull request ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° GitHub ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅Ankatoavy ny fangatahana misintona "Manampy fanamarihana"
οΈAsa
- Mamorona fangatahana misintona.
- Tsindrio ny "Merge pull request".
- Tsindrio ny "Confirm merge".
- Tsindrio ny "Delete branch", tsy mila izany intsony isika.
Ity dia sarin'ny commit aorian'ny fampifangaroana.

οΈ Tohizo ny asa ary ampio fitsapana
Ny fiaraha-miasa amin'ny fangatahana fisintonana matetika dia miteraka asa fanampiny. Matetika izany dia vokatry ny famerenana na fifanakalozan-kevitra momba ny kaody, fa amin'ny lalantsika dia hanao modely amin'ny fampidirana singa vaovao amin'ny lisitry ny dingana CI.
Ny fampifangaroana mitohy mazΓ na dia misy fandrakofana fitsapana sasany. Miovaova ny fepetra takian'ny fandrakofam-panadinana ary matetika hita ao anaty antontan-taratasy antsoina hoe "torolΓ lana momba ny fandraisana anjara". Hotazoninay ho tsotra izany ary ampiana fitsapana ho an'ny andalana tsirairay ao amin'ny lisitray.
Rehefa manao asa, andramo ny manao ny fitsapana aloha. Raha nametraka tsara ianao pre-commit hook teo aloha, ny fitsapana vao nampidirina dia hatao, tsy hahomby, ary tsy hisy na inona na inona hatao. Mariho fa izao no ahafantarantsika fa tena mizaha toetra zavatra ny fitsapana ataontsika. Mahaliana fa raha nanomboka tamin'ny kaody isika talohan'ny fitsapana, ny fandalovan'ny fitsapana dia mety hidika fa mandeha araka ny efa nampoizina ilay kaody, na tsy nanandrana na inona na inona ny fitsapana. Fanampin'izay, raha tsy nanoratra ny fitsapana tamin'ny voalohany isika, dia mety ho hadinontsika tanteraka ny momba azy ireo, satria tsy nisy na inona na inona nampahatsiahy antsika izany.
Fampandrosoana andrana (TDD)
Ny TDD dia manoro hevitra ny hanoratana fitsapana alohan'ny kaody. Toy izao ny fomba fiasa mahazatra mampiasa TDD.
- Ampio fitsapana.
- Ataovy ny fitsapana rehetra ary ataovy izay hahazoana antoka fa tsy mahomby ny fitsapana vaovao.
- Soraty ny kaody.
- Manaova fitsapana, ataovy azo antoka fa mandalo ny fitsapana rehetra.
- Avereno indray ny codeo.
- Avereno.
Satria ny valin'ny fitsapana tsy nahomby dia matetika aseho amin'ny mena, ary ireo izay nandalo dia matetika aseho amin'ny maitso, ny tsingerina dia antsoina koa hoe red-green-refactor.
οΈAsa
Voalohany, andramo manao ny fitsapana ary avelao izy ireo tsy hahomby, avy eo ampio sy apetraho ny lahatsoratry ny lisitry ny dingana CI. Ho hitanao fa mandalo ny fitsapana ("maitso").
Avy eo dia mamoaka ny kaody vaovao any amin'ny tahiry lavitra ary jereo ny fitsapana mandeha ao amin'ny interface GitHub eo amin'ny farany ambany amin'ny fifanakalozan-kevitra momba ny fangatahana sy ny fanavaozana ny sata PR.
- Hiverina any amin'ny branch
feature. Ampio ireto fitsapana ireto
ci.test.jsaorian'ny antso faranyit (...);.it('5. Merge/rebase commits from master. Make tests pass on the merge result.', () => { expect(/.*merge.*commits.*testss+pass.*/ig.test(fileContents)).toBe(true); }); it('6. Deploy from the feature branch to production.', () => { expect(/.*Deploy.*tos+production.*/ig.test(fileContents)).toBe(true); }); it('7. If everything is good in production for some period of time, merge changes to master.', () => { expect(/.*merge.*tos+master.*/ig.test(fileContents)).toBe(true); });- Andramo ny manao ny fitsapana. RAHA
pre-commitapetraka ny hook, tsy hahomby ny andrana commit. - Avy eo ampio ity lahatsoratra ity amin'ny
ci.md.5. Merge/rebase commits from master. Make tests pass on the merge result. 6. Deploy from the feature branch with a sneaky bug to production. 7. If everything is good in production for some period of time, merge changes to master. - Manaova ary manaova fanovana eo an-toerana.
- Alefaso ny fanovana amin'ny sampana
feature.
Tokony hanana zavatra toy izao ianao

didy
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½Π° Π²Π΅ΡΠΊΡ feature
git checkout feature
# ΠΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ΅ΡΡΡ Π² ci.test.js ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅
# ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΠΈΠ½Π΄Π΅ΠΊΡ ci.test.js ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·ΠΆΠ΅ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΠΈΡΡ
git add ci.test.js
# ΠΠΎΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΠΈΡΡ ΡΠ΅ΡΡΡ. ΠΡΠ»ΠΈ pre-commit hook ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ, ΠΊΠΎΠΌΠΌΠΈΡ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ.
git commit
# Π’Π΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅ΠΊΡΡ Π² ci.md ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅
# ΠΠ½Π΅ΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΠΈΡ
git add ci.md
git commit -m "Add the remaining CI steps"
# ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π²Π΅ΡΠΊΡ feature
git pushAtambatra ny fifandirana
Mandehana any amin'ny Change Request Famerenana ny dingana.
Na dia tsy nanao zavatra tsy nety aza izahay ary nandalo ny fitsapana ho an'ny kaody, dia mbola tsy afaka manambatra ny sampana izahay feature ΠΈ master. Satria ilay lohahevitra hafa bugfix dia natambatra tamin'ny master fony izahay niasa tamin'ity PR ity.
Izany dia miteraka toe-javatra izay ny sampana lavitra master manana dikan-teny vaovao kokoa noho ilay nifotoranay ny sampana feature. Noho izany dia tsy afaka mamerina ny HEAD fotsiny isika master hatramin'ny faran'ny kofehy feature. Amin'ity toe-javatra ity dia mila manambatra na mampihatra commit isika feature rebase master. Ny GitHub dia afaka manao fampifangaroana mandeha ho azy raha tsy misy fifandirana. Indrisy, amin'ny toe-javatra misy antsika, ny sampana roa dia manana fiovana mifaninana amin'ny rakitra ci.md. Ity toe-javatra ity dia fantatra amin'ny hoe fifandirana mitambatra, ary mila mamaha izany amin'ny tanana isika.
Atambatra na rebase
mampiray
- Mamorona commit fanakambanana fanampiny ary mitahiry ny tantaran'ny asa.
- Mitahiry ny faneken'ny sampana tany am-boalohany miaraka amin'ny mari-pamantarana sy ny mpanoratra azy tany am-boalohany.
- Mitahiry ny SHA amin'ny commits ary mampifandray azy ireo amin'ny fifanakalozan-kevitra momba ny fangatahana fanovana.
- Mitaky famahana fifandirana indray mandeha.
- Mahatonga ny tantara tsy mi-linear.
- Mety ho sarotra vakina ilay tantara noho ny hamaroan'ny sampana (mampahatsiahy ny tariby IDE).
- Manasarotra kokoa ny debugging mandeha ho azy, oh.
git bisecttsy dia ilaina loatra - ny merge commit ihany no hahitana azy.
Rebase
- Ny replays dia manolo-tena avy amin'ny sampana ankehitriny eo an-tampon'ny sampana fototra.
- Miforona ny fanolorana vaovao miaraka amin'ny SHA vaovao, ka mahatonga ny commit ao amin'ny GitHub hifanaraka amin'ny fangatahana fisintonana tany am-boalohany, fa tsy ny fanehoan-kevitra mifanaraka amin'izany.
- Ny commits dia azo atambatra sy ovaina ao anatin'ilay dingana, na atambatra ho iray mihitsy aza.
- Mety mila vahana ny disadisa maro.
- Mamela anao hihazona tantara linear.
- Mety ho mora kokoa ny mamaky ilay tantara raha toa ka tsy lava loatra raha tsy misy antony.
- Ny debugging mandeha ho azy sy ny famahana olana dia mora kokoa: mahatonga izany ho azo atao
git bisect, dia afaka manao ny famerenana mandeha ho azy ho mazava kokoa sy azo vinaniana kokoa.
- Mitaky ny famoahana sampana misy fifindra-monina misy saina
--forcerehefa ampiasaina amin'ny fisintonana fangatahana.
Amin'ny ankapobeny, ny ekipa dia manaiky hampiasa tetika mitovy foana rehefa mila manambatra fiovana. Ity dia mety ho fampifangaroana "pure" na commit "pure" eo ambony, na zavatra eo anelanelany, toy ny fanaovana commit on top interactively(git rebase -i) eo an-toerana ho an'ny sampana tsy navoaka tao amin'ny tahiry ho an'ny daholobe, fa mitambatra ho an'ny sampana "public".
Eto isika dia hampiasa merge.
οΈAsa
- Ataovy azo antoka fa ao amin'ny sampana eo an-toerana ny kaody
masternohavaozina avy amin'ny tahiry lavitra. - Hiverina any amin'ny branch
feature. - Manomboha mitambatra amin'ny sampana
master. Fifandirana fampiraisana noho ny fiovana mifaninana amin'nyci.md. - Vahao ny fifandirana mba hijanonana ao amin'ny lahatsoratra ny lisitry ny dingana CI sy ny naoty momba azy.
- Mamoaka merge commit amin'ny sampana lavitra
feature. - Jereo ny satan'ny fangatahana fisintonana ao amin'ny GitHub UI ary andraso mandra-pahavitan'ny fampifangaroana.
didy
# Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π²Π΅ΡΠΊΠ΅ `master` ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½ ΠΈΠ· ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
git checkout master
git pull
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° Π²Π΅ΡΠΊΡ feature
git checkout feature
# ΠΠ½ΠΈΡΠΈΠΈΡΡΠΉΡΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Ρ Π²Π΅ΡΠΊΠΎΠΉ master
git merge master
# A merge conflict related to concurrent changes to ci.md will be reported
# => Auto-merging ci.md
# CONFLICT (content): Merge conflict in ci.md
# Automatic merge failed; fix conflicts and then commit the result.
# Π Π°Π·ΡΠ΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΈ Π½Π°Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°Π³ΠΎΠ² CI, ΠΈ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΎ Π½Π΅ΠΌ ΠΎΡΡΠ°Π»ΠΈΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅.
# ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ci.md ΡΡΠΎΠ± ΠΎΠ½ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π» ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° ΡΠ»ΠΈΡΠ½ΠΈΡ
git add ci.md
git merge --continue
# ΠΏΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
# ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΠΊΡ feature.
git push
# ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΡΠ°ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ GitHub, Π΄ΠΎΠΆΠ΄ΠΈΡΠ΅ΡΡ ΠΏΠΎΠΊΠ° ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ.Asa tsara!
Vita ny lisitra ianao ary izao dia mila manaiky ny fangatahana fisintonana ianao master.
οΈ Asa: Ankatoavy ny fangatahana fisintonana "Steps review"
- Sokafy fangatahana fisintonana.
- Tsindrio ny "Merge pull request".
- Tsindrio ny "Confirm merge".
- Kitiho ny "Delete branch" satria tsy mila azy intsony isika.
Ity ny fitahirizanao amin'izao fotoana izao

Fahadisoan'ny vokatra
Voalaza fa βazo ampiasaina hanehoana ny fisianβny fahadisoana ny fitsapana, fa tsy hanehoana velively ny tsy fisianyβ. Na dia nanao fitsapana aza izahay ary tsy nampiseho lesoka taminay, dia nisy bibikely mamitaka niditra tao amin'ny famokarana.
Amin'ny toe-javatra toy izany dia mila mitandrina isika:
- izay apetraka amin'ny famokarana;
- kaody amin'ny kofehy
mastermisy hadisoana, izay ahafahan'ny mpamorona manomboka asa vaovao.
Tokony hahemotra na hamboarina amin'ny dikan-teny manaraka ve aho?
Ny fihemorana dia ny dingan'ny fametrahana dikan-teny tsara fantatra teo aloha ho amin'ny famokarana sy famerenana ny commits izay misy ny fahadisoana. Ny "Fixing forward" dia ny fanampiana ny fanamboarana ny master ary mametraka ny dikan-teny vaovao haingana araka izay azo atao. Satria miova ny tetika API sy ny angon-drakitra rehefa apetraka amin'ny famokarana ny kaody, miaraka amin'ny fandefasana mitohy sy fandrakofam-panadinana tsara, mazΓ na sarotra sy mampidi-doza kokoa ny mihemotra noho ny fanamboarana azy amin'ny dikan-teny manaraka.
Koa satria tsy mitondra risika amin'ny raharahantsika ny mihemotra, dia handeha amin'ity lalana ity izahay, satria mamela anay izany
- amboary haingana araka izay azo atao ny fahadisoana amin'ny vokatra;
- manao code in
mastermety avy hatrany hanombohana asa vaovao.
οΈAsa
- Hiverina any amin'ny branch
mastereo an-toerana. - Fanavaozana ny tahiry eo an-toerana avy amin'ny tahiry lavitra.
- Avereno ny commit PR merge Famerenana ny dingana Π²
master. - Mamoaka fanovana amin'ny tahiry lavitra.
Ity ny tantaran'ny tahiry misy commit mitambatra naverina

didy
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° Π²Π΅ΡΠΊΡ master.
git checkout master
# ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈΠ· ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
git pull
# ΠΡΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ PR Steps review Π² master.
# ΠΡ ΠΎΡΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π²Π΅ΡΠΊΡ ΠΈΡΡΠΎΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π·Π°Ρ
ΠΎΡΠΈΠΌ ΠΎΡΡΠ°Π²ΠΈΡΡ
git show HEAD
# ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π² Π²Π΅ΡΠΊΠ΅ master Π΄ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΡ, Π±ΡΠ» ΠΎΡΠΎΠ±ΡΠ°ΠΆΡΠ½ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΌ
git revert HEAD -m 1
# ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΠΌΠ΅Π½ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²
# ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ
git pushοΈ Fitsapana tena
Hamarino tsara izany ci.md tsy misy soratra hoe "sneaky bug" intsony rehefa avy namerina ny commit merge.
Amboary ny lisitry ny dingana CI ary avereno amin'ny master
Naverinay tanteraka ny merge commit an'ny sampana. feature. Ny vaovao tsara dia tsy misy diso isika izao master. Ny vaovao ratsy dia ny lisitra sarobidin'ny dingana fampidirana mitohy dia lasa koa. Noho izany, ny tsara indrindra dia mila mampihatra ny fanamboarana amin'ny commit avy amin'ny feature ary avereno any master miaraka amin'ny fanamboarana.
Afaka manatona ny olana amin'ny fomba samihafa isika:
- avereno commit izay manafoana ny fitambarana
featureΡmaster; - mihetsika commit avy amin'ny teo aloha
feature.
Ny ekipan'ny fampandrosoana samihafa dia mampiasa fomba fiasa samihafa amin'ity tranga ity, saingy hamindra ny fanoloran-tena ilaina amin'ny sampana misaraka izahay ary hamorona fangatahana fisarihana misaraka ho an'ity sampana vaovao ity.
οΈAsa
- Mamorona kofehy antsoina hoe
feature-fixary mifamadika amin'izany. Afindrao ny commit rehetra avy amin'ny sampana teo aloha
featureamin'ny kofehy vaovao. Mamaha ny fifandirana mampitambatra nitranga nandritra ny fifindra-monina.
Manampia fitsapana mihemotra amin'ny
ci.test.js:it('does not contain the sneaky bug', () => { expect( /.*sneakys+bug.*/gi.test(fileContents)).toBe(false); });- Manaova fitsapana eo an-toerana mba hahazoana antoka fa tsy mahomby izy ireo.
- Esory ny lahatsoratra "miaraka amin'ny bibikely manjavozavo" ao
ci.md. - Ampio ny fanovana fitsapana sy fanovana lisitry ny dingana amin'ny index ary ataovy izany.
- Avoahy amin'ny tahiry lavitra ny sampana.
Tokony hiafara amin'ny zavatra mitovy amin'izany ianao:

didy
# Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ feature-fix ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° Π½Π΅Π΅.
git checkout -b feature-fix
# ΠΠ΅ΡΠ΅Π½Π΅ΡΠΈΡΠ΅ Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ ΠΈΠ· Π±ΡΠ²ΡΠ΅ΠΉ Π²Π΅ΡΠΊΠΈ feature Π² Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ. Π Π°Π·ΡΠ΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅.
# ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΡΡΠΎΡΠΈΡ ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Ρ
ΡΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²:
# - ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΡΡ ΡΠΏΠΈΡΠΊΠ°: C0
# - Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΈΡΠΊΠ°: C2
git log --oneline --graph
git cherry-pick C0..C2
# ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ
# - ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ci.md ΠΈ/ΠΈΠ»ΠΈ ci.test.js
# - Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΈΠ½Π΄Π΅ΠΊΡ
# - Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ "git cherry-pick --continue", ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΠΌΠ΅Π½ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΠ°
# ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡ Π² ci.test.js
# ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ.
# Π£Π΄Π°Π»ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡ " with a sneaky bug" Π² ci.md.
# ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ² ΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ°Π³ΠΎΠ² ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΠΈΡ
.
git add ci.md ci.test.js
git commit -m "Fix the bug in steps list"
# ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ Π²Π΅ΡΠΊΡ Π² ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
git push --set-upstream origin feature-fix
Mamorona fangatahana misintona.
Mamorona fangatahana misintona misy lohateny Fanamboarana ny endri-javatra... hametraka feature-fix toy ny "head branch" ary master toy ny "sampana fototra".
Miandrasa mandra-pahavitan'ny fitsapana. Azonao atao ny mahita ny satan'ny fitsapana eo amin'ny faran'ny fifanakalozan-kevitra PR.
Ataovy azo antoka fa efa nametraka
masteramin'ny azy sokafy ny repository Amin'ny maha "sampana fototra", dia tsy hamaly ny fangatahana fanovana amin'ny fitahirizana fitaovana fianarana aho.
Ankatoavy ny fangatahana fisintonana "Fixing the feature"
Misaotra amin'ny fanitsiana! Ekeo azafady ny fanovana ny master avy amin'ny fisintonana fangatahana.
οΈAsa
- Tsindrio ny "Merge pull request".
- Tsindrio ny "Confirm merge".
- Kitiho ny "Delete branch" satria tsy mila azy intsony isika.
Izany no tokony hanananao amin'izao fotoana izao.

Arahabaina!
Vitanao ny dingana rehetra izay matetika ataon'ny olona mandritra ny fampidirana mitohy.
Raha mahatsikaritra olana amin'ny taranja ianao na mahafantatra ny fomba hanatsarana azy, azafady mamorona olana ao . Misy ihany koa ity taranja ity mampiasa GitHub Learning Lab ho sehatra iray.
Source: www.habr.com

