Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

Wakadzidza mirairo yeGit asi unoda kufungidzira kuti kuenderera mberi kwekubatanidza (CI) kunoshanda sei muchokwadi? Kana kuti pamwe unoda kukwidziridza zviitiko zvako zvezuva nezuva? Iyi kosi inokupa hunyanzvi hunoshanda mukuenderera kusanganisa uchishandisa GitHub repository. Iyi kosi haina kuitirwa kuti ive wizard yaunogona kungodzvanya nayo; pane zvinopesana, iwe uchaita zvimwechetezvo izvo vanhu vanoita chaizvo kubasa, nenzira imwechete yavanozviita. Ini ndichatsanangura dzidziso sezvaunofamba nematanho anobatanidzwa.

Tinoita sei?

Sezvo isu tichifambira mberi, isu tichagadzira zvishoma nezvishoma runyoro rweyakajairika CI matanho, inova nzira yakanaka yekurangarira iyi runyorwa. Mune mamwe mazwi, isu tichagadzira runyoro rwezviito zvinotorwa nevagadziri pavanenge vachiita kuenderera mberi kwekubatanidza, kuita kuenderera mberi kwekubatanidza. Isu tichashandisa zvakare yakapusa seti yebvunzo kuunza yedu CI maitiro padhuze neiyo chaiyo.

Iyi GIF schematically inoratidza kuzvipira mune yako repository paunenge uchifambira mberi nekosi. Sezvauri kuona, hapana chakaoma apa uye chete chinonyanya kukosha.

Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

Iwe unozopfuura neanotevera akajairwa CI mamiriro:

  • Shanda pane chimwe chinhu;
  • Kushandisa otomatiki bvunzo kuona mhando;
  • Kuitwa kwebasa rekutanga;
  • Kugadzirisa kukakavara kana uchibatanidza mapazi (merge conflict);
  • Kukanganisa kunoitika munzvimbo yekugadzira.

Uchadzidzei?

Unozokwanisa kupindura mibvunzo inotevera:

  • Chii chinonzi kuenderera mberi kubatanidzwa (CI)?
  • Ndeapi marudzi eautomated bvunzo anoshandiswa muCI, uye mukupindura kune zviito zvipi zvavanokonzereswa?
  • Ndezvipi zvikumbiro zvekudhonza uye zvinodikanwa rini?
  • Chii chinonzi Test Driven Development (TDD) uye inoenderana sei neCI?
  • Ndinofanira kubatanidza kana kudzoreredza shanduko?
  • Kudzosera kumashure kana kugadzirisa mune inotevera vhezheni?

Pakutanga ndakashandura zvinhu zvakadai se "kudhonza zvikumbiro" kwose kwose, asi semugumisiro ndakasarudza kudzorera mitsara muChirungu mune dzimwe nzvimbo kuti kuderedze dhigirii yekupenga mumashoko. Ini dzimwe nguva ndinoshandisa "programmer surzhik" senge izwi rechiito rinoshamisa "commit" apo vanhu vanorishandisa pabasa.

Chii chinonzi kuramba chichibatanidzwa?

Kuenderera mberi Kubatanidzwa, kana CI, inyanzvi yehunyanzvi umo nhengo yega yega yechikwata inosanganisa kodhi yavo mune yakajairika repository kamwechete pazuva, uye mhedzisiro kodhi inofanirwa kuvakwa pasina zvikanganiso.

Pane kusawirirana pamusoro petemu iyi

Pfungwa yekukakavadzana ndeye kuwanda kwekubatanidzwa. Vamwe vanopokana kuti kubatanidza kodhi kamwe chete pazuva hakuna kukwana kuti inyatso batanidza zvichienderera. Muenzaniso unopiwa wechikwata apo munhu wese anotora kodhi nyowani mangwanani uye anoibatanidza kamwe chete manheru. Kunyange uku kuri kupokana kune musoro, zvinotendwa kuti tsananguro yekamwe-zuva inogoneka, yakananga, uye yakakodzera zvikwata zvehukuru hwakasiyana.

Chimwe chinopokana ndechekuti C++ haisisiri iwo mutauro wega unoshandiswa mukusimudzira, uye kungoda kuungana pasina kukanganisa senzira yekusimbisa haina simba. Imwe seti yebvunzo (semuenzaniso, bvunzo dzeyuniti dzinoitwa munharaunda) dzinofanirawo kupedzisa zvinobudirira. Parizvino, nharaunda iri kufamba ichiita kuti ichi chive chinodiwa, uye mune ramangwana "kuvaka + unit test" ingangove yakajairika tsika, kana isati yatoita.

