Zochitika zofananira ndi kuphatikiza kosalekeza

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.

Zochitika zofananira ndi kuphatikiza kosalekeza

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

  1. Kokani khodi yaposachedwa. Pangani nthambi kuchokera master. Yambani kugwira ntchito.
  2. Pangani zochita panthambi yanu yatsopano. Mangani ndikuyesa kwanuko. Kudutsa? Pitani ku sitepe yotsatira. Walephera? Konzani zolakwika kapena kuyesa ndikuyesanso.
  3. Pitani ku malo anu akutali kapena nthambi yakutali.
  4. Pangani pempho kukoka. Kambiranani zosinthazo, onjezerani zodzipereka pamene zokambirana zikupitilira. Yesetsani kuti mayesowo adutse pa nthambi.
  5. Gwirizanitsani / rebase zochita kuchokera kwa master. Pangani mayeso kudutsa pazotsatira zophatikiza.
  6. Chotsani kuchokera ku nthambi kupita ku zopanga.
  7. Ngati zonse zili bwino pakupanga kwakanthawi, phatikizani zosintha kuti zikhale zabwino.

Zochitika zofananira ndi kuphatikiza kosalekeza

️ Kukonzekera

Onetsetsani kuti muli ndi pulogalamu yoyenera

Kuti mutenge maphunzirowa mudzafunika Node.js ΠΈ Git kasitomala.

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 apa.

Konzani posungira

Muyenera kupanga kopi yanu (mphanda) template posungira ndi code ya maphunzirowo pa GitHub. Tiyeni tigwirizane kuyimba kope laumwini ili nkhokwe ya maphunziro.

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.

Zochitika zofananira ndi kuphatikiza kosalekeza

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

Zochitika zofananira ndi kuphatikiza kosalekeza

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

  1. Konzani malo osungiramo maphunziro kuchokera <URL рСпозитория>.
  2. Thamangani npm install mu bukhu la maphunziro a repository; Timafunikira kukhazikitsa Jest, yomwe timagwiritsa ntchito poyesa mayeso.
  3. Pangani nthambi ndikuyitcha dzina feature. Pitani ku ulusi uwu.
  4. 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);
    });

  5. 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.

  1. Yesani mayeso pamanja poyendetsa lamulo npm test mufoda yanu yosungira maphunziro. Tsimikizirani kuti mayesowo amalizidwa.
  2. Khazikitsani ndowe yochitira (chombera chisanachitike) pothamanga install_hook.sh.
  3. Perekani zosintha zanu kunkhokwe kwanuko.
  4. Onetsetsani kuti mayesero amayendetsedwa musanapange.

Chosungira chanu chiyenera kuwoneka chonchi mutatsatira izi.
Zochitika zofananira ndi kuphatikiza kosalekeza

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 ndi master 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

  1. Sinthani ku nthambi master.
  2. Pangani nthambi yotchedwa bugfix.
  3. 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/).
  4. Chitani zosintha.
  5. Sindikizani ulusi bugfix kunkhokwe yakutali.
  6. 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.
Zochitika zofananira ndi kuphatikiza kosalekeza

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

  1. Pangani pempho kukoka.
  2. Dinani "Gwirizanitsani kukoka pempho".
  3. Dinani "Tsimikizani kuphatikiza".
  4. Dinani "Chotsani nthambi", sitikufunanso.

Ichi ndi chithunzi cha zochita pambuyo pa kuphatikiza.
Zochitika zofananira ndi kuphatikiza kosalekeza

️ 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.

  1. Onjezani mayeso.
  2. Yesani mayeso onse ndikuwonetsetsa kuti mayeso atsopanowa akulephera.
  3. Lembani kodi.
  4. Yesani mayeso, onetsetsani kuti mayeso onse apambana.
  5. Sinthani nambala yanu.
  6. 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.

  1. Sinthani ku nthambi feature.
  2. Onjezani mayesowa ku ci.test.js itatha kuyitana komaliza it (...);.

    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);
    });

  3. Yesani kuyesa. Ngati pre-commit hook yakhazikitsidwa, kuyesa kochita kulephera.
  4. 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. 
  5. Sinthani ndikusintha kwanuko.
  6. Tumizani zosintha kunthambi feature.

