Umejifunza maagizo ya Git lakini unataka kufikiria jinsi ujumuishaji unaoendelea (CI) unavyofanya kazi katika ukweli? Au labda unataka kuboresha shughuli zako za kila siku? Kozi hii itakupa ujuzi wa vitendo katika ujumuishaji unaoendelea kwa kutumia hazina ya GitHub. Kozi hii haikusudiwi kuwa mchawi ambao unaweza kubofya tu; kinyume chake, utafanya vitendo sawa na ambavyo watu hufanya kazini, kwa njia sawa na wanafanya. Nitaeleza nadharia unapopitia hatua zinazohusika.
Tunafanya nini?
Tunapoendelea, tutaunda hatua kwa hatua orodha ya hatua za kawaida za CI, ambayo ni njia nzuri ya kukumbuka orodha hii. Kwa maneno mengine, tutaunda orodha ya vitendo ambavyo watengenezaji huchukua wakati wa kufanya ushirikiano unaoendelea, wakifanya ushirikiano unaoendelea. Pia tutatumia seti rahisi ya majaribio kuleta mchakato wetu wa CI karibu na ule halisi.
GIF hii inaonyesha kimkakati ahadi kwenye hazina yako unapoendelea kwenye kozi. Kama unaweza kuona, hakuna chochote ngumu hapa na muhimu zaidi.

Utapitia hali zifuatazo za kawaida za CI:
- Fanya kazi kwenye kipengele;
- Utumiaji wa vipimo vya kiotomatiki ili kuhakikisha ubora;
- Utekelezaji wa kazi ya kipaumbele;
- Utatuzi wa migogoro wakati wa kuunganisha matawi (unganisha migogoro);
- Hitilafu hutokea katika mazingira ya uzalishaji.
Utajifunza nini?
Utaweza kujibu maswali yafuatayo:
- Ujumuishaji endelevu (CI) ni nini?
- Ni aina gani za majaribio ya kiotomatiki hutumiwa katika CI, na kwa kujibu ni vitendo gani vinachochewa?
- Maombi ya kuvuta ni nini na yanahitajika lini?
- Maendeleo ya Kuendesha Mtihani (TDD) ni nini na inahusiana vipi na CI?
- Je, niunganishe au nibadilishe tena mabadiliko?
- Rudisha nyuma au urekebishe katika toleo linalofuata?
Mwanzoni nilitafsiri vitu kama "maombi ya kuvuta" kila mahali, lakini kwa sababu hiyo niliamua kurudisha misemo kwa Kiingereza katika sehemu zingine ili kupunguza kiwango cha wazimu katika maandishi. Wakati fulani nitatumia "programmer surzhik" kama vile kitenzi kizuri "commit" ambapo watu huitumia kazini.
Ushirikiano endelevu ni nini?
Kuendelea Kuunganishwa, au CI, ni mazoezi ya kiufundi ambapo kila mwanachama wa timu huunganisha misimbo yake kwenye hazina ya pamoja angalau mara moja kwa siku, na msimbo unaotokana lazima uundwe angalau bila hitilafu.
Kuna kutokubaliana kuhusu neno hili
Hatua ya ugomvi ni mzunguko wa ushirikiano. Wengine wanasema kuwa kuunganisha msimbo mara moja tu kwa siku haitoshi kuunganishwa kila wakati. Mfano umetolewa wa timu ambapo kila mtu huchukua nambari mpya asubuhi na kuiunganisha mara moja jioni. Ingawa hili ni pingamizi linalofaa, kwa ujumla inaaminika kuwa ufafanuzi wa mara moja kwa siku ni wa vitendo, mahususi na unafaa kwa timu za saizi tofauti.
Pingamizi lingine ni kwamba C++ sio lugha pekee inayotumiwa katika ukuzaji, na kuhitaji tu mkusanyiko usio na makosa kama njia ya uthibitishaji ni dhaifu. Baadhi ya majaribio (kwa mfano, majaribio ya vipimo yanayotekelezwa ndani ya nchi) lazima pia yakamilike kwa mafanikio. Kwa sasa, jumuiya inaelekea kufanya hili kuwa hitaji, na katika siku zijazo "majaribio ya kujenga + kitengo" labda yatakuwa mazoea ya kawaida, ikiwa haijafanya hivyo.
Kuendelea Kuunganishwa tofauti na utoaji wa kuendelea (Utoaji Unaoendelea, CD) kwa kuwa hauhitaji mgombeaji wa toleo baada ya kila mzunguko wa ujumuishaji.
Orodha ya hatua tutakazotumia katika kipindi chote
- Vuta msimbo wa hivi punde. Unda tawi kutoka
master. Anza kufanya kazi. - Unda ahadi kwenye tawi lako jipya. Jenga na ujaribu ndani ya nchi. Kupitisha? Nenda kwa hatua inayofuata. Umeshindwa? Rekebisha hitilafu au majaribio na ujaribu tena.
- Bonyeza kwenye hazina yako ya mbali au tawi la mbali.
- Unda ombi la kuvuta. Jadili mabadiliko, ongeza ahadi zaidi mazungumzo yakiendelea. Fanya majaribio kupita kwenye tawi la kipengele.
- Unganisha/punguza tena ahadi kutoka kwa bwana. Fanya vipimo kupita kwenye matokeo ya kuunganisha.
- Sambaza kutoka kwa tawi la kipengele hadi toleo la umma.
- Ikiwa kila kitu ni nzuri katika uzalishaji kwa muda fulani, unganisha mabadiliko kwa bwana.

οΈ Maandalizi
Hakikisha una programu sahihi
Ili kuchukua kozi hii utahitaji ΠΈ .
Unaweza kutumia mteja wowote wa Git, lakini nitatoa tu amri kwa safu ya amri.
Hakikisha umesakinisha mteja wa Git ambaye anaunga mkono safu ya amri
Ikiwa bado huna mteja wa Git anayetumia safu ya amri, unaweza kupata maagizo ya usakinishaji .
Tayarisha hifadhi
Utahitaji kuunda nakala ya kibinafsi (uma) kwenye GitHub. Tukubali kupiga nakala hii ya kibinafsi hazina ya kozi.
Umemaliza? Ikiwa haujabadilisha mipangilio chaguo-msingi, hazina yako ya kozi ina uwezekano mkubwa wa kuitwa continuous-integration-team-scenarios-students, iko katika akaunti yako ya GitHub na URL inaonekana kama hii
https://github.com/<Π²Π°ΡΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° GitHub>/continuous-integration-team-scenarios-studentsNitaita anwani hii kwa urahisi <URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ>.
Mabano ya pembe kama
<ΡΡΡ>itamaanisha kuwa lazima ubadilishe usemi kama huo na thamani inayofaa.
Hakikisha kwamba Vitendo vya GitHub imejumuishwa kwa hazina hii ya kozi. Ikiwa hazijawezeshwa, tafadhali ziwezeshe kwa kubofya kitufe kikubwa katikati ya ukurasa, ambacho unaweza kupata kwa kubofya Vitendo kwenye kiolesura cha GitHub.
Hutaweza kukamilisha kozi kufuatia maagizo yangu ikiwa Vitendo vya GitHub havijawezeshwa.

Unaweza kutumia uwezo wa GitHub kila wakati kutoa Markdown ili kuona hali ya sasa ya orodha tunayounda hapa.
https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.mdKuhusu majibu
Ingawa njia bora ya kukamilisha kozi hii ni kuifanya wewe mwenyewe, unaweza kuwa na ugumu fulani.
Ikiwa unahisi kuwa huelewi nini cha kufanya na huwezi kuendelea, unaweza kuangalia kwenye thread solution, ambayo iko kwenye hazina yako ya kuanza.
Tafadhali usichanganye solution Π² master wakati wa kozi. Unaweza kutumia tawi hili kujua la kufanya, au kulinganisha nambari yako na ya mwandishi, kwa kutumia uwezo wote ambao Git inatupa. Ikiwa umepotea kabisa, unaweza kubadilisha kabisa tawi lako master kwenye tawi solution na kisha uweke upya saraka yako ya kufanya kazi kwa hatua ya kozi unayohitaji.
Tumia hii tu ikiwa unahitaji kweli
Weka nambari yako ya kuthibitisha
git add .
git commit -m "Backing up my work"Amri hizi
- badilisha jina
masterΠ²master-backup; - badilisha jina
solutionΠ²master; - angalia tawi jipya
masterna uandike upya yaliyomo kwenye saraka ya kazi; - Unda tawi la "suluhisho" kutoka kwa "bwana" (ambalo lilikuwa "suluhisho") ikiwa utahitaji tawi la "suluhisho" katika siku zijazo.
git branch -m master master-backup
git branch -m solution master
git checkout master -f
git branch solutionBaada ya hatua hizi unaweza kutumia git log master ili kujua ni ahadi gani unahitaji.
Unaweza kuweka upya saraka yako ya kufanya kazi kwa ahadi hii kama hii:
git reset --hard <the SHA you need>Ikiwa umefurahiya matokeo, wakati fulani utahitaji kuchapisha toleo lako la hazina kwenye hazina ya mbali. Usisahau kutaja wazi tawi la mbali unapofanya hivi.
git push --force origin masterTafadhali kumbuka kuwa tunatumia git push --force. Haiwezekani kwamba utataka kufanya hivi mara nyingi sana, lakini tuna hali maalum hapa na mtumiaji mmoja wa hazina ambaye, kwa kuongezea, anaelewa anachofanya.
Kuanza kufanya kazi

Wacha tuanze kuandaa orodha yetu ya hatua za CI. Kwa kawaida ungeanza hatua hii kwa kuangalia toleo la hivi punde la msimbo kutoka hazina ya mbali, lakini bado hatuna hazina ya ndani, kwa hivyo tunaiiga kutoka kwa ile ya mbali badala yake.
οΈ Kazi: sasisha hazina ya ndani, unda tawi kutoka master, anza kufanya kazi
- Funga hazina ya kozi kutoka
<URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ>. - Endesha
npm installkatika saraka ya hazina ya kozi; Tunaihitaji ili kusakinisha Jest, ambayo tunaitumia kufanya majaribio. - Unda tawi na uipe jina
feature. Badili hadi kwenye uzi huu. Ongeza nambari ya jaribio kwa
ci.test.jskati ya maoni kuniuliza nifanye hivi.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); });- Ongeza maandishi na hatua 4 za kwanza kwenye faili
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.ΠΠΎΠΌΠ°Π½Π΄Ρ
# ΠΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΊΡΡΡΠ°
git clone <repository URL>
cd <repository name>
# ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ npm install Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΊΡΡΡΠ°; ΠΎΠ½ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Jest, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ².
npm install
# Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π΅ feature. ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° ΡΡΡ Π² Π²Π΅ΡΠΊΡ.
git checkout -b feature
# ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ci.test.js ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅.
# ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ci.md ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅Unda ahadi kwenye tawi jipya, jenga na ujaribu ndani ya nchi
Tutaweka majaribio ya kufanya kabla ya kufanya, na kisha kutekeleza nambari.
Matukio ya kawaida wakati majaribio yanaendeshwa kiotomatiki
- Ndani ya nchi:
- Kuendelea au kwa kukabiliana na mabadiliko sahihi ya kanuni;
- Unapohifadhi (kwa lugha zilizotafsiriwa au zilizokusanywa na JIT);
- Wakati wa kusanyiko (wakati mkusanyiko unahitajika);
- Juu ya ahadi;
- Wakati wa kuchapisha kwenye hazina iliyoshirikiwa.
- Kwenye seva ya ujenzi au mazingira ya ujenzi:
- Wakati msimbo unachapishwa kwa tawi la kibinafsi/hazina.
- Msimbo katika mazungumzo haya unajaribiwa.
- Matokeo yanayoweza kutokea ya muunganisho yanajaribiwa (kawaida na
master). - Kama hatua ya ujumuishaji endelevu/bomba la uwasilishaji endelevu
Kwa kawaida, kadiri kikundi cha majaribio kinavyofanya kazi kwa haraka, ndivyo unavyoweza kumudu kukiendesha mara nyingi zaidi. Usambazaji wa hatua ya kawaida unaweza kuonekana kama hii.
- Vipimo vya kitengo cha haraka - wakati wa kujenga, katika bomba la CI
- Majaribio ya vipimo vya polepole, sehemu ya haraka na majaribio ya ujumuishaji - kwa ahadi, katika bomba la CI
- Vipimo vya polepole vya sehemu na ujumuishaji - kwenye bomba la CI
- Upimaji wa usalama, upimaji wa upakiaji na majaribio mengine ya muda au ya gharama kubwa - katika mabomba ya CI/CD, lakini tu katika hali/hatua/mabomba fulani ya muundo, kwa mfano, wakati wa kuandaa mgombeaji wa toleo au wakati wa kukimbia mwenyewe.
οΈ Kazi
Ninapendekeza kuendesha majaribio kwa mikono kwanza kwa kutumia amri npm test. Baada ya hapo, wacha tuongeze ndoano ya git ili kuendesha majaribio yetu kwa kujitolea. Kuna mtego mmoja: Kulabu za Git hazizingatiwi kama sehemu ya hazina na kwa hivyo haziwezi kutengenezwa kutoka kwa GitHub pamoja na vifaa vingine vya kozi. Ili kufunga ndoano unahitaji kukimbia install_hook.sh au nakili faili repo/hooks/pre-commit kwa saraka ya ndani .git/hooks/.
Unapojitolea, utaona kwamba majaribio yanaendeshwa na wanaangalia ili kuona ikiwa maneno fulani yapo kwenye orodha.
- Endesha majaribio kwa mikono kwa kuendesha amri
npm testkwenye folda yako ya hazina ya kozi. Thibitisha kuwa majaribio yamekamilika. - Weka ndoano ya ahadi (ndoano ya kujitolea kabla) kwa kukimbia
install_hook.sh. - Toa mabadiliko yako kwenye hazina yako ya karibu.
- Hakikisha majaribio yanaendeshwa kabla ya kufanya.
Hifadhi yako inapaswa kuonekana kama hii baada ya kufuata hatua hizi.

ΠΠΎΠΌΠ°Π½Π΄Ρ
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ pre-commit hook Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² install_hook.sh.
# ΠΠ°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ "Add first CI steps" Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ΅.
git add ci.md ci.test.js
git commit -m "Add first CI steps"
# Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ. Chapisha msimbo kwenye hazina ya mbali au tawi la mbali
Pindi tu zinapomaliza kufanya kazi ndani ya nchi, wasanidi kwa kawaida hufanya msimbo wao upatikane hadharani ili hatimaye uweze kuunganishwa na umma. Kwa GitHub, hii kawaida hupatikana kwa kuchapisha kazi hiyo kwa nakala ya kibinafsi ya hazina (uma ya kibinafsi) au tawi la kibinafsi.
- Kwa uma, msanidi programu hutengeneza hazina iliyoshirikiwa ya mbali, na kuunda nakala yake ya kibinafsi ya mbali, inayojulikana pia kama uma. Kisha huunganisha hazina hii ya kibinafsi kufanya kazi nayo ndani. Wakati kazi imekamilika na ahadi zinafanywa, anazisukuma kwenye uma wake, ambapo zinapatikana kwa wengine na zinaweza kuunganishwa kwenye hifadhi ya kawaida. Njia hii hutumiwa sana katika miradi ya chanzo wazi kwenye GitHub. Inatumika pia katika kozi yangu ya juu [Kazi ya Timu na CI na Git] ().
- Njia nyingine ni kutumia hazina moja tu ya mbali na kuhesabu tawi tu
masterhazina iliyoshirikiwa "iliyolindwa". Katika hali hii, wasanidi programu binafsi huchapisha msimbo wao kwenye matawi ya hazina ya mbali ili wengine waweze kuangalia msimbo huu, ikiwa kila kitu kiko sawa, iunganishe namasterhazina iliyoshirikiwa.
Katika kozi hii mahususi, tutakuwa tukitumia mtiririko wa kazi unaotumia matawi.
Wacha tuchapishe nambari yetu.
οΈ Kazi
- Chapisha mabadiliko kwenye tawi la mbali lenye jina sawa na tawi lako linalofanya kazi
ΠΠΎΠΌΠ°Π½Π΄Ρ
git push --set-upstream origin featureUnda ombi la kuvuta
Unda ombi la kuvuta na kichwa Mapitio ya hatua. Sakinisha feature kama "tawi la kichwa" na master kama "tawi la msingi".
Hakikisha umesakinisha
masterkatika yake uma hazina Kama "tawi la msingi", sitajibu maombi ya mabadiliko kwenye hazina ya vifaa vya kozi.
Katika GitHub lingo, "tawi la msingi" ni tawi ambalo unaweka kazi yako, na "tawi la kichwa" ni tawi lililo na mabadiliko yaliyopendekezwa.
Jadili mabadiliko, ongeza ahadi mpya wakati mjadala unaendelea
Vuta ombi (PR)
Vuta ombi (PR) ni njia ya kujadili na kuandika msimbo, pamoja na kufanya uhakiki wa kanuni. Maombi ya kuvuta yanaitwa baada ya njia ya jumla ya kuunganisha mabadiliko ya mtu binafsi kwenye msimbo wa jumla. Kwa kawaida, mtu hutengeneza hazina rasmi ya mbali ya mradi na kufanya kazi kwenye msimbo ndani ya nchi. Baada ya hayo, anaweka nambari hiyo kwenye hazina yake ya kibinafsi na kuwauliza wale wanaohusika na hazina rasmi kuchukua(kuvuta) nambari yake kwenye hazina zao za ndani, ambapo wanakagua na ikiwezekana kujumuisha(kuunganisha) yake. Dhana hii pia inajulikana kwa majina mengine, kwa mfano, unganisha ombi.
Sio lazima utumie kipengele cha ombi la kuvuta la GitHub au majukwaa kama hayo. Timu za maendeleo zinaweza kutumia mbinu nyingine za mawasiliano, ikiwa ni pamoja na mawasiliano ya ana kwa ana, simu za sauti au barua pepe, lakini bado kuna sababu kadhaa za kutumia maombi ya kuvuta kwa mtindo wa mijadala. Hapa kuna baadhi yao:
- majadiliano yaliyopangwa kuhusiana na mabadiliko maalum ya kanuni;
- kama mahali pa kutazama maoni kuhusu kazi inayoendelea kutoka kwa waendeshaji otomatiki na wenzao;
- urasimishaji wa mapitio ya kanuni;
- ili baadaye uweze kujua sababu na mazingatio nyuma ya hii au kipande cha msimbo.
Kwa kawaida huunda ombi la kuvuta unapohitaji kujadili kitu au kupata maoni. Kwa mfano, ikiwa unafanyia kazi kipengele ambacho kinaweza kutekelezwa kwa zaidi ya njia moja, unaweza kuunda ombi la kuvuta kabla ya kuandika mstari wa kwanza wa msimbo ili kushiriki mawazo yako na kujadili mipango yako na washirika wako. Ikiwa kazi ni rahisi, ombi la kuvuta linafunguliwa wakati kitu tayari kimefanywa, kimejitolea, na kinaweza kujadiliwa. Katika baadhi ya matukio, unaweza kutaka kufungua PR kwa sababu za udhibiti wa ubora pekee: kufanya majaribio ya kiotomatiki au kuanzisha ukaguzi wa misimbo. Chochote utakachoamua, usisahau @ kutaja watu ambao unataka idhini yao katika ombi lako la kuvuta.
Kwa kawaida, wakati wa kuunda PR, unafanya zifuatazo.
- Onyesha unachopendekeza kubadilisha na wapi.
- Andika maelezo ukieleza madhumuni ya mabadiliko. Unaweza kutaka:
- ongeza kitu chochote muhimu ambacho hakiko wazi kutoka kwa msimbo, au kitu muhimu kwa kuelewa muktadha, kama vile #bugs na nambari za kufanya;
- @mtaja mtu yeyote unayetaka kuanza kufanya naye kazi, au unaweza @kumtaja kwenye maoni baadaye;
- waombe wenzako wakusaidie kwa jambo fulani au uangalie jambo mahususi.
Mara tu unapofungua PR, majaribio yaliyosanidiwa kufanya kazi katika hali kama hizi hutekelezwa. Kwa upande wetu, hii itakuwa seti sawa ya vipimo ambavyo tuliendesha ndani ya nchi, lakini katika mradi halisi kunaweza kuwa na vipimo vya ziada na hundi.
Tafadhali subiri wakati majaribio yanakamilika. Unaweza kuona hali ya majaribio chini ya majadiliano ya PR kwenye kiolesura cha GitHub. Endelea wakati majaribio yamekamilika.
οΈ Ongeza dokezo kuhusu kubahatisha kwa orodha ya hatua za CI
Orodha iliyotumiwa katika kozi hii ni ya kiholela na ya kibinafsi, tunapaswa kuongeza maelezo kuhusu hili.
οΈ Kazi: unda ombi la kuvuta maoni haya
- Badilisha hadi tawi
master. - Unda tawi linaloitwa
bugfix. - Ongeza maandishi hadi mwisho wa faili
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/). - Fanya mabadiliko.
- Chapisha thread
bugfixkwa hazina ya mbali. - Unda ombi la kuvuta lililopewa jina Kuongeza maoni na tawi la kichwa
bugfixna tawi la msingimaster.
Hakikisha umesakinisha
masterkatika yake uma hazina Kama "tawi la msingi", sitajibu maombi ya mabadiliko kwenye hazina ya vifaa vya kozi.
Hivi ndivyo hazina yako inapaswa kuonekana kama.

ΠΠΎΠΌΠ°Π½Π΄Ρ
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° Π²Π΅ΡΠΊΡ 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 ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅Idhinisha ombi la kuvuta "Kuongeza maoni"
οΈ Kazi
- Unda ombi la kuvuta.
- Bonyeza "Unganisha ombi la kuvuta".
- Bonyeza "Thibitisha kuunganisha".
- Bofya "Futa tawi", hatuhitaji tena.
Huu ni mchoro wa ahadi baada ya kuunganishwa.

οΈ Endelea kufanya kazi na kuongeza vipimo
Kushirikiana kwenye ombi la kuvuta mara nyingi husababisha kazi ya ziada. Kawaida haya ni matokeo ya ukaguzi wa msimbo au majadiliano, lakini katika kozi yetu tutaiga hii kwa kuongeza vitu vipya kwenye orodha yetu ya hatua za CI.
Ujumuishaji unaoendelea kwa kawaida huhusisha ufunikaji wa majaribio. Mahitaji ya chanjo ya jaribio hutofautiana na kwa kawaida hupatikana katika hati inayoitwa kitu kama "miongozo ya michango". Tutaiweka rahisi na kuongeza jaribio kwa kila mstari katika orodha yetu ya ukaguzi.
Wakati wa kutekeleza kazi, jaribu kufanya majaribio kwanza. Ikiwa umewekwa kwa usahihi pre-commit ndoano mapema, mtihani mpya ulioongezwa utaendeshwa, utashindwa, na hakuna kitakachofanywa. Kumbuka kuwa hivi ndivyo tunavyojua kwamba majaribio yetu yanajaribu kitu. Inafurahisha, ikiwa tulianza na nambari kabla ya majaribio, kupitisha majaribio kunaweza kumaanisha kuwa nambari ilifanya kazi kama inavyotarajiwa, au kwamba majaribio hayakuwa yakijaribu chochote. Zaidi ya hayo, ikiwa hatungeandika majaribio hayo hapo awali, tungeweza kuwasahau kabisa, kwa kuwa hakuna kitu ambacho kingetukumbusha.
Maendeleo Yanayoendeshwa na Mtihani (TDD)
TDD inapendekeza uandike majaribio kabla ya msimbo. Mtiririko wa kawaida wa kazi kwa kutumia TDD inaonekana kama hii.
- Ongeza mtihani.
- Fanya majaribio yote na uhakikishe kuwa jaribio jipya halifaulu.
- Andika msimbo.
- Fanya vipimo, hakikisha vipimo vyote vinapita.
- Rekebisha msimbo wako.
- Rudia.
Kwa sababu matokeo ya majaribio ambayo hayakufaulu kawaida huonyeshwa kwa rangi nyekundu, na yale yaliyofaulu kawaida huonyeshwa kwa kijani, mzunguko huo pia hujulikana kama kiashiria-kijani-nyekundu.
οΈ Kazi
Kwanza, jaribu kufanya majaribio na kuwaacha washindwe, kisha ongeza na utoe maandishi ya orodha ya hatua ya CI yenyewe. Utaona kwamba vipimo vinapita ("kijani").
Kisha uchapishe nambari mpya kwenye hazina ya mbali na uangalie majaribio yanayoendeshwa kwenye kiolesura cha GitHub chini ya majadiliano ya ombi la kuvuta na sasisho la hali ya PR.
- Badilisha hadi tawi
feature. Ongeza majaribio haya kwa
ci.test.jsbaada ya simu ya mwishoit (...);.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); });- Jaribu kufanya majaribio. Kama
pre-commitndoano imewekwa, jaribio la kujitolea litashindwa. - Kisha ongeza maandishi haya kwa
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. - Fanya na ufanye mabadiliko ndani ya nchi.
- Chapisha mabadiliko kwenye tawi
feature.
Unapaswa sasa kuwa na kitu kama hiki

ΠΠΎΠΌΠ°Π½Π΄Ρ
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½Π° Π²Π΅ΡΠΊΡ 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 pushUnganisha migogoro
Nenda kwa Badilisha Ombi Mapitio ya hatua.
Ingawa hatukufanya chochote kibaya na majaribio ya nambari yetu yamepita, bado hatuwezi kuunganisha tawi feature ΠΈ master. Ni kwa sababu thread nyingine bugfix iliunganishwa na master tulipokuwa tukifanyia kazi hii PR.
Hii inaunda hali ambapo tawi la mbali master ina toleo jipya zaidi kuliko lile tuliloweka msingi wa tawi feature. Kwa sababu hii hatuwezi tu kurudisha nyuma HEAD master hadi mwisho wa thread feature. Katika hali hii, tunahitaji ama kuunganisha au kuomba ahadi feature weka upya master. GitHub inaweza kweli kuunganisha kiotomatiki ikiwa hakuna migogoro. Ole, katika hali yetu, matawi yote mawili yana mabadiliko ya kushindana kwenye faili ci.md. Hali hii inajulikana kama mzozo wa kuunganisha, na tunahitaji kuitatua sisi wenyewe.
Unganisha au uweke upya
Kuunganisha
- Huunda ahadi ya ziada ya kuunganisha na kuhifadhi historia ya kazi.
- Huhifadhi ahadi za awali za matawi na mihuri yao ya awali ya nyakati na waandishi.
- Huhifadhi SHA ya ahadi na viungo kwao katika mijadala ya ombi la mabadiliko.
- Inahitaji utatuzi wa migogoro ya mara moja.
- Hufanya hadithi isiwe ya mstari.
- Hadithi inaweza kuwa ngumu kusoma kwa sababu ya idadi kubwa ya matawi (kukumbusha kebo ya IDE).
- Hufanya utatuzi wa kiotomatiki kuwa mgumu zaidi, k.m.
git bisecthaifai sana - itapata tu ahadi ya kuunganisha.
Rudisha tena
- Marudio hujitolea kutoka kwa tawi la sasa juu ya tawi la msingi moja baada ya jingine.
- Ahadi mpya zilizo na SHA mpya zinatolewa, na kusababisha ahadi katika GitHub kuendana na maombi ya asili ya kuvuta, lakini sio maoni yanayolingana.
- Ahadi zinaweza kuunganishwa na kurekebishwa katika mchakato, au hata kuunganishwa kuwa moja.
- Mizozo mingi inaweza kuhitaji kutatuliwa.
- Inakuruhusu kudumisha hadithi ya mstari.
- Hadithi inaweza kuwa rahisi kusoma mradi sio ndefu sana bila sababu nzuri.
- Utatuzi otomatiki na utatuzi ni rahisi kidogo: hufanya iwezekanavyo
git bisect, inaweza kufanya urejeshaji wa kiotomatiki kuwa wazi na kutabirika zaidi.
- Inahitaji kuchapisha tawi lililo na ahadi zilizohamishwa na bendera
--forceinapotumiwa na maombi ya kuvuta.
Kwa kawaida, timu hukubali kutumia mbinu sawa kila wakati zinapohitaji kuunganisha mabadiliko. Hii inaweza kuwa muunganisho "safi" au ahadi "safi" juu, au kitu katikati, kama vile kufanya ahadi ya juu kwa maingiliano(git rebase -i) ndani ya nchi kwa matawi ambayo hayajachapishwa kwenye hazina ya umma, lakini yanaunganishwa kwa matawi ya "umma".
Hapa tutatumia kuunganisha.
οΈ Kazi
- Hakikisha msimbo uko katika tawi la karibu
masterimesasishwa kutoka kwa hifadhi ya mbali. - Badilisha hadi tawi
feature. - Anzisha unganisho na tawi
master. Mzozo wa kuunganisha kwa sababu ya mabadiliko shindani yaci.md. - Tatua mzozo ili orodha yetu ya hatua za CI na dokezo kuuhusu zibaki kwenye maandishi.
- Chapisha ahadi ya kuunganisha kwa tawi la mbali
feature. - Angalia hali ya ombi la kuvuta kwenye GitHub UI na usubiri hadi muunganisho utatuliwe.
ΠΠΎΠΌΠ°Π½Π΄Ρ
# Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π²Π΅ΡΠΊΠ΅ `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, Π΄ΠΎΠΆΠ΄ΠΈΡΠ΅ΡΡ ΠΏΠΎΠΊΠ° ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ.Kazi nzuri!
Umemaliza na orodha na sasa unahitaji kuidhinisha ombi la kuvuta ndani master.
οΈ Kazi: Idhinisha ombi la kuvuta "Mapitio ya hatua"
- Fungua ombi la kuvuta.
- Bonyeza "Unganisha ombi la kuvuta".
- Bonyeza "Thibitisha kuunganisha".
- Bonyeza "Futa tawi" kwani hatuitaji tena.
Hili ni hazina yako kwa sasa

Hitilafu ya bidhaa
Inasemekana kwamba βkupima kunaweza kutumiwa kuonyesha kuwepo kwa makosa, lakini kamwe kutoonyesha kutokuwepo kwao.β Ingawa tulikuwa na majaribio na hawakutuonyesha makosa, mdudu wa hila aliingia katika uzalishaji.
Katika hali kama hii, tunahitaji kutunza:
- ni nini kinachotumika katika uzalishaji;
- kanuni katika thread
masterna hitilafu, ambayo watengenezaji wanaweza kuanza kazi mpya.
Je, nirudishe nyuma au nirekebishe katika toleo linalofuata?
Kurudisha nyuma ni mchakato wa kupeleka toleo zuri la awali linalojulikana kwa uzalishaji na kurejesha ahadi zilizo na hitilafu. "Kurekebisha mbele" ni nyongeza ya kurekebisha master na kupeleka toleo jipya haraka iwezekanavyo. Kwa sababu API na miundo ya hifadhidata hubadilika jinsi msimbo unavyotumwa kwa uzalishaji, uwasilishaji unaoendelea na ufunikaji mzuri wa majaribio, kurejesha nyuma kwa kawaida ni ngumu zaidi na hatari kuliko kuirekebisha katika toleo linalofuata.
Kwa kuwa kurudi nyuma hakubeba hatari yoyote kwa upande wetu, tutaenda kwa njia hii, kwa sababu inaturuhusu
- kurekebisha kosa kwenye bidhaa haraka iwezekanavyo;
- weka kanuni ndani
mastermara moja inafaa kwa kuanza kazi mpya.
οΈ Kazi
- Badilisha hadi tawi
masterkienyeji. - Sasisha hazina ya ndani kutoka kwa hazina ya mbali.
- Rejesha ahadi ya kuunganisha PR Mapitio ya hatua Π²
master. - Chapisha mabadiliko kwenye hazina ya mbali.
Hii ni historia ya hazina iliyo na ahadi ya kuunganisha iliyorejeshwa

ΠΠΎΠΌΠ°Π½Π΄Ρ
# ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ Π½Π° Π²Π΅ΡΠΊΡ master.
git checkout master
# ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈΠ· ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
git pull
# ΠΡΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ PR Steps review Π² master.
# ΠΡ ΠΎΡΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π²Π΅ΡΠΊΡ ΠΈΡΡΠΎΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π·Π°Ρ
ΠΎΡΠΈΠΌ ΠΎΡΡΠ°Π²ΠΈΡΡ
git show HEAD
# ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π² Π²Π΅ΡΠΊΠ΅ master Π΄ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΡ, Π±ΡΠ» ΠΎΡΠΎΠ±ΡΠ°ΠΆΡΠ½ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΌ
git revert HEAD -m 1
# ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΠΌΠ΅Π½ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²
# ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ
git pushοΈ Jipime
Hakikisha kwamba ci.md haina tena maandishi "mdudu mjanja" baada ya kurudisha ahadi ya kuunganisha.
Rekebisha orodha ya hatua za CI na uirudishe kwa bwana
Tumerejesha kabisa ahadi ya kuunganisha ya tawi. feature. Habari njema ni kwamba sasa hatuna makosa master. Habari mbaya ni kwamba orodha yetu ya thamani ya hatua za ujumuishaji endelevu pia imetoweka. Kwa hivyo, kwa kweli, tunahitaji kutumia urekebishaji kwa ahadi kutoka feature na kuwarudisha kwa master pamoja na kurekebisha.
Tunaweza kushughulikia shida kwa njia tofauti:
- rudisha ahadi ambayo inatengua unganisho
featureΡmaster; - kuhama ahadi kutoka kwa zamani
feature.
Timu tofauti za maendeleo hutumia mbinu tofauti katika kesi hii, lakini tutahamisha ahadi muhimu kwa tawi tofauti na kuunda ombi tofauti la kuvuta kwa tawi hili jipya.
οΈ Kazi
- Unda thread inayoitwa
feature-fixna kubadili kwake. Hamisha ahadi zote kutoka kwa tawi la zamani
featurekwa thread mpya. Tatua migogoro ya kuunganisha iliyotokea wakati wa uhamishaji.
Ongeza jaribio la urejeshaji kwa
ci.test.js:it('does not contain the sneaky bug', () => { expect( /.*sneakys+bug.*/gi.test(fileContents)).toBe(false); });- Fanya majaribio ndani yako ili kuhakikisha kuwa hayashindwi.
- Ondoa maandishi "na mdudu mjanja" ndani
ci.md. - Ongeza mabadiliko ya jaribio na mabadiliko ya orodha ya hatua kwenye faharasa na uyafanye.
- Chapisha tawi kwenye hazina ya mbali.
Unapaswa kuishia na kitu kama hiki:

ΠΠΎΠΌΠ°Π½Π΄Ρ
# Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ 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
Unda ombi la kuvuta.
Unda ombi la kuvuta na kichwa Kurekebisha kipengele. Sakinisha feature-fix kama "tawi la kichwa" na master kama "tawi la msingi".
Tafadhali subiri wakati majaribio yanakamilika. Unaweza kuona hali ya majaribio chini ya majadiliano ya PR.
Hakikisha umesakinisha
masterkatika yake uma hazina Kama "tawi la msingi", sitajibu maombi ya mabadiliko kwenye hazina ya vifaa vya kozi.
Idhinisha ombi la kuvuta "Kurekebisha kipengele"
Asante kwa kusahihisha! Tafadhali idhinisha mabadiliko kwa master kutoka kwa ombi la kuvuta.
οΈ Kazi
- Bonyeza "Unganisha ombi la kuvuta".
- Bonyeza "Thibitisha kuunganisha".
- Bonyeza "Futa tawi" kwani hatuitaji tena.
Hii ndio unapaswa kuwa nayo kwa sasa.

Hongera!
Umekamilisha hatua zote ambazo kwa kawaida watu huchukua wakati wa ujumuishaji unaoendelea.
Ukigundua matatizo yoyote kwenye kozi au unajua jinsi ya kuiboresha, tafadhali fungua tatizo . Kozi hii pia ina kutumia GitHub Learning Lab kama jukwaa.
Chanzo: mapenzi.com