Kuenderera mberi Kubatanidzwa yakasiyana kubva kuenderera mberi (Kuenderera Kunoendesa, CD) pakuti haidi mumiriri wekuburitswa mushure mese kutenderera kwekubatanidza.

Rondedzero yematanho atichashandisa mukosi yese

  1. Dhonza kodhi yazvino. Gadzira bazi kubva master. Tanga kushanda.
  2. Gadzira zvibvumirano pabazi rako idzva. Vaka uye edza munharaunda. Pass? Enda kunhanho inotevera. Wakundikana? Gadzirisa kukanganisa kana bvunzo uye edza zvakare.
  3. Sunda kunzvimbo yako iri kure kana bazi riri kure.
  4. Gadzira chikumbiro chekudhonza. Kurukurai shanduko, wedzerai mamwe madhiri sezvo nhaurirano ichienderera mberi. Ita kuti bvunzo dzipfuure pachikamu chebazi.
  5. Merge/rebase anoita kubva kuna master. Ita kuti bvunzo dzipfuure pane yekubatanidza mhedzisiro.
  6. Isa kubva kubazi remhando kuenda kukugadzira.
  7. Kana zvese zvakanaka mukugadzirwa kweimwe nguva yenguva, batanidza shanduko kune master.

Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

️ Kugadzirira

Ita shuwa kuti une software chaiyo

Kuti utore kosi iyi uchada Node.js ΠΈ Git mutengi.

Unogona kushandisa chero mutengi weGit, asi ini ndinongopa mirairo yemutsetse wekuraira.

Ita shuwa kuti une Git mutengi akaiswa anotsigira mutsara wekuraira

Kana iwe usati wave neGit mutengi inotsigira mutsara wekuraira, unogona kuwana yekumisikidza mirairo pano.

Gadzirira repository

Iwe unozofanirwa kugadzira kopi yako (fork) template repository ine kodhi yekosi paGitHub. Ngatibvumiranei kufonera iyi kopi yega course repository.

Wapedza? Kana usati wachinja magadzirirwo akasarudzika, yako kosi repository inowanzodaidzwa continuous-integration-team-scenarios-students, iri muGitHub account yako uye iyo URL inotaridzika seizvi

https://github.com/<вашС имя ползоватСля Π½Π° GitHub>/continuous-integration-team-scenarios-students

Ndichangofonera kero ino <URL рСпозитория>.

Angle mabhureki akafanana <Ρ‚ΡƒΡ‚> zvichareva kuti unofanira kutsiva kutaura kwakadaro noukoshi hwakakodzera.

Iva nechokwadi chokuti GitHub zviito inosanganisirwa yeiyi kosi repository. Kana vasina kugoneswa, ndapota vagonese nekudzvanya bhatani hombe riri pakati pepeji, raunogona kusvika kwariri nekudzvanya Zviito muGitHub interface.

Iwe haugone kupedzisa kosi uchitevera mirairo yangu kana GitHub Zviito zvisina kugoneswa.

Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

Unogona kugara uchishandisa kugona kweGitHub kupa Markdown kuti uone mamiriro azvino erondedzero yatiri kugadzira pano.

https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.md

Nezvemhinduro

Nepo nzira yakanakisa yekupedzisa kosi iyi kuri kuzviita wega, unogona kunge uine zvimwe zvinonetsa.

Kana iwe uchinzwa kuti hausi kunzwisisa zvekuita uye haugone kuenderera mberi, unogona kutarisa mushinda solution, iri mune yako yekutanga repository.
Ndapota usasanganise solution Π² master panguva yekosi. Unogona kushandisa bazi iri kuona zvekuita, kana kuenzanisa kodhi yako neyemunyori, uchishandisa zvese zvinogoneka izvo Git anotipa. Kana iwe wakarasika zvachose, unogona kutsiva zvachose bazi rako master pabazi solution uye wozogadzirisa dhairekitori rako rekushanda kune nhanho yekosi yaunoda.

Shandisa izvi chete kana uchinyatsozvida

Isa kodhi yako

git add .
git commit -m "Backing up my work"

Mirairo iyi

  • rename master Π² master-backup;
  • rename solution Π² master;
  • tsvaga kune bazi idzva master uye nyora zvakare zviri mukati mebhuku rekushanda;
  • Gadzira bazi re "solution" kubva ku "master" (iro raimbove "solution") kuitira kana iwe uchida "solution" bazi mune ramangwana.

git branch -m master master-backup
git branch -m solution master
git checkout master -f
git branch solution

Mushure mematanho aya unogona kushandisa git log master kuti uone kuti ndechipi chibvumirano chaunoda.
Iwe unogona kusetazve dhairekitori rako rekushanda kune iyi kuzvipira seizvi:

git reset --hard <the SHA you need>

Kana iwe uchifara nemugumisiro, pane imwe nguva iwe unozofanirwa kushambadza yako vhezheni repository kune iri kure repository. Usakanganwa kutsanangura zvakajeka bazi riri kure kana iwe uchiita izvi.

git push --force origin master

Ndapota cherechedza kuti tinoshandisa git push --force. Hazvigoneke kuti iwe uchada kuita izvi kazhinji, asi isu tine chaiyo mamiriro pano nemumwe mushandisi wekuchengetedza uyo, nekuwedzera, anonzwisisa zvaari kuita.

Kutanga kushanda

Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

Ngatitangei kunyora runyorwa rwedu rweCI matanho. Kazhinji waizotanga nhanho iyi nekutarisa iyo yazvino vhezheni yekodhi kubva kure kure repository, asi isu hatisati tave nenzvimbo yemuno, saka tinoibatanidza kubva kure kure panzvimbo.

️ Basa: gadziridza iyo yemuno repository, gadzira bazi kubva master, tanga kushanda

  1. Clone iyo kosi repository kubva <URL рСпозитория>.
  2. Mhanya npm install mune kosi repository dhairekitori; Tinoda kuti tiise Jest, yatinoshandisa kumhanyisa bvunzo.
  3. Gadzira bazi woripa zita feature. Chinja kune iyi thread.
  4. Wedzera test code ku ci.test.js pakati pemashoko achindikumbira kuti ndiite izvi.

    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. Wedzera zvinyorwa nematanho mana ekutanga kufaira 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.  

    Teams

# ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ курса
git clone <repository URL>
cd <repository name>

# Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ npm install Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ рСпозитория курса; ΠΎΠ½ установит Jest, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для запуска тСстов.
npm install

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π΅ feature. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° эту Π² Π²Π΅Ρ‚ΠΊΡƒ.
git checkout -b feature

# ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.test.js ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅.
# ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.md ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

Gadzira kuzvipira pabazi idzva, kuvaka uye kuyedza munharaunda

Isu tichagadzira bvunzo dzekumhanya tisati taita, tobva taisa iyo kodhi.

Mamiriro chaiwo kana bvunzo dzichiitwa otomatiki

  • Munharaunda
    • Nguva dzose kana mukupindura kune zvakakodzera kuchinja kwekodhi;
    • Pakuchengetedza (yemitauro yakadudzirwa kana JIT-yakaunganidzwa);
    • Panguva yekuunganidza (kana kuunganidzwa kunodiwa);
    • On committe;
    • Pakudhindisa kunzvimbo yakagovaniswa.

  • Pakuvaka server kana kuvaka nharaunda:
    • Kana kodhi inoburitswa kune yako bazi / repository.
    • Kodhi iri mu thread iyi iri kuedzwa.
    • Iyo inogona kuitika yekubatanidzwa inoedzwa (kazhinji ne master).
    • Sekuenderera mberi kwekubatanidza nhanho / kuenderera kuburitsa pombi

Kazhinji, iyo inokurumidza bvunzo suite inomhanya, kazhinji kazhinji iwe yaunokwanisa kuimhanyisa. Iyo yakajairika nhanho yekugovera inogona kutaridzika seizvi.

  • Yekukurumidza unit bvunzo - panguva yekuvaka, muCI pombi
  • Slow unit bvunzo, inokurumidza chikamu uye yekubatanidza bvunzo - pakuzvipira, muCI pombi
  • Inononoka chikamu uye yekubatanidza bvunzo - muCI pombi
  • Kuyedzwa kwekuchengetedza, kuyedzwa kwemutoro uye kumwe kunotora nguva kana kudhura bvunzo - muCI / CD mapaipi, asi mune mamwe modhi / nhanho / mapaipi ekuvaka, semuenzaniso, paunenge uchigadzirira mumiriri wekuburitsa kana uchimhanya nemaoko.

️ Basa

Ini ndinokurudzira kumhanyisa bvunzo nemaoko kutanga uchishandisa rairo npm test. Mushure meizvozvo, ngatiwedzerei git hook yekumhanyisa bvunzo dzedu pakuzvipira. Pane imwe chete yekubata: Git hooks haaonekwe sechikamu cheiyo repository uye nekudaro haigone kuumbwa kubva kuGitHub pamwe nezvimwe zvese zvekosi zvinhu. Kuisa hook unoda kumhanya install_hook.sh kana kukopa faira repo/hooks/pre-commit kudhairekitori renzvimbo .git/hooks/.
Paunenge wazvipira, uchaona kuti bvunzo dzinoitwa uye vanotarisa kuti vaone kana mamwe mazwi akakosha aripo mune iyo rondedzero.

  1. Mhanyai bvunzo nemaoko nekumhanyisa rairo npm test mune yako kosi repository folda. Ona kuti bvunzo dzakapedzwa.
  2. Seta hoko yekuzvipira (pre-commit hook) nekumhanya install_hook.sh.
  3. Isa shanduko dzako kune yako repository.
  4. Ita shuwa kuti bvunzo dzaitwa usati wazvipira.

Yako repository inofanirwa kutaridzika seizvi mushure mekutevera matanho aya.
Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

Teams

# УстановитС pre-commit hook Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² install_hook.sh.  

# Π—Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ измСнСния Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ "Add first CI steps" Π² качСствС сообщСния ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅.
git add ci.md ci.test.js
git commit -m "Add first CI steps"

# Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ тСсты Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ.  

Shambadzira kodhi kunzvimbo iri kure kana bazi riri kure

Kana vangopedza kushanda munharaunda, vanogadzira vanowanzoita kuti kodhi yavo iwanikwe pachena kuitira kuti igozobatanidzwa neveruzhinji. NeGitHub, izvi zvinowanzoitwa nekutsikisa basa kune kopi yega repository (yako forogo) kana bazi rako pachako.

  • Nemaforogo, mugadziri anogadzira nzvimbo iri kure yakagovaniswa, achigadzira kopi yemunhu ari kure, inozivikanwawo seforogo. Inobva yabatanidza iyi dura remunhu kuti ishande nayo munharaunda. Kana basa rapera uye madhiri aitwa, anoasundira muforogo yake, maanowanikwa kune vamwe uye anogona kubatanidzwa mune yakajairika repository. Iyi nzira inowanzoshandiswa mumapurojekiti akavhurika paGitHub. Inoshandiswawo mune yangu yepamusoro kosi [Team Work uye CI ine Git] (http://devops.redpill.solutions/).
  • Imwe nzira ndeyokushandisa nzvimbo imwe chete iri kure uye kuverenga bazi chete master yakagovaniswa repository "yakachengetedzwa". Muchiitiko ichi, vagadziri vega vanoburitsa kodhi yavo kumapazi enzvimbo iri kure kuitira kuti vamwe vatarise iyi kodhi, kana zvese zvakarongeka, zvisanganise nazvo. master shared repository.

Muchidzidzo ichi, tichange tichishandisa mafambiro anoshandisa mapazi.

Ngatiburitse kodhi yedu.

️ Basa

  • Paridza shanduko kubazi riri kure rine zita rakafanana nerebazi rako riri kushanda

Teams

git push --set-upstream origin feature

Gadzira chikumbiro chekudhonza

Gadzira chikumbiro chekudhonza chine musoro Matanho wongororo. Install feature se "musoro webazi" uye master se "base branch".

Ita shuwa kuti waisa master mune yake fork the repository Se "base bazi", ini handisi kuzopindura kune zvikumbiro zvekuchinja kune kosi zvinhu repository.

MuGitHub lingo, iyo "base bazi" ibazi raunomisira basa rako, uye "musoro webazi" ibazi rine shanduko dzakarongwa.

Kurukurai nezve shanduko, wedzerai mitsva apo nhaurirano inoenderera mberi

Dhonza chikumbiro (PR)

Dhonza chikumbiro (PR) inzira yekukurukura uye kunyora kodhi, pamwe nekuita ongororo yekodhi. Dhonza zvikumbiro zvinotumidzwa mushure menzira yakajairika yekubatanidza shanduko yemunhu mukodhi yakazara. Kazhinji, munhu anogadzirisa nzvimbo iri kure yepurojekiti uye anoshanda pane kodhi munharaunda. Mushure meizvi, anoisa kodhi munzvimbo yake iri kure uye anokumbira avo vane basa renzvimbo yepamutemo kuti vatore (pull) kodhi yayo mumatura enzvimbo yavo, kwavanoongorora uye pamwe nekubatanidza (famba) yake. Iyi pfungwa inozivikanwawo nemamwe mazita, semuenzaniso, batanidza chikumbiro.

Iwe haufanirwe kushandisa iyo yekudhonza yekukumbira chimiro cheGitHub kana mapuratifomu akafanana. Zvikwata zvebudiriro zvinogona kushandisa dzimwe nzira dzekutaurirana, kusanganisira kutarisana kumeso, kufona kwezwi, kana email, asi kuchine zvikonzero zvakati kuti zvekushandisa forum-style yekudhonza zvikumbiro. Hezvino zvimwe zvacho:

  • hurukuro dzakarongwa dzine chekuita nekuchinja kwekodhi chaiyo;
  • senzvimbo yekuona mhinduro pakushanda-mu-kufambira mberi kubva kune vese autotesters uye vezera;
  • kugadziriswa kwekuongorora kwekodhi;
  • kuitira kuti gare gare iwe uwane zvikonzero uye kufunga kuseri kweichi kana icho chikamu chekodhi.

Kazhinji iwe unogadzira chikumbiro chekudhonza kana iwe uchida kukurukura chimwe chinhu kana kuwana mhinduro. Semuenzaniso, kana uri kushanda pane chimwe chinhu chinogona kuitwa nenzira dzinopfuura imwe chete, unogona kugadzira chikumbiro chekudhonza usati wanyora mutsara wekutanga wekodhi kugovera mazano ako uye kukurukura zvirongwa zvako nevabatsiri vako. Kana basa riri nyore, chikumbiro chekudhonza chinovhurwa kana chimwe chinhu chatoitwa, chakazvipira, uye chinogona kukurukurwa. Mune zvimwe zviitiko, ungangoda kuvhura PR chete nekuda kwezvikonzero zvekutonga kwemhando: kumhanyisa otomatiki bvunzo kana kutanga kodhi ongororo. Chero zvaunenge wafunga, usakanganwa ku @taura vanhu vane mvumo yaunoda muchikumbiro chako chekudhonza.

Kazhinji, kana uchigadzira PR, unoita zvinotevera.

  • Ratidza zvaunoda kuchinja uye kupi.
  • Nyora tsananguro inotsanangura chinangwa cheshanduko. Ungada:
    • wedzera chero chinhu chakakosha chisiri pachena kubva kukodhi, kana chimwe chinhu chinobatsira pakunzwisisa mamiriro, seakakodzera #bugs uye nhamba dzekuita;
    • @mention chero munhu waunoda kutanga kushanda naye, kana iwe unogona @mention ivo mune zvakataurwa gare gare;
    • kumbira vaunoshanda navo kuti vabatsire nechimwe chinhu kana kutarisa pane chimwe chinhu chaicho.

Paunenge uchinge wavhura iyo PR, iyo bvunzo dzakagadzirirwa kuti dziite mumamiriro ezvinhu akadaro dzinoitwa. Kwatiri, iyi ichave yakafanana seti yemiedzo yatakamhanyisa munharaunda, asi mupurojekiti chaiyo panogona kuve nekuwedzera bvunzo uye cheki.

Ndapota mira apo bvunzo dzapera. Iwe unogona kuona mamiriro ebvunzo pazasi pekukurukurirana kwePR muGitHub interface. Ramba uchinge wapedza bvunzo.

️ Wedzera chinyorwa nezve kusarongeka kweiyo runyorwa rweCI nhanho

Rondedzero yakashandiswa mune ino kosi ndeyekupokana uye ine musoro, isu tinofanirwa kuwedzera chinyorwa nezve izvi.

️ Basa: gadzira chikumbiro chekudhonza ichi chirevo

  1. Chinja kuita bazi master.
  2. Gadzira bazi rine zita bugfix.
  3. Wedzera chinyorwa chinyorwa kusvika kumagumo efaira 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. Ita shanduko.
  5. Shambadzira shinda bugfix kunzvimbo iri kure.
  6. Gadzira chikumbiro chekudhonza chine zita Kuwedzera chirevo nedavi remusoro bugfix uye davi repasimaster.

Ita shuwa kuti waisa master mune yake fork the repository Se "base bazi", ini handisi kuzopindura kune zvikumbiro zvekuchinja kune kosi zvinhu repository.

Izvi ndizvo zvinofanira kutarisa repository yako.
Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

Teams

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ 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 ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

Bvumira chikumbiro chekudhonza "Kuwedzera chirevo"

️ Basa

  1. Gadzira chikumbiro chekudhonza.
  2. Dzvanya "Batanidza dhonza chikumbiro".
  3. Dzvanya "Confirm merge".
  4. Dzvanya "Delete bazi", isu haticharida.

Uyu ndiwo dhayagiramu yezviitwa mushure mekubatanidza.
Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

️ Ramba uchishanda uye uchiwedzera bvunzo

Kubatira pamwe pachikumbiro chokudhonza kazhinji kazhinji kunoparira rimwe basa rokuwedzera. Izvi zvinowanzova mhedzisiro yekuongorora kodhi kana nhaurirano, asi mukosi yedu tichazotevedzera izvi nekuwedzera zvinhu zvitsva kune yedu runyorwa rweCI matanho.

Kuenderera mberi kwekubatanidza kunowanzo sanganisira kumwe kuvharwa kwebvunzo. Zvinodiwa zvekuvhara bvunzo zvinosiyana uye zvinowanzo kuwanikwa mugwaro rinonzi chimwe chinhu se "contribution guidelines". Tichazvichengeta zviri nyore uye towedzera bvunzo yemutsara wega wega mune yedu yekutarisa.

Paunenge uchiita basa, edza kutanga bvunzo. Kana wakaisa nemazvo pre-commit hook kare, iyo ichangobva kuwedzerwa bvunzo ichaitwa, ichakundikana, uye hapana chichaitwa. Ziva kuti aya ndiwo maziviro atinoita kuti bvunzo dzedu dziri kuyedza chimwe chinhu. Sezvineiwo, kana isu takatanga nekodhi pamberi pebvunzo, kupasa bvunzo kunogona kureva kuti kodhi yakashanda sezvaitarisirwa, kana kuti bvunzo dzaive dzisiri kuyedza chero chinhu. Uyezve, kudai takanga tisina kunyora bvunzo pakutanga, tingadai takakanganwa nezvadzo zvachose, sezvo pasina chaizotiyeuchidza nezvazvo.

Test Driven Development (TDD)

TDD inokurudzira kunyora bvunzo pamberi pekodhi. Yakajairika kufambiswa kwebasa uchishandisa TDD inotaridzika seizvi.

  1. Wedzera bvunzo.
  2. Mhanya bvunzo dzese uye ona kuti bvunzo nyowani yakundikana.
  3. Nyora kodhi.
  4. Mhanyai bvunzo, ita shuwa kuti bvunzo dzese dzapfuura.
  5. Refa kodhi yako.
  6. Dzokorora.

Nekuda kwekuti mhedzisiro yebvunzo inokundikana inowanzoratidzwa mutsvuku, uye iyo yakapfuura inowanzo kuratidzwa mugirini, kutenderera kunozivikanwa sered-girini-refactor.

️ Basa

Chekutanga, edza kuita bvunzo uye uchivarega vachikundikana, wobva wawedzera uye nekuita iwo mameseji eCI nhanho rondedzero pachayo. Iwe uchaona kuti miedzo iri kupfuura ("girinhi").
Wobva washambadzira iyo kodhi nyowani kune iri kure repository uye tarisa bvunzo dzichimhanya muGitHub interface pazasi pekudhonza chikumbiro hurukuro uye iyo PR mamiriro ekuvandudza.

  1. Chinja kuita bazi feature.
  2. Wedzera bvunzo idzi ku ci.test.js mushure mekufona kwekupedzisira 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. Edza kuita bvunzo. Kana pre-commit hook yakaiswa, kuedza kwekuita kunokundikana.
  4. Wobva wawedzera chinyorwa ichi ku 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. Ita uye ita shanduko munharaunda.
  6. Tumira shanduko kubazi feature.

Iwe zvino unofanirwa kuve nechinhu chakadai
Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

Teams


# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π° Π²Π΅Ρ‚ΠΊΡƒ 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

Batanidza kusawirirana

Enda kune Chinja Chikumbiro Matanho wongororo.

Kunyange zvazvo tisina kuita chakaipa uye bvunzo dzekodhi yedu dzakapfuura, isu hatigone kubatanidza bazi feature ΠΈ master. Imhaka yekuti imwe shinda bugfix yakabatanidzwa ne master patakanga tichishanda pane iyi PR.
Izvi zvinogadzira mamiriro ezvinhu apo bazi riri kure master ine vhezheni nyowani pane yatakavakirwa bazi feature. Nekuda kweizvi hatigone kungodzosera HEAD master kusvika kumagumo eshinda feature. Mumamiriro ezvinhu aya, isu tinofanirwa kubatanidza kana kushandisa kuzvipira feature rebase master. GitHub inogona kunyatso kusanganisa otomatiki kana pasina kupokana. Maiwe, mumamiriro edu ezvinhu, matavi ese ari maviri ane shanduko dzinokwikwidza mufaira ci.md. Mamiriro ezvinhu aya anozivikanwa semubatanidzwa wekupokana, uye tinofanira kuzvigadzirisa nemaoko.

Batanidza kana dzosera

Batanidza

  • Inogadzira imwe yekubatanidza kuzvipira uye inochengetedza nhoroondo yebasa.
    • Inochengetedza mabiko ekutanga emapazi neawo ekutanga mastamps uye vanyori.
    • Inochengetedza iyo SHA yezvibvumirano uye zvinongedzo kwavari mukukurukurirana kwekukumbira shanduko.
  • Inoda kugadzirisa kusawirirana kamwe chete.
  • Inoita kuti nyaya ive isina mutsara.
    • Iyo nyaya inogona kunetsa kuverenga nekuda kwenhamba huru yematavi (inoyeuchidza IDE tambo).
    • Inoita kuti kugadzirisa otomatiki kuome zvakanyanya, semuenzaniso. git bisect zvishoma zvinobatsira - zvinongowana iyo yekubatanidza commit.

Dzorera

  • Replays inoita kubva pabazi razvino pamusoro pebazi rekutanga rimwe mushure meimwe.
    • Zvitsva zvibodzwa zvine maSHA matsva zvinogadzirwa, zvichiita kuti zvipimo muGitHub zvienderane nezvikumbiro zvekutanga zvekudhonza, asi kwete zvinoenderana.
    • Zvibvumirano zvinogona kubatanidzwazve uye kugadziridzwa mukuita, kana kusanganiswa kuita imwe.
  • Kunetsana kwakawanda kungada kugadziriswa.
  • Inokutendera iwe kuchengetedza mutsara nyaya.
    • Nyaya yacho ingava nyore kuverenga chero bedzi isina kurebesa pasina chikonzero chine musoro.
    • Kugadzirisa otomatiki uye kugadzirisa zviri nyore zvishoma: zvinoita kuti zviitike git bisect, inogona kuita otomatiki rollbacks kujeka uye zvakanyanya kufanofungidzira.
  • Inoda kushambadza bazi rine mamigrated commits ane mureza --force kana ichishandiswa nezvikumbiro zvekudhonza.

Kazhinji, zvikwata zvinobvumirana kugara vachishandisa zano rimwechete pavanenge vachida kubatanidza shanduko. Izvi zvinogona kuve "kwakachena" kusanganisa kana "kwakachena" kuzvipira pamusoro, kana chimwe chinhu chiri pakati, senge kuita chisungo pamusoro uchidyidzana(git rebase -i) munharaunda yemapazi asina kuburitswa kunzvimbo inochengeterwa veruzhinji, asi kusanganisa mapazi "eruzhinji".

Pano tichashandisa kubatanidza.

️ Basa

  1. Ita shuwa kuti kodhi iri mubazi renzvimbo master yakagadziridzwa kubva kure repository.
  2. Chinja kuita bazi feature.
  3. Tanga kubatanidza nebazi master. Kubatanidza kusawirirana nekuda kwekukwikwidza shanduko kune ci.md.
  4. Gadzirisa kupokana kuitira kuti ese edu rondedzero yeCI nhanho uye noti nezvayo zvirambe zviri muzvinyorwa.
  5. Shambadzira chibvumirano chekubatanidza kune bazi riri kure feature.
  6. Tarisa mamiriro echikumbiro chekudhonza muGitHub UI uye mirira kusvika kusanganisa kwagadziriswa.

Teams

# Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π² локальноС Π²Π΅Ρ‚ΠΊΠ΅ `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, Π΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎΠΊΠ° слияниС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ.

Basa rakanaka!

Iwe wapedza nerondedzero uye ikozvino unofanirwa kubvumidza chikumbiro chekudhonza mukati master.

️ Basa: Bvumira chikumbiro chekudhonza "Matanho wongororo"

  1. Vhura chikumbiro chekudhonza.
  2. Dzvanya "Batanidza dhonza chikumbiro".
  3. Dzvanya "Confirm merge".
  4. Dzvanya "Delete bazi" sezvo isu haticharida.

Iyi ndiyo repository yako panguva ino
Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

Kukanganisa kwechigadzirwa

Zvinonzi "kuongorora kunogona kushandiswa kuratidza kuvapo kwezvikanganiso, asi kusamboratidza kusavapo." Kunyangwe isu takave nemiedzo uye ivo vasina kutiratidza kukanganisa, bug inonyengera yakapinda mukugadzira.

Muchiitiko chakadai, tinofanira kutarisira:

  • izvo zvinoiswa mukugadzirwa;
  • code mu thread master nechikanganiso, kubva kune vagadziri vanogona kutanga basa idzva.

Ndinofanira kudzosera kumashure kana kugadzirisa mune inotevera vhezheni?

Kudzoreredza kumashure ndiyo maitiro ekuisa inozivikanwa yakanaka yekutanga vhezheni mukugadzira uye kudzoreredza maitirwo ane kukanganisa. "Kugadzirisa mberi" ndiko kuwedzera kwekugadzirisa kune master uye kutumira shanduro itsva nekukurumidza sezvinobvira. Nekuti APIs uye dhatabhesi schemas inoshanduka sezvo kodhi inoiswa mukugadzirwa, nekuenderera mberi kuburitsa uye yakanaka bvunzo kufukidzwa, kudzoreredza kumashure kunowanzo kuoma uye kune njodzi pane kuigadzirisa mune inotevera vhezheni.

Sezvo kutenderedza kumashure hakutakure chero njodzi kwatiri, isu tichaenda nenzira iyi, nekuti inotitendera

  • gadzirisa kukanganisa pachigadzirwa nekukurumidza;
  • gadzira code mukati master pakarepo yakakodzera kutanga basa idzva.

️ Basa

  1. Chinja kuita bazi master munharaunda.
  2. Gadzirisa dura renzvimbo kubva kunzvimbo iri kure.
  3. Dzorera iyo PR yekubatanidza chibvumirano Matanho wongororo Π² master.
  4. Paridza shanduko kune iri kure repository.

Iyi ndiyo nhoroondo yenzvimbo ine merge commit yadzoserwa
Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

Teams

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ master.
git checkout master

# ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория.
git pull

# ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния PR Steps review Π² master.
# ΠœΡ‹ отмСняСм ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния, поэтому Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ истории, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
git show HEAD

# ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» послСдним Π² Π²Π΅Ρ‚ΠΊΠ΅ master Π΄ΠΎ слияния, Π±Ρ‹Π» ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΡ‘Π½ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ
git revert HEAD -m 1
# ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ сообщСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ измСнСния Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
git push

️ Kuzviedza

Ita shuwa kuti ci.md haisisina chinyorwa che "sneaky bug" mushure mekudzoreredza chibvumirano chekubatanidza.

Gadzirisa rondedzero yeCI matanho uye udzorere kuna master

Takadzora zvachose kubatanidzwa kwebazi. feature. Nhau dzakanaka ndedzekuti isu hatina kukanganisa mukati master. Nhau dzakaipa ndedzekuti runyorwa rwedu rwakakosha rwematanho ekubatanidza anoenderera aenda zvakare. Saka, zvine hungwaru, isu tinofanirwa kunyorera gadziriso kune iyo inobatika kubva feature wozvidzosera ku master pamwe nekugadzirisa.

Tinogona kugadzirisa dambudziko nenzira dzakasiyana:

  • dzosera chisungo chinosunungura kusanganisa feature с master;
  • kufamba kunoita kubva kune yekutanga feature.

Zvikwata zvakasiyana zvebudiriro zvinoshandisa nzira dzakasiyana mune iyi kesi, asi isu tichafamba zvinobatsira kune rimwe bazi rakasiyana uye kugadzira yakaparadzana yekudhonza chikumbiro chebazi idzva iri.

️ Basa

  1. Gadzira thread inonzi feature-fix uye shandura kwairi.
  2. Tamisa zvese zvinopihwa kubva kune yaimbova bazi feature kune imwe thread. Gadzirisa kusawirirana kwakaitika panguva yekutama.

    Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

  3. Wedzera regression bvunzo kune ci.test.js:

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

  4. Ita bvunzo munharaunda kuti uone kuti hadzikundike.
  5. Bvisa chinyorwa "ine sneaky bug" mukati ci.md.
  6. Wedzera bvunzo shanduko uye nhanho rondedzero shanduko kune index uye uzviite.
  7. Shandisa bazi kunzvimbo iri kure.

Iwe unofanirwa kupedzisira uine chimwe chinhu chakafanana neichi:
Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

Teams

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ 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

Gadzira chikumbiro chekudhonza.

Gadzira chikumbiro chekudhonza chine musoro Kugadzirisa chimiro. Install feature-fix se "musoro webazi" uye master se "base branch".
Ndapota mira bvunzo dzapera. Iwe unogona kuona mamiriro ebvunzo pazasi pehurukuro yePR.

Ita shuwa kuti waisa master mune yake fork the repository Se "base bazi", ini handisi kuzopindura kune zvikumbiro zvekuchinja kune kosi zvinhu repository.

Bvumira chikumbiro chekudhonza "Kugadzirisa chimiro"

Ndatenda nekugadzirisa! Ndapota bvumira shanduko ku master kubva pakudhonza chikumbiro.

️ Basa

  1. Dzvanya "Batanidza dhonza chikumbiro".
  2. Dzvanya "Confirm merge".
  3. Dzvanya "Delete bazi" sezvo isu haticharida.

Izvi ndizvo zvaunofanira kuva nazvo panguva ino.
Mamiriro ezvinhu akajairika nekubatanidzwa kunoenderera

Makorokoto!

Wapedza matanho ese anowanzo torwa nevanhu panguva yekuenderera mberi kwekubatanidza.

Kana iwe ukaona chero matambudziko nekosi kana kuziva maitiro ekugadzirisa, ndapota gadzira nyaya mukati repositories ane kosi zvinhu. Kosi iyi inewo interactive version uchishandisa GitHub Kudzidza Lab sepuratifomu.

Source: www.habr.com

Voeg