Inu muyenera tsopano kukhala ndi chinachake chonga ichi
Zochitika zofananira ndi kuphatikiza kosalekeza

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

  1. Onetsetsani kuti codeyo ili munthambi yapafupi master zasinthidwa kuchokera kunkhokwe yakutali.
  2. Sinthani ku nthambi feature.
  3. Yambani kugwirizana ndi nthambi master. Kusagwirizana kwapang'onopang'ono chifukwa cha kusintha kosiyanasiyana kwa ci.md.
  4. Konzani mkanganowu kuti mndandanda wathu wa masitepe a CI ndi zolemba zake zikhalebe m'mawu.
  5. Sindikizani mgwirizano wophatikiza ku nthambi yakutali feature.
  6. 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"

  1. Tsegulani pempho kukoka.
  2. Dinani "Gwirizanitsani kukoka pempho".
  3. Dinani "Tsimikizani kuphatikiza".
  4. Dinani "Chotsani nthambi" popeza sitikufunanso.

Ili ndiye posungira kwanu pakadali pano
Zochitika zofananira ndi kuphatikiza kosalekeza

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

  1. Sinthani ku nthambi master kwanuko.
  2. Sinthani nkhokwe yapafupi kuchokera kunkhokwe yakutali.
  3. Bwezerani mgwirizano wa PR kuphatikiza Masitepe ndemanga Π² master.
  4. Sindikizani zosintha kunkhokwe yakutali.

Iyi ndi mbiri ya nkhokwe yokhala ndi mgwirizano womwe wabwezedwa
Zochitika zofananira ndi kuphatikiza kosalekeza

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

  1. Pangani ulusi wotchedwa feature-fix ndi kusintha kwa izo.
  2. Samutsani zonse zomwe zaperekedwa kuchokera ku nthambi yakale feature ku ulusi watsopano. Konzani mikangano yophatikiza yomwe idachitika panthawi yakusamuka.

    Zochitika zofananira ndi kuphatikiza kosalekeza

  3. Onjezani mayeso obwerera ku ci.test.js:

    it('does not contain the sneaky bug', () => {
    expect( /.*sneakys+bug.*/gi.test(fileContents)).toBe(false);
    });

  4. Yendetsani mayeso kwanuko kuti muwonetsetse kuti salephera.
  5. Chotsani mawu akuti "ndi cholakwika cholakwika" mkati ci.md.
  6. Onjezani zosintha zoyeserera ndikusintha mndandanda wamasitepe ku index ndikuzipereka.
  7. Falitsani nthambi ku malo akutali.

Muyenera kukhala ndi chinthu chofanana ndi ichi:
Zochitika zofananira ndi kuphatikiza kosalekeza

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

  1. Dinani "Gwirizanitsani kukoka pempho".
  2. Dinani "Tsimikizani kuphatikiza".
  3. Dinani "Chotsani nthambi" popeza sitikufunanso.

Izi ndi zomwe muyenera kukhala nazo pakadali pano.
Zochitika zofananira ndi kuphatikiza kosalekeza

Zabwino zonse!

Mwamaliza masitepe onse omwe anthu amatenga nthawi zonse pophatikizana.

Ngati muwona vuto lililonse ndi maphunzirowa kapena mukudziwa momwe mungasinthire, chonde pangani vuto nkhokwe ndi zipangizo maphunziro. Maphunzirowa alinso machitidwe osiyanasiyana kugwiritsa ntchito GitHub Learning Lab ngati nsanja.

Source: www.habr.com

Kuwonjezera ndemanga