Git na GitHub: tofauti yake ni nini na zinahusianaje
Git ni programu ya udhibiti wa matoleo inayofanya kazi kwenye kompyuta yako na kuhifadhi historia ya mradi. GitHub ni huduma ya wingu inayohifadhi hifadhi za Git, pamoja na zana za kazi ya pamoja: pull request, ukaguzi wa msimbo, kazi na CI. Git unaweza kuitumia bila GitHub, lakini GitHub bila Git haiwezekani.
Git na GitHub mara nyingi huchanganywa, ingawa ni vitu vya ngazi tofauti. Git ni programu ya udhibiti wa matoleo unayoisakinisha kwenye kompyuta: inakumbuka kila hali iliyohifadhiwa ya mradi na inakuwezesha kurudi kwake. GitHub ni huduma ya wavuti inayohifadhi nakala za hifadhi za Git na ina zana zilizojengwa kwa kazi ya pamoja. Njia rahisi ya kukumbuka: Git ni injini, na GitHub ni karakana yenye huduma, ambapo injini hiyo inaweza kuwekwa.
Git ni nini
Git ni mfumo wa udhibiti wa matoleo uliosambazwa. Ulitengenezwa na Linus Torvalds mwaka 2005 kwa ajili ya kukuza kernel ya Linux, na tangu hapo umekuwa kiwango cha sekta. Git inafanya kazi kikamilifu kwenye kompyuta yako: historia ya mabadiliko imehifadhiwa kwenye folda iliyofichwa .git ndani ya mradi, na kwa shughuli nyingi hauhitaji intaneti.
Neno «lililosambazwa» ni muhimu hapa. Kila mshiriki wa mradi ana nakala kamili ya hifadhi kwenye kompyuta yake, pamoja na historia yote, si faili za mwisho tu. Seva ikipotea, mradi unaweza kurejeshwa kutoka kwenye mashine yoyote ya kazi.
Git yenyewe inaweza:
- kurekodi mabadiliko kama commits — picha za mradi zenye mwandishi, tarehe na maelezo;
- kuonyesha nani, lini na kwa nini alibadilisha mstari fulani (
git log,git blame); - kuendesha mistari sambamba ya maendeleo kwenye matawi na kuyaunganisha;
- kughairi makosa bila kupoteza kazi nyingine;
- kubadilishana historia na hifadhi nyingine kwa
git push,git pullnagit fetch.
Git ni programu ya mstari wa amri. Programu za picha na paneli zilizojengwa ndani ya wahariri (VS Code, IntelliJ IDEA) ni maganda tu juu ya amri zile zile.
GitHub ni nini
GitHub ni jukwaa la wingu la kuhifadhi hifadhi za Git, kwa sasa linamilikiwa na Microsoft. Unaunda hifadhi huko, unatuma msimbo wako wa ndani kwa git push, na unapatikana kwa wenzako, mwajiri, au kwa mtandao mzima ikiwa hifadhi ni ya umma.
Lakini thamani ya GitHub si uhifadhi tu. Kuzunguka hifadhi, GitHub inaongeza vitu ambavyo Git yenyewe haina:
- Pull request — ombi la kuunganisha tawi pamoja na majadiliano na ukaguzi wa msimbo mstari kwa mstari;
- Issues — kazi na ripoti za hitilafu zinazohusishwa na mradi;
- GitHub Actions — CI/CD: uendeshaji wa kiotomatiki wa majaribio, ujenzi na utoaji kila push;
- udhibiti wa ufikiaji — nani anaweza kusoma, kuandika, na kuunganisha kwenye matawi yaliyolindwa;
- wasifu wa msanidi — grafu ya shughuli na miradi ya umma ambayo waajiri wanaiangalia;
- GitHub Pages — uendeshaji wa bure wa tovuti tuli moja kwa moja kutoka kwenye hifadhi.
Maswali kama «git com» au «git hub» kwa kawaida yanamaanisha huduma hii — anwani yake ni github.com. Tovuti rasmi ya Git yenyewe ni git-scm.com, na kutoka hapo unapakua kisakinishi.
Git na GitHub: ulinganisho kwenye jedwali
| Kigezo | Git | GitHub |
|---|---|---|
| Ni nini | Programu ya udhibiti wa matoleo | Huduma ya wavuti ya kuhifadhi hifadhi |
| Inafanya kazi wapi | Kwenye kompyuta yako | Wingu, kwa kivinjari na API |
| Inahitaji intaneti | Hapana, isipokuwa kwa kubadilishana na hifadhi za mbali | Ndiyo |
| Leseni | Chanzo huria (GPLv2), bure | Huduma ya umiliki, ina mpango wa bure na wa kulipia |
| Kiolesura | Mstari wa amri, wateja wa picha | Tovuti, programu ya GitHub Desktop, CLI gh |
| Kazi kuu | Historia ya matoleo, matawi, muunganisho | Kazi ya pamoja, ukaguzi, CI, kuchapisha msimbo |
| Je, unaweza bila nyingine | Ndiyo, kikamilifu | Hapana, GitHub imejengwa juu ya Git |
Git na GitHub zinafanya kazi pamoja vipi
Muunganisho kati yao ni remote, hifadhi ya mbali. Hifadhi ya ndani inahifadhi anwani ya hifadhi ya GitHub kwa jina fupi, kwa chaguo-msingi origin. Kisha kubadilishana kunafanyika kwa amri tatu:
git push— kutuma commits zako mpya kwenye seva;git fetch— kupakua commits za wengine bila kugusa faili zako;git pull— kupakua na mara moja kuunganisha mabadiliko kwenye tawi la sasa (kimsingifetch+mergeaurebase).
Muhimu: GitHub haioni msimbo wako mpaka uutume. Commit ipo kwenye kompyuta yako tu hadi git push ya kwanza. Hapa ndipo kosa la kawaida la wanaoanza linatoka — «nimefanya commit, lakini kwenye GitHub hakuna kitu».
Njia ya kawaida: kutoka mradi wa ndani hadi GitHub
# 1. Tengeneza hifadhi kwenye kompyuta
cd my-project
git init
git add .
git commit -m "Commit ya kwanza"
# 2. Tengeneza hifadhi tupu kwenye github.com (bila README),
# nakili anwani yake na uiunganishe kama remote
git remote add origin git@github.com:username/my-project.git
# 3. Badilisha jina la tawi kuwa main na tuma
git branch -M main
git push -u origin main
Bendera -u (fomu kamili --set-upstream) inaunganisha tawi la ndani main na lile la mbali. Baada ya hapo inatosha kuandika git push na git pull bila hoja.
Njia ya kinyume: kuanza na hifadhi iliyopo GitHub
Ikiwa mradi tayari uko GitHub, hauundwi upya, bali unanakiliwa:
git clone https://github.com/username/my-project.git
cd my-project
Amri itapakua historia yote na kusanidi remote origin moja kwa moja.
Uthibitishaji: SSH au HTTPS
Tangu 2021 GitHub haikubali nenosiri la akaunti wakati wa kufanya kazi na Git kupitia HTTPS. Kuna chaguo mbili zinazofanya kazi.
HTTPS + Personal Access Token. Token inatengenezwa kwenye mipangilio ya akaunti (Settings → Developer settings) na inaingizwa badala ya nenosiri. Ili usiiingize kila mara, Git inatumia meneja wa taarifa za kuingia — kwenye Windows huwekwa pamoja na Git for Windows.
Funguo za SSH. Chaguo ambalo waajiri wanatarajia uweze kulisanidi wewe mwenyewe:
# Tengeneza ufunguo
ssh-keygen -t ed25519 -C "you@example.com"
# Onyesha sehemu ya umma na uiongeze kwenye GitHub:
# Settings → SSH and GPG keys → New SSH key
cat ~/.ssh/id_ed25519.pub
# Hakiki muunganisho
ssh -T git@github.com
Ikifanikiwa, GitHub itajibu kwa salamu yenye jina lako la mtumiaji na maelezo kwamba ufikiaji wa shell hautolewi — hilo ni la kawaida. Anwani ya hifadhi kisha inatumika katika muundo git@github.com:user/repo.git, si https://.
Ikiwa hifadhi tayari imeunganishwa kupitia HTTPS, unaweza kuibadilisha kwenda SSH kwa amri moja:
git remote set-url origin git@github.com:username/my-project.git
GitHub, GitLab na nyingine: tofauti ni nini
GitHub si huduma pekee ya kuhifadhi Git. Zote zinafanya kazi na Git ile ile, kwa hiyo hifadhi inaweza kuhamishwa kutoka moja hadi nyingine bila kupoteza historia. Zinatofautiana kwa seti ya zana zinazozunguka msimbo.
| Huduma | Sifa | Lini huchaguliwa |
|---|---|---|
| GitHub | Jumuiya kubwa zaidi ya chanzo huria, GitHub Actions, Copilot | Portfolio, miradi ya umma, startups nyingi |
| GitLab | CI/CD iliyojengwa ndani tangu mwanzo, inaweza kusakinishwa kwenye seva yako (self-hosted) | Makampuni yanayohitaji msimbo ndani ya miundombinu yao |
| Bitbucket | Muunganisho na Jira na bidhaa za Atlassian | Timu zinazoishi kwenye mfumo wa Atlassian |
| Gitea, Forgejo | Suluhisho jepesi za chanzo huria zinazojiendesha (self-hosted) | Timu ndogo, seva za nyumbani |
Kwenye GitLab ombi la kuunganisha linaitwa merge request, kwenye GitHub — pull request, lakini kiini ni kimoja: kupendekeza mabadiliko kutoka tawi na kuyajadili kabla ya kuunganisha. Istilahi ni tofauti, amri za Git ni zile zile.
Kwenye hifadhi moja ya ndani unaweza kuwa na remote kadhaa kwa wakati mmoja, kwa mfano kuakisi mradi kwenye GitHub na GitLab:
git remote add gitlab git@gitlab.com:username/my-project.git
git push gitlab main
git remote -v
Je, GitHub inahitajika ikiwa unafanya kazi peke yako
Kiufundi, hapana: Git inafanya kazi vizuri kwenye kompyuta yako tu. Lakini hata kwa mradi wa mtu mmoja, hifadhi ya mbali ina faida tatu kubwa.
- Nakala ya akiba. Laptop ikiharibika, msimbo na historia yote vipo salama kwenye seva.
- Kazi kutoka vifaa kadhaa. Nyumbani na ofisini mnasawazisha kwa
pushnapull. - Portfolio. Wakati wa kuchujwa kwa nafasi za junior, wasifu wa GitHub mara nyingi unaangaliwa kabla ya CV: kuna miradi hai, maelezo ya commits yenye maana, README.
Pa kuanzia kwa mwanzoni
Si lazima kujifunza Git na GitHub kwa wakati mmoja — mpangilio ni muhimu. Kwanza jifunze mzunguko wa ndani: git init, git status, git add, git commit, git log, matawi na muunganisho. Ukishaweza bila msaada, jisajili GitHub, sanidi SSH na ujifunze push, pull, fetch. Hatua ya mwisho ni mchakato wa timu: fork, tawi kwa kila kazi, pull request, ukaguzi.
Mwajiri anaangalia nini kwenye GitHub yako
Mraba wa kijani wa shughuli si jambo kuu. Mkaguzi mzoefu anatathmini mambo mengine kwa dakika chache:
- ujumbe wa commits unaoeleweka badala ya «fix», «123», «marekebisho»;
- commits ndogo zenye mantiki, si commit moja kubwa ya «nimetupa mradi»;
- README yenye maelezo ya jinsi ya kuendesha mradi;
- faili la
.gitignore: hakunanode_modules,.envyenye nywila, wala faili za IDE kwenye hifadhi; - matawi na pull request hata kwenye miradi ya kujifunzia — hii inaonyesha kwamba unajua mchakato wa timu.
Makosa ya kawaida ya wanaoanza
«fatal: not a git repository»
Unaendesha amri ya Git nje ya hifadhi. Hamia kwenye folda ya mradi au tekeleza git init. Usajili wa GitHub hauhusiki hapa — ni kosa la ndani la Git.
«Permission denied (publickey)»
Ufunguo wa SSH haujatengenezwa, haujaongezwa kwenye GitHub, au haujapakiwa kwenye ssh-agent. Hakiki kwa ssh -T git@github.com na orodha ya funguo kwenye mipangilio ya akaunti.
«rejected … (fetch first)» wakati wa push
Seva ina commits ambazo huna — kwa mfano uliunda hifadhi GitHub ukiwa na README. Kwanza vuta mabadiliko: git pull --rebase origin main, kisha rudia git push. Usitumie --force mpaka uelewe kazi ya nani utaiandika upya.
Siri kwenye hifadhi ya umma
Nywila au API key iliyoingia kwenye commit mara moja inabaki kwenye historia hata ikifutwa baadaye. Ufunguo kama huo unapaswa kutengenezwa upya mara moja, na .env iongezwe kwenye .gitignore mapema.
Muhtasari
Git ni zana ya udhibiti wa matoleo kwenye kompyuta yako; GitHub ni huduma ambapo hifadhi hizo zinaishi kwenye wingu na ambapo kazi ya pamoja inajengwa. GitLab, Bitbucket na nyingine ni mbadala wa GitHub, si wa Git: chini ya kofia zote zina commits, matawi na amri zile zile. Anza na Git ya ndani, kisha ongeza remote na usanidi SSH. Kuunganisha hifadhi ya ndani na GitHub, push, pull na fetch vimefafanuliwa kwa vitendo katika kozi ya Git.
Maswali ya mara kwa mara
Je, GitHub ni bure?
Ndiyo, mpango wa bure unaruhusu hifadhi nyingi za umma na za faragha. Mipango ya kulipia inaongeza vipengele kwa timu na dakika zaidi za GitHub Actions kwa miradi ya faragha.
Je, inawezekana kutumia GitHub bila mstari wa amri?
Ndiyo, kupitia GitHub Desktop au paneli za Git zilizojengwa ndani ya wahariri. Lakini zana hizo zinaendesha amri zile zile za Git, na kuzielewa bado ni muhimu, hasa wakati wa conflicts.
Je, nahitaji kusakinisha Git ikiwa tayari nina akaunti ya GitHub?
Ndiyo. Akaunti inatoa nafasi ya kuhifadhi, lakini kufanya kazi na msimbo kwenye kompyuta — commits, matawi, push — utafanya kwa Git iliyosakinishwa.
Nawezaje kuhamisha hifadhi kutoka GitHub kwenda GitLab?
Ongeza remote mpya na tuma matawi yote na tagi: git push gitlab --all na git push gitlab --tags. Historia inahamia yote, kwa sababu huduma zote mbili zinafanya kazi kwenye Git.
Hifadhi ya umma inatofautianaje na ya faragha?
Ya umma inaonekana kwa kila mtu kwenye mtandao, ya faragha — kwako na kwa washiriki waliokualikwa pekee. Kwa portfolio unahitaji hifadhi za umma.
Mada hii inafundishwa kwa kina pamoja na mazoezi katika kozi “Git kutoka mwanzo hadi msanidi programu anayejiweza”.
- Kwa nini Git inahitajika — na kwa nini bila yake huwezi kupata kazi
- GitHub na Hifadhi za Mbali: Msimbo Wako Hewani