Kodi mwaphunzira malamulo a Git koma mukufuna kulingalira momwe kuphatikiza kosalekeza (CI) kumagwirira ntchito zenizeni? Kapena mwina mukufuna kukhathamiritsa ntchito zanu zatsiku ndi tsiku? Maphunzirowa akupatsani luso lothandizira pakuphatikizana kosalekeza pogwiritsa ntchito chosungira cha GitHub. Maphunzirowa sanapangidwe kuti akhale mfiti yomwe mungathe kungodutsamo; m'malo mwake, mudzachita zomwe anthu amachita kuntchito, monga momwe amachitira. Ndilongosola chiphunzitsocho pamene mukudutsa njira zomwe zikukhudzidwa.
Kodi timatani?
Pamene tikupita patsogolo, pang'onopang'ono tidzapanga mndandanda wa masitepe a CI, omwe ndi njira yabwino kukumbukira mndandandawu. Mwa kuyankhula kwina, tidzapanga mndandanda wa zochita zomwe opanga amapanga pamene akuphatikizana mosalekeza, ndikuchita kuphatikiza kosalekeza. Tidzagwiritsanso ntchito mayeso osavuta kuti tibweretse njira yathu ya CI pafupi ndi yeniyeni.
GIF iyi ikuwonetsa mwadongosolo zomwe zasungidwa munkhokwe yanu mukamapitilira maphunzirowo. Monga mukuwonera, palibe chovuta apa komanso chofunikira kwambiri.
Mudutsa muzochitika zotsatirazi za CI:
- Gwirani ntchito pa chinthu;
- Kugwiritsa ntchito mayeso odzipangira okha kuti muwonetsetse kuti zili bwino;
- Kukhazikitsa ntchito yofunika kwambiri;
- Kuthetsa mikangano pophatikiza nthambi (kuphatikiza mikangano);
- Kulakwitsa kumachitika pamalo opangira.
Kodi muphunzira chiyani?
Mudzatha kuyankha mafunso otsatirawa:
- Kodi Continuous Integration (CI) ndi chiyani?
- Ndi mitundu yanji ya mayeso odzichitira okha omwe amagwiritsidwa ntchito mu CI, ndipo poyankha ndi zochita ziti zomwe zimayambitsidwa?
- Kodi zopempha zokoka ndi ziti ndipo zimafunika liti?
- Kodi Test Driven Development (TDD) ndi chiyani ndipo ikugwirizana bwanji ndi CI?
- Kodi ndiphatikize kapena ndichotse zosinthazo?
- Bwererani kapena konza mu mtundu wina?
Poyamba ndinamasulira zinthu monga "kukoka zopempha" kulikonse, koma chifukwa chake ndinaganiza zobwezera mawu mu Chingerezi m'malo ena kuti ndichepetse misala m'malembawo. Nthawi zina ndimagwiritsa ntchito "programmer surzhik" ngati mneni wodabwitsa "kudzipereka" komwe anthu amazigwiritsa ntchito pantchito.
Kodi kuphatikiza kosalekeza ndi chiyani?
Kuphatikiza Kopitiriza, kapena CI, ndi luso laukadaulo lomwe membala aliyense wa gulu amaphatikiza kachidindo kake m'malo amodzi kamodzi patsiku, ndipo khodi yotsatila iyenera kumangidwa popanda zolakwika.
Pali kusagwirizana pa mawu awa
Mfundo yotsutsana ndiyo kuchuluka kwa kuphatikiza. Ena amatsutsa kuti kuphatikiza kachidindo kamodzi kokha patsiku sikokwanira kuti muphatikize mosalekeza. Chitsanzo chaperekedwa cha gulu lomwe aliyense amatenga code yatsopano m'mawa ndikuphatikiza kamodzi madzulo. Ngakhale kuti izi ndi zotsutsa zomveka, amakhulupirira kuti tanthauzo la kamodzi patsiku ndilothandiza, lachindunji, komanso loyenera magulu amitundu yosiyanasiyana.
Kutsutsa kwina ndikuti C ++ sichirinso chilankhulo chokhacho chomwe chimagwiritsidwa ntchito pakukula, ndipo kungofuna msonkhano wopanda cholakwika ngati njira yotsimikizira ndizofooka. Mayesero ena (mwachitsanzo, mayeso a mayunitsi ochitidwa kwanuko) ayeneranso kumaliza bwino. Pakalipano, anthu ammudzi akukonzekera kuti izi zikhale zofunikira, ndipo m'tsogolomu "kumanga + kuyesa mayunitsi" mwina kudzakhala chizolowezi chofala, ngati sichinachitike.
Kuphatikiza Kopitiriza osiyana ndi kupereka mosalekeza (Continuous Delivery, CD) chifukwa sichifuna munthu womasulidwa pambuyo pa kuphatikizika kulikonse.
Mndandanda wa masitepe omwe tidzagwiritse ntchito pamaphunzirowa
- Kokani khodi yaposachedwa. Pangani nthambi kuchokera
master
. Yambani kugwira ntchito. - Pangani zochita panthambi yanu yatsopano. Mangani ndikuyesa kwanuko. Kudutsa? Pitani ku sitepe yotsatira. Walephera? Konzani zolakwika kapena kuyesa ndikuyesanso.
- Pitani ku malo anu akutali kapena nthambi yakutali.
- Pangani pempho kukoka. Kambiranani zosinthazo, onjezerani zodzipereka pamene zokambirana zikupitilira. Yesetsani kuti mayesowo adutse pa nthambi.
- Gwirizanitsani / rebase zochita kuchokera kwa master. Pangani mayeso kudutsa pazotsatira zophatikiza.
- Chotsani kuchokera ku nthambi kupita ku zopanga.
- Ngati zonse zili bwino pakupanga kwakanthawi, phatikizani zosintha kuti zikhale zabwino.
οΈ Kukonzekera
Onetsetsani kuti muli ndi pulogalamu yoyenera
Kuti mutenge maphunzirowa mudzafunika
Mutha kugwiritsa ntchito kasitomala aliyense wa Git, koma ndingopereka malamulo a mzere wolamula.
Onetsetsani kuti muli ndi kasitomala wa Git yemwe amathandizira mzere wolamula
Ngati mulibe kasitomala wa Git yemwe amathandizira mzere wolamula, mutha kupeza malangizo oyika
Konzani posungira
Muyenera kupanga kopi yanu (mphanda)
Mwamaliza? Ngati simunasinthe makonda okhazikika, malo anu osungira maphunziro amatchedwa continuous-integration-team-scenarios-students
, ili mu akaunti yanu ya GitHub ndipo ulalo umawoneka motere
https://github.com/<Π²Π°ΡΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° GitHub>/continuous-integration-team-scenarios-students
Ndingoyimbira adilesi iyi <URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ>
.
Mabaketi a ngodya ngati
<ΡΡΡ>
zidzatanthauza kuti muyenera kuchotsa mawu oterowo ndi mtengo woyenerera.
Onetsetsani kuti Zochita za GitHub zophatikizidwa pankhokwe yamaphunzirowa. Ngati sizinatheke, chonde zithandizeni podina batani lalikulu pakati pa tsamba, lomwe mutha kufikako podina Zochita mu mawonekedwe a GitHub.
Simungathe kumaliza maphunzirowa potsatira malangizo anga ngati GitHub Zochita siziyatsidwa.
Mutha kugwiritsa ntchito luso la GitHub nthawi zonse popereka Markdown kuti muwone momwe mndandanda womwe tikupanga pano ulipo
https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.md
Za mayankho
Ngakhale njira yabwino yomaliza maphunzirowa ndikuzichita nokha, mutha kukhala ndi zovuta zina.
Ngati mukuwona kuti simukumvetsa zoyenera kuchita ndipo simungathe kupitiriza, mukhoza kuyang'ana mu ulusi solution
, yomwe ili m'malo anu oyambira.
Chonde musaphatikize solution
Π² master
pa nthawi ya maphunziro. Mungagwiritse ntchito nthambiyi kuti mudziwe zoyenera kuchita, kapena kufananiza nambala yanu ndi ya wolembayo, pogwiritsa ntchito mphamvu zonse zomwe Git amatipatsa. Ngati mwatayika kwathunthu, mutha kusinthanso nthambi yanu master
pa nthambi solution
ndiyeno bwererani chikwatu chanu chogwirira ntchito ku sitepe yamaphunziro yomwe mukufuna.
Gwiritsani ntchito izi ngati mukuzifunadi
Perekani code yanu
git add .
git commit -m "Backing up my work"
Malamulo awa
- sintha dzina
master
Π²master-backup
; - sintha dzina
solution
Π²master
; - tulukani ku nthambi yatsopano
master
ndi kulembanso zomwe zili mu bukhu logwira ntchito; - Pangani nthambi ya "solution" kuchokera ku "master" (yomwe inali "solution") ngati mungafunike nthambi ya "solution" m'tsogolomu.
git branch -m master master-backup
git branch -m solution master
git checkout master -f
git branch solution
Pambuyo masitepe mungagwiritse ntchito git log master
kuti mudziwe chomwe mukufuna.
Mutha kukonzanso chikwatu chanu chogwirira ntchito kuti chikhale chonchi:
git reset --hard <the SHA you need>
Ngati mukusangalala ndi zotsatira zake, nthawi ina mudzafunika kusindikiza chosungira chanu kumalo osungirako akutali. Musaiwale kufotokoza momveka bwino nthambi yakutali mukachita izi.
git push --force origin master
Chonde dziwani kuti timagwiritsa ntchito git push --force
. Ndizokayikitsa kuti mungafune kuchita izi pafupipafupi, koma tili ndi zochitika zenizeni pano ndi wogwiritsa ntchito m'modzi yemwe, kuwonjezera apo, amamvetsetsa zomwe akuchita.
Kuyamba ntchito
Tiyeni tiyambe kulemba mndandanda wathu wa masitepe a CI. Nthawi zambiri mungayambe sitepeyi poyang'ana kachidindo kameneka kuchokera kumalo akutali, koma tilibe nkhokwe yapafupi, kotero timayipanga kuchokera kutali.
οΈ Ntchito: sinthani malo anu, pangani nthambi kuchokera master
, kuyamba kugwira ntchito
- Konzani malo osungiramo maphunziro kuchokera
<URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ>
. - Thamangani
npm install
mu bukhu la maphunziro a repository; Timafunikira kukhazikitsa Jest, yomwe timagwiritsa ntchito poyesa mayeso. - Pangani nthambi ndikuyitcha dzina
feature
. Pitani ku ulusi uwu. -
Onjezani mayeso a code ku
ci.test.js
pakati pa ndemanga zondifunsa kuti ndichite izi.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); });
- Onjezani malemba ndi masitepe 4 oyambirira ku fayilo
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.
Malamulo
# ΠΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΊΡΡΡΠ°
git clone <repository URL>
cd <repository name>
# ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ npm install Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΊΡΡΡΠ°; ΠΎΠ½ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Jest, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ².
npm install
# Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π΅ feature. ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° ΡΡΡ Π² Π²Π΅ΡΠΊΡ.
git checkout -b feature
# ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ci.test.js ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅.
# ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ci.md ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅
Pangani zochita panthambi yatsopano, pangani ndikuyesa kwanuko
Tikhazikitsa mayeso kuti tiyendere tisanachite, kenako ndikulemba code.
Zochitika zodziwika bwino pamene mayeso amangochitika zokha
- kwanuko:
- Mosalekeza kapena poyankha kusintha koyenera koyenera;
- Pakusunga (zomasulira kapena zilankhulo zophatikizidwa ndi JIT);
- Pa nthawi ya msonkhano (pamene kusonkhanitsa kumafunika);
- Pakudzipereka;
- Mukasindikiza kumalo osungira omwe amagawana nawo.
- Pa seva yomanga kapena malo omanga:
- Khodi ikasindikizidwa kunthambi yanu/chosungira.
- Khodi mu ulusiwu ikuyesedwa.
- Zotsatira zomwe zingatheke pakuphatikizana zimayesedwa (nthawi zambiri ndi
master
). - Monga siteji yophatikizana mosalekeza/paipi yoperekera mosalekeza
Nthawi zambiri, ma test suite amathamanga mwachangu, m'pamenenso mumatha kulipira. Kugawika kwa siteji komwe kungawonekere motere.
- Mayeso ofulumira a unit - pakumanga, mu payipi ya CI
- Kuyesa kwapang'onopang'ono, gawo lachangu komanso mayeso ophatikiza - pakudzipereka, paipi ya CI
- Kuyesa kwapang'onopang'ono ndi kuphatikiza - mu payipi ya CI
- Kuyesa chitetezo, kuyesa katundu ndi mayesero ena owononga nthawi kapena okwera mtengo - mu mapaipi a CI / CD, koma m'njira zina / masitepe / mapaipi a zomangamanga, mwachitsanzo, pokonzekera womasulidwa kapena poyendetsa pamanja.
οΈ Ntchito
Ndikupangira kuyesa mayeso pamanja kaye pogwiritsa ntchito lamulo npm test
. Pambuyo pake, tiyeni tiwonjezere git hook kuti tiyese mayeso athu pakudzipereka. Pali chogwira chimodzi: Zingwe za Git sizimaganiziridwa ngati gawo lankhokwe chifukwa chake sizingapangidwe kuchokera ku GitHub limodzi ndi zida zonse zamaphunziro. Kuti muyike mbedza muyenera kuthamanga install_hook.sh
kapena kukopera fayilo repo/hooks/pre-commit
ku chikwatu chapafupi .git/hooks/
.
Mukadzipereka, mudzawona kuti mayesero akuyendetsedwa ndipo amayang'ana kuti awone ngati mawu ena ofunika alipo pamndandanda.
- Yesani mayeso pamanja poyendetsa lamulo
npm test
mufoda yanu yosungira maphunziro. Tsimikizirani kuti mayesowo amalizidwa. - Khazikitsani ndowe yochitira (chombera chisanachitike) pothamanga
install_hook.sh
. - Perekani zosintha zanu kunkhokwe kwanuko.
- Onetsetsani kuti mayesero amayendetsedwa musanapange.
Chosungira chanu chiyenera kuwoneka chonchi mutatsatira izi.
Malamulo
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ pre-commit hook Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² install_hook.sh.
# ΠΠ°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ "Add first CI steps" Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ΅.
git add ci.md ci.test.js
git commit -m "Add first CI steps"
# Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ.
Sindikizani kachidindo kunkhokwe yakutali kapena nthambi yakutali
Akamaliza kugwira ntchito kwanuko, opanga mapulogalamuwa nthawi zambiri amawonetsa ma code awo poyera kuti pamapeto pake athe kuphatikizidwa ndi anthu. Ndi GitHub, izi zimatheka pofalitsa ntchitoyi ku kopi yanu yankhokwe (foloko yanu) kapena nthambi yanu.
- Ndi mafoloko, wopanga mapulogalamu amatengera nkhokwe yakutali, ndikupanga kopi yake yakutali, yomwe imadziwikanso kuti mphanda. Kenako imagwirizanitsa nkhokwe iyi kuti igwire nawo ntchito kwanuko. Ntchitoyo ikamalizidwa ndipo mabizinesi apangidwa, amawakankhira mu foloko yake, pomwe amapezeka kwa ena ndipo amatha kuphatikizidwa munkhokwe wamba. Njirayi imagwiritsidwa ntchito kwambiri pamapulojekiti otseguka pa GitHub. Amagwiritsidwanso ntchito pamaphunziro anga apamwamba [Team Work ndi CI with Git] (
http://devops.redpill.solutions/ ). - Njira ina ndiyo kugwiritsa ntchito nkhokwe imodzi yokha yakutali ndikungowerengera nthambi
master
malo omwe adagawana nawo "otetezedwa". Munthawi imeneyi, opanga pawokha amasindikiza khodi yawo kunthambi za malo akutali kuti ena ayang'ane pa code iyi, ngati zonse zili bwino, phatikizani ndimaster
malo ogawana nawo.
Mu maphunziro awa, tidzakhala tikugwiritsa ntchito njira yogwiritsira ntchito nthambi.
Tiyeni tifalitse khodi yathu.
οΈ Ntchito
- Sindikizani zosintha kunthambi yakutali yokhala ndi dzina lofanana ndi nthambi yomwe ikugwira ntchito
Malamulo
git push --set-upstream origin feature
Pangani pempho kukoka
Pangani pempho kukoka ndi mutu Masitepe ndemanga. Ikani feature
monga "mutu nthambi" ndi master
monga "base nthambi".
Onetsetsani kuti mwayika
master
ake foloko posungira Monga "nthambi yoyambira", sindingayankhe zopempha zosintha pankhokwe yamaphunziro.
M'mawu a GitHub, "nthambi yoyambira" ndi nthambi yomwe mumayikapo ntchito yanu, ndipo "nthambi yayikulu" ndi nthambi yomwe ili ndi zosintha zomwe mukufuna.
Kambiranani zosinthazo, onjezerani zomwe mudzachite pamene zokambirana zikupitilira
Kokani pempho (PR)
Kokani pempho (PR) ndi njira yolankhulirana ndikulemba kachidindo, komanso kuwunikiranso kachidindo. Zopempha zokoka zimatchulidwa kutengera njira wamba yophatikizira kusintha kwapayekha mu code yonse. Nthawi zambiri, munthu amatengera nkhokwe yakutali ya pulojekitiyo ndikugwira ntchito pama code komweko. Zitatha izi, amayika nambalayo m'malo ake akutali ndikufunsa omwe ali ndi udindo woyang'anira nkhokweyo kuti atenge (Kokani) kachidindo kake m'nkhokwe zawo zakumaloko, komwe amawunikiranso ndikuphatikizanso (kuphatikiza) wake. Lingaliro ili limadziwikanso ndi mayina ena, mwachitsanzo, phatikizani pempho.
Simukuyenera kugwiritsa ntchito kukoka kwa GitHub kapena nsanja zofananira. Magulu achitukuko angagwiritse ntchito njira zina zoyankhulirana, kuphatikizapo kulankhulana pamasomβpamaso, kuyimba mawu, kapena imelo, komabe pali zifukwa zingapo zogwiritsira ntchito zopempha zokoka pabwalo. Nazi zina mwa izo:
- zokambirana zokonzedwa zokhudzana ndi kusintha kwa code;
- monga malo owonera ndemanga pazantchito zomwe zikupita patsogolo kuchokera kwa ma autotesters ndi anzawo;
- kukhazikitsidwa kwa ma code review;
- kotero kuti pambuyo pake mutha kupeza zifukwa ndi malingaliro kumbuyo kwa izi kapena chidutswa cha code.
Nthawi zambiri mumapanga zopempha zokoka mukafuna kukambirana zinazake kapena kupeza mayankho. Mwachitsanzo, ngati mukugwira ntchito yomwe ingagwiritsidwe ntchito m'njira zingapo, mutha kupanga pempho kukoka musanalembe mzere woyamba wa code kuti mugawane malingaliro anu ndikukambirana mapulani anu ndi omwe akukuthandizani. Ngati ntchitoyo ndi yophweka, pempho lachikoka limatsegulidwa pamene chinachake chachitika kale, chodzipereka, ndipo chingakambidwe. Nthawi zina, mungafune kutsegula PR pazifukwa zowongolera: kuyesa zokha kapena kuyambitsa ndemanga zama code. Chilichonse chomwe mungasankhe, osayiwala ku @tchulani anthu omwe mukufuna kuvomereza pazopempha zanu.
Nthawi zambiri, popanga PR, mumachita izi.
- Onetsani zomwe mukufuna kusintha ndi kuti.
- Lembani kufotokoza kufotokoza cholinga cha kusintha. Mungafune:
- onjezani chilichonse chofunikira chomwe sichikuwonekera pa code, kapena china chake chothandiza kumvetsetsa nkhani, monga #bugs ndi manambala ochita;
- @mention aliyense amene mukufuna kuyamba kugwira naye ntchito, kapena mutha @mutchule mu ndemanga pambuyo pake;
- funsani anzanu kuti akuthandizeni ndi chinachake kapena ayang'ane zinazake.
Mukatsegula PR, mayesero omwe amakonzedwa kuti ayendetse muzochitika zotere amachitidwa. Kwa ife, izi zidzakhala zofanana ndi mayesero omwe tinayendetsa kwanuko, koma mu polojekiti yeniyeni pangakhale mayesero owonjezera ndi macheke.
Chonde dikirani mayeso akamaliza. Mutha kuwona momwe mayesowo ali pansi pa zokambirana za PR mu mawonekedwe a GitHub. Pitirizani mayeso akamaliza.
οΈ Onjezani cholembera chokhudza kusakhazikika kwa mndandanda wamasitepe a CI
Mndandanda womwe umagwiritsidwa ntchito m'maphunzirowa ndiwongosintha komanso wokhazikika, tiyenera kuwonjezera pa izi.
οΈ Ntchito: pangani pempho kukoka ndemanga iyi
- Sinthani ku nthambi
master
. - Pangani nthambi yotchedwa
bugfix
. - Onjezani zolemba kumapeto kwa fayilo
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/).
- Chitani zosintha.
- Sindikizani ulusi
bugfix
kunkhokwe yakutali. - Pangani chopempha chotchedwa Kuwonjezera ndemanga ndi mutu nthambi
bugfix
ndi maziko a nthambimaster
.
Onetsetsani kuti mwayika
master
ake foloko posungira Monga "nthambi yoyambira", sindingayankhe zopempha zosintha pankhokwe yamaphunziro.
Izi ndi momwe chosungira chanu chiyenera kuwoneka.
Malamulo
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° Π²Π΅ΡΠΊΡ 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 ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅
Vomerezani pempho lachikoka "Kuwonjezera ndemanga"
οΈ Ntchito
- Pangani pempho kukoka.
- Dinani "Gwirizanitsani kukoka pempho".
- Dinani "Tsimikizani kuphatikiza".
- Dinani "Chotsani nthambi", sitikufunanso.
Ichi ndi chithunzi cha zochita pambuyo pa kuphatikiza.
οΈ Pitilizani kugwira ntchito ndikuwonjezera mayeso
Kugwirizana pa pempho kukoka nthawi zambiri kumabweretsa ntchito yowonjezera. Izi nthawi zambiri zimakhala zotsatira za kubwereza kachidindo kapena kukambirana, koma mu maphunziro athu tidzatengera izi powonjezera zinthu zatsopano pamndandanda wathu wa masitepe a CI.
Kuphatikizika kosalekeza kumakhudzanso kufalikira kwa mayeso. Zofunikira pakuyesa zimasiyana ndipo zimapezeka mu chikalata chotchedwa "contribution guidelines". Tizisunga mophweka ndikuwonjezera kuyesa pamzere uliwonse pamndandanda wathu.
Mukamagwira ntchito, yesani kuyesa kaye. Ngati anaika molondola pre-commit
mbedza m'mbuyomu, mayeso omwe angowonjezeredwa kumene adzayendetsedwa, adzalephera, ndipo palibe chomwe chidzachitike. Dziwani kuti umu ndi momwe timadziwira kuti mayesero athu akuyesa chinachake. Chochititsa chidwi n'chakuti, ngati tidayamba ndi code mayeso asanayesedwe, kupititsa mayeserowo kungatanthauze kuti codeyo inagwira ntchito monga momwe timayembekezera, kapena kuti mayeserowo sanali kuyesa kalikonse. Komanso, tikadapanda kulemba mayesowo poyambirira, tikadayiwala za iwo kotheratu, popeza palibe chomwe chikanatikumbutsa.
Test Driven Development (TDD)
TDD imalimbikitsa kulembera mayeso pamaso pa code. Mayendedwe wamba omwe amagwiritsa ntchito TDD amawoneka ngati chonchi.
- Onjezani mayeso.
- Yesani mayeso onse ndikuwonetsetsa kuti mayeso atsopanowa akulephera.
- Lembani kodi.
- Yesani mayeso, onetsetsani kuti mayeso onse apambana.
- Sinthani nambala yanu.
- Bwerezani.
Chifukwa zotsatira za mayeso omwe amalephera nthawi zambiri zimawonetsedwa zofiira, ndipo zomwe zidadutsa nthawi zambiri zimawonetsedwa zobiriwira, kuzungulirako kumadziwikanso kuti red-green-refactor.
οΈ Ntchito
Choyamba, yesani kuyesa ndikusiya kuti alephere, kenaka onjezani ndikulemba zolemba za CI sitepe yokha. Mudzawona kuti mayesero akudutsa ("wobiriwira").
Kenako sindikizani kachidindo yatsopano kumalo osungira akutali ndikuwona mayeso akuyendetsedwa mu mawonekedwe a GitHub pansi pa zokambirana zopempha ndikusintha kwa PR.
- Sinthani ku nthambi
feature
. -
Onjezani mayesowa ku
ci.test.js
itatha kuyitana komalizait (...);
.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); });
- Yesani kuyesa. Ngati
pre-commit
hook yakhazikitsidwa, kuyesa kochita kulephera. - Kenako onjezani lemba ili
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.
- Sinthani ndikusintha kwanuko.
- Tumizani zosintha kunthambi
feature
.
Inu muyenera tsopano kukhala ndi chinachake chonga ichi
Malamulo
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½Π° Π²Π΅ΡΠΊΡ 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 push
Gwirizanitsani mkangano
Pitani ku Kusintha Pempho Masitepe ndemanga.
Ngakhale kuti sitinalakwitse chilichonse ndipo mayeso a code yathu adapambana, sitingathebe kuphatikiza nthambi feature
ΠΈ master
. Ndi chifukwa ulusi wina bugfix
adalumikizana ndi master
pamene tinali kugwira ntchito pa PR iyi.
Izi zimapanga mkhalidwe kumene nthambi yakutali master
ili ndi mtundu watsopano kuposa womwe tidakhazikitsira nthambi feature
. Chifukwa cha ichi sitingangobweza m'mbuyo MUTU master
mpaka kumapeto kwa ulusi feature
. Munthawi imeneyi, tifunika kuphatikiza kapena kugwiritsa ntchito mabizinesi feature
bwezanso master
. GitHub imatha kupanga zophatikiza zokha ngati palibe mikangano. Tsoka, m'mikhalidwe yathu, nthambi zonse ziwiri zili ndi kusintha kopikisana mu fayilo ci.md
. Izi zimadziwika kuti kuphatikiza mikangano, ndipo tikuyenera kuyithetsa pamanja.
Gwirizanitsani kapena kubweza
Gwirizanitsani
- Amapanga chophatikiza chowonjezera ndikusunga mbiri yantchito.
- Imasunga mabizinesi oyambilira a nthambi ndi masitampu awo oyambira ndi olemba.
- Imasunga SHA ya mabizinesi ndikulumikizana nawo pazokambirana zosintha.
- Imafunika kuthetsa kusamvana kamodzi.
- Imapangitsa kuti nkhaniyo ikhale yopanda mzere.
- Nkhaniyi ikhoza kukhala yovuta kuwerenga chifukwa cha kuchuluka kwa nthambi (zokumbukira chingwe cha IDE).
- Zimapangitsa kuchotsa zolakwika zokha kukhala zovuta, mwachitsanzo.
git bisect
zosathandiza - zimangopeza mgwirizano.
Kubwezeretsanso
- Kubwereza kumachita kuchokera kunthambi yomwe ilipo pamwamba pa nthambi yoyambira imodzi ndi ina.
- Zochita zatsopano ndi ma SHA atsopano amapangidwa, zomwe zimapangitsa kuti zomwe mu GitHub zigwirizane ndi zopempha zoyambirira, koma osati ndemanga zofananira.
- Zopereka zimatha kuphatikizidwanso ndikusinthidwa panthawiyi, kapena kuphatikizidwa kukhala chimodzi.
- Mikangano ingapo ingafunike kuthetsedwa.
- Zimakuthandizani kuti mukhalebe ndi nkhani yamzere.
- Nkhaniyo ingakhale yosavuta kuiΕ΅erenga malinga ngati siitalika popanda chifukwa chomveka.
- Kukonza zolakwika ndi kukonza zovuta ndikosavuta pang'ono: kumapangitsa kutero
git bisect
, imatha kupangitsa kuti ma rollbacks azikhala omveka bwino komanso odziwikiratu.
- Pamafunika kusindikiza nthambi yokhala ndi migrated commited yokhala ndi mbendera
--force
pamene ntchito ndi zopempha kukoka.
Nthawi zambiri, magulu amavomereza kugwiritsa ntchito njira yomweyi nthawi zonse akafuna kuphatikiza zosintha. Izi zitha kukhala kuphatikiza "koyera" kapena kudzipereka "koyera" pamwamba, kapena china chake pakati, monga kudzipereka pamwamba molumikizana (git rebase -i
) kwanuko kunthambi zomwe sizinasindikizidwe kumalo osungira anthu, koma kuphatikiza nthambi za "gulu".
Apa tigwiritsa ntchito kuphatikiza.
οΈ Ntchito
- Onetsetsani kuti codeyo ili munthambi yapafupi
master
zasinthidwa kuchokera kunkhokwe yakutali. - Sinthani ku nthambi
feature
. - Yambani kugwirizana ndi nthambi
master
. Kusagwirizana kwapang'onopang'ono chifukwa cha kusintha kosiyanasiyana kwaci.md
. - Konzani mkanganowu kuti mndandanda wathu wa masitepe a CI ndi zolemba zake zikhalebe m'mawu.
- Sindikizani mgwirizano wophatikiza ku nthambi yakutali
feature
. - Yang'anani momwe mukufunira kukoka mu GitHub UI ndikudikirira mpaka kuphatikiza kuthetsedwa.
Malamulo
# Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π²Π΅ΡΠΊΠ΅ `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, Π΄ΠΎΠΆΠ΄ΠΈΡΠ΅ΡΡ ΠΏΠΎΠΊΠ° ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ.
Ntchito yabwino!
Mwamaliza ndi mndandanda ndipo tsopano muyenera kuvomereza pempho kukoka mkati master
.
οΈ Ntchito: Vomerezani pempho lokoka "Kuwunika Masitepe"
- Tsegulani pempho kukoka.
- Dinani "Gwirizanitsani kukoka pempho".
- Dinani "Tsimikizani kuphatikiza".
- Dinani "Chotsani nthambi" popeza sitikufunanso.
Ili ndiye posungira kwanu pakadali pano
Zolakwika zamalonda
Akuti βkuyesa kungagwiritsiridwe ntchito kusonyeza kukhalapo kwa zolakwa, koma osasonyeza kusakhalapo kwawo.β Ngakhale tidayesedwa ndipo sanatiwonetse zolakwika, cholakwika chobisika chidayamba kupanga.
Muzochitika ngati izi, tiyenera kusamala:
- zomwe zimayikidwa pakupanga;
- kodi mu ulusi
master
ndi cholakwika, pomwe opanga amatha kuyambitsa ntchito yatsopano.
Kodi ndibwezere mmbuyo kapena ndikonzenso mu mtundu wina?
Kubwerera m'mbuyo ndi njira yotumizira mtundu wakale womwe umadziwika kale kuti upangidwe ndikubwezeretsanso zochita zomwe zili ndi cholakwikacho. "Kukonzekera patsogolo" ndikuwonjezera kwa kukonza kwa master
ndikuyika mtundu watsopano posachedwa. Chifukwa ma API ndi ma schema a database amasintha pomwe ma code amatumizidwa kuti apange, ndikutumiza mosalekeza komanso kuyesedwa kwabwino, kubweza m'mbuyo nthawi zambiri kumakhala kovuta komanso kowopsa kuposa kukonza mtundu wotsatira.
Popeza kubweza kumbuyo sikukhala ndi chiopsezo kwa ife, tidzapita njira iyi, chifukwa imatilola
- konzani cholakwika pa chinthucho posachedwa;
- panga kodi
master
nthawi yomweyo oyenera kuyamba ntchito yatsopano.
οΈ Ntchito
- Sinthani ku nthambi
master
kwanuko. - Sinthani nkhokwe yapafupi kuchokera kunkhokwe yakutali.
- Bwezerani mgwirizano wa PR kuphatikiza Masitepe ndemanga Π²
master
. - Sindikizani zosintha kunkhokwe yakutali.
Iyi ndi mbiri ya nkhokwe yokhala ndi mgwirizano womwe wabwezedwa
Malamulo
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° Π²Π΅ΡΠΊΡ master.
git checkout master
# ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈΠ· ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
git pull
# ΠΡΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ PR Steps review Π² master.
# ΠΡ ΠΎΡΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π²Π΅ΡΠΊΡ ΠΈΡΡΠΎΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π·Π°Ρ
ΠΎΡΠΈΠΌ ΠΎΡΡΠ°Π²ΠΈΡΡ
git show HEAD
# ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π² Π²Π΅ΡΠΊΠ΅ master Π΄ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΡ, Π±ΡΠ» ΠΎΡΠΎΠ±ΡΠ°ΠΆΡΠ½ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΌ
git revert HEAD -m 1
# ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΠΌΠ΅Π½ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²
# ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ
git push
οΈ Kudziyesa
Onetsetsani kuti ci.md
mulibenso mawu oti "sneaky bug" mutabweza mgwirizano.
Konzani mndandanda wa masitepe a CI ndikubwezeretsanso kwa master
Tabweza kotheratu ntchito yophatikiza nthambi. feature
. Nkhani yabwino ndiyakuti tsopano tilibe cholakwika chilichonse master
. Nkhani yoyipa ndiyakuti mndandanda wathu wamtengo wapatali wa masitepe ophatikizana mosalekeza wapitanso. Chifukwa chake, m'malo mwake, tifunika kugwiritsa ntchito kukonza pazochita kuchokera feature
ndi kuwabwezera ku master
pamodzi ndi kukonza.
Titha kuthana ndi vutoli m'njira zosiyanasiyana:
- sinthani mgwirizano womwe umathetsa kuphatikizika
feature
Ρmaster
; - kusuntha kumachita kuchokera ku wakale
feature
.
Magulu osiyanasiyana achitukuko amagwiritsa ntchito njira zosiyanasiyana pankhaniyi, koma tidzasunthira kunthambi ina ndikupanga pempho lapadera la nthambi yatsopanoyi.
οΈ Ntchito
- Pangani ulusi wotchedwa
feature-fix
ndi kusintha kwa izo. -
Samutsani zonse zomwe zaperekedwa kuchokera ku nthambi yakale
feature
ku ulusi watsopano. Konzani mikangano yophatikiza yomwe idachitika panthawi yakusamuka. -
Onjezani mayeso obwerera ku
ci.test.js
:it('does not contain the sneaky bug', () => { expect( /.*sneakys+bug.*/gi.test(fileContents)).toBe(false); });
- Yendetsani mayeso kwanuko kuti muwonetsetse kuti salephera.
- Chotsani mawu akuti "ndi cholakwika cholakwika" mkati
ci.md
. - Onjezani zosintha zoyeserera ndikusintha mndandanda wamasitepe ku index ndikuzipereka.
- Falitsani nthambi ku malo akutali.
Muyenera kukhala ndi chinthu chofanana ndi ichi:
Malamulo
# Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ 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
Pangani pempho kukoka.
Pangani pempho kukoka ndi mutu Kukonza mawonekedwe. Ikani feature-fix
monga "mutu nthambi" ndi master
monga "base nthambi".
Chonde dikirani mayeso akamaliza. Mutha kuwona momwe mayesowo ali pansi pa zokambirana za PR.
Onetsetsani kuti mwayika
master
ake foloko posungira Monga "nthambi yoyambira", sindingayankhe zopempha zosintha pankhokwe yamaphunziro.
Vomerezani pempho "Kukonza mawonekedwe"
Zikomo pokonza! Chonde vomerezani zosinthazo master
kuchokera kukoka pempho.
οΈ Ntchito
- Dinani "Gwirizanitsani kukoka pempho".
- Dinani "Tsimikizani kuphatikiza".
- Dinani "Chotsani nthambi" popeza sitikufunanso.
Izi ndi zomwe muyenera kukhala nazo pakadali pano.
Zabwino zonse!
Mwamaliza masitepe onse omwe anthu amatenga nthawi zonse pophatikizana.
Ngati muwona vuto lililonse ndi maphunzirowa kapena mukudziwa momwe mungasinthire, chonde pangani vuto
Source: www.habr.com