Utangulizi: Git kutoka mwanzoni hadi kwa msanidi programu anayejiamini
Karibu. Kozi hii ni kuhusu jinsi ya kutoka kwa 'nimesikia kuhusu Git' hadi kufanya kazi kwa ujasiri katika timu halisi. Leo, Git sio chaguo, bali ni hitaji la lazima katika kila nafasi ya kazi ya msanidi programu. Inajaribiwa katika mahojiano ya kiufundi na kwa kwayo wanatathmini mtindo wako wa kitaalamu kabla ya mazungumzo ya kwanza na mwajiri. Tutapitia pamoja njia nzima kutoka git init ya kwanza hadi pull request kamili katika hazina halisi. Tuanze.
Umewahi kuita faili 'project_under_score_final_version_two'? Au kuogopa kufuta mstari wa msimbo kwa sababu 'labda utahitajika baadaye'? Bila udhibiti wa matoleo, unafanya kazi kwa hofu ya mara kwa mara ya kupoteza toleo muhimu au kukumbuka kwa nini miezi mitatu iliyopita ulifanya hivyo. Kwa Git, unarekodi kila hatua, unarudi wakati wowote uliopita, na unafanya kazi na timu bila fujo. Hii sio urahisi — ni kiwango cha taaluma.
Ikiwa tayari unaandika msimbo — haijalishi kwa lugha gani — lakini unaposikia neno 'mgogoro wa kuunganisha' unahisi hofu kidogo. Ikiwa umewahi kufanya git commit, lakini bado huna uhakika kuhusu kile kinachotokea nyuma ya pazia. Ikiwa unajiandaa kwa kazi ya kwanza na unaelewa kuwa profaili tupu ya GitHub ni bendera nyekundu kwa mwajiri. Kozi hii inaanza kutoka sufuri, lakini haikawia hapo — inakuongoza mahali ambapo timu halisi zinakungoja.
Kufanya kazi kwa ujasiri na Git katika timu: kuunda commait zenye maana, kutatua migogoro bila hofu, na kufanya pull request kama wasanidi programu wenye uzoefu. Kuelewa workflows za Git maarufu na kujibu maswali kuhusu hizo katika mahojiano ya kiufundi kwa uaminifu na kwa undani. Na muhimu zaidi — mwishoni mwa kozi utakuwa na hazina halisi ambayo imepitia mzunguko kamili wa maendeleo: kutoka init hadi lebo ya toleo. Hii sio mradi wa kujifunza tu — ni kwingineko.
Katika sehemu tatu za kwanza, tutaweka msingi. Tuanze na jibu la kweli la swali 'kwa nini' — na nitakuonyesha ukuzaji bila Git jinsi inavyoonekana kutoka nje. Kisha tutasanidi Git kwa usahihi: hii sio utaratibu wa kuchosha, kwa sababu jina lako litakuwa katika kila commait milele. Na hatimaye tutaelezea eneo la kuandaa — dhana ambayo wengi hawaelewi kwa miaka, lakini inafanya historia yako kuwa hati, sio dampo.
Sehemu ya nne itakuonyesha jinsi ya kusoma historia ya mradi kama mtaalamu — na kwa nini 'historia chafu' humwonyesha mwanzilishi mara moja. Katika ya tano, tutaondoa hekaya za matawi: utaelewa kuwa tawi ni kiashiria tu, na utaacha kuyaogopa. Katika ya sita — mada inayotafutwa zaidi katika mahojiano: jinsi ya kufuta makosa. Nitaonyesha mazingira maalum ambapo reset hard inaharibu kazi ya timu, na kuelezea kwa nini revert ndio chaguo pekee sahihi.
Sehemu ya saba itakuhamisha kutoka kazi ya ndani hadi kazi ya timu: tutasanidi GitHub, tuelewe tofauti kati ya push, pull, na fetch — amri tatu ambazo huchanganyikiwa mara nyingi. Katika ya nane, tutapitia mzunguko kamili: fork, tawi la kipengele, pull request, code review, merge — ndivyo timu nyingi halisi zinavyofanya kazi. Na katika ya tisa, tutaelezea migogoro: hatutaiepuka, bali tutajifunza kusuluhisha kwa uwazi na haraka, kwa kuelewa kila alama katika faili.
Katika sehemu ya kumi, utapata jibu la wazi na la kina kwa swali 'ulitumia git-workflow gani' — tutajadili Tawi la Kipengele, Mtiririko wa Git na Maendeleo ya Msingi wa Shina pamoja na faida na hasara halisi za kila moja. Katika sehemu ya kumi na moja, tutaongeza rebase, stash, na cherry-pick — zana zinazomtenga msanidi programu mwenye ujasiri na yule anayejua msingi tu. Na mradi wa mwisho: mzunguko kamili wa maendeleo ya timu kutoka kujitolea kwa kwanza hadi lebo ya kutolewa — na hazina halisi katika portfolio yako.
Vidokezo kadhaa vitakavyofanya kujifunza kuwa na tija. Kwanza: fungua terminal moja kwa moja wakati wa kutazama — Git inajifunza kwa mikono, si kwa macho. Pili: simama na andika kila amri mwenyewe, usinakili. Tatu: ikiwa kitu kimeharibika — hiyo ni nzuri, ndivyo inavyotakiwa; hitilafu katika mazingira salama ya kujifunza ni mwalimu bora. Nne: baada ya kila sehemu, rudi kwenye hazina yako ya kujifunzia na tumia kila kitu kipya hapo. Mazoezi ya haraka ndio kujifunza halisi.