Misingi

GitLab ni nini na jinsi ya kufanya kazi nayo kupitia Git: clone, push, merge request, CI/CD

Imesasishwa: · Skillaria.Top

GitLab ni jukwaa la wavuti la kuhifadhi repository za Git na kufanya kazi pamoja: msimbo, merge request, kazi na CI/CD iliyojengwa ndani, vyote mahali pamoja. Unaweza kulitumia kwenye gitlab.com au kwenye seva ya kampuni yenyewe, na msimbo unatumwa na kupokelewa kwa amri za kawaida za Git — clone, push na pull.

GitLab ni nini

GitLab ni jukwaa ambapo repository za Git zinahifadhiwa, na kuzunguka hilo kazi ya timu inajengwa: kuangalia msimbo, merge request (maombi ya kuunganisha), kazi, wiki, rejista ya kontena na CI/CD iliyojengwa ndani. Kwa ufupi, GitLab ni «GitHub yenye bomba lake la ujenzi na uwezekano wa kuiweka kwenye seva yako mwenyewe». Kampuni nyingi, hasa kubwa na za serikali, zinahifadhi msimbo wao kwenye GitLab iliyowekwa ndani ya mtandao wao wa ndani.

Mradi ulianza mwaka 2011 kama programu ya wazi ya kuhifadhi msimbo, kisha kampuni ya GitLab Inc. ikakua kuuzunguka. Jukwaa lipo katika matoleo mawili: Community Edition, toleo huria ambalo unaweza kulisakinisha bure kwenye seva yako, na Enterprise Edition yenye vipengele vya kulipia. Kwenye gitlab.com mipango inaitwa Free, Premium na Ultimate.

Ni muhimu kutochanganya dhana hizi. Git ni mfumo wa udhibiti wa matoleo, programu iliyo kwenye kompyuta yako. GitLab ni huduma inayohifadhi nakala ya mbali ya repository na kuongeza kiolesura na zana za timu. Bila Git huwezi kufanya kazi na GitLab, lakini Git inaishi vizuri bila GitLab.

Git na GitLab: tofauti yake

Watu wanaouliza «git na gitlab ni nini» mara nyingi wanakutana na maneno yote mawili katika tangazo la kazi au siku ya kwanza kazini. Tofauti ni ile ile kati ya hati na hifadhi ya wingu: Git inafuatilia mabadiliko ya faili, inahifadhi historia ya commit na matawi kwenye kompyuta yako. GitLab inapokea historia hiyo kupitia mtandao na kuionyesha kwenye kivinjari.

GitGitLab
Ni niniProgramu ya udhibiti wa matoleoJukwaa la wavuti la repository na kazi ya pamoja
Inafanya kazi wapiKwenye kompyuta ya msanidiKwenye gitlab.com au seva ya kampuni
Inahitaji intanetiHapana, isipokuwa push, pull, fetch, cloneNdiyo, ni huduma ya mtandao
Kazi kuuCommit, matawi, merge, historiaMerge request, ukaguzi, kazi, CI/CD, ruhusa za ufikiaji
Jinsi ya kuitumiaMstari wa amri, IDE, wateja wa GUIKivinjari pamoja na amri za kawaida za Git

Vitendo vyote kwenye msimbo — commit, branch, merge — bado unavifanya kwenye Git. GitLab inapokea matokeo kwa git push tu, na inakuwezesha kuyajadili na wenzako.

GitLab na GitHub: zinatofautianaje

Huduma zote mbili zinahifadhi repository za Git na kuunga mkono ukaguzi wa msimbo, kwa hiyo ujuzi wa msingi unahamishika moja kwa moja. Tofauti ziko kwenye msisitizo na jinsi ya kusakinisha.

KigezoGitLabGitHub
Ombi la kuunganishaMerge request (MR)Pull request (PR)
CI/CDGitLab CI/CD iliyojengwa ndani, faili la .gitlab-ci.ymlGitHub Actions, faili kwenye .github/workflows/
Usakinishaji kwenye seva yakoCommunity Edition ya bure kwenye seva yakoGitHub Enterprise Server, kwa malipo
Msimbo wa jukwaa lenyeweWazi (Community Edition)Umefungwa
Kupanga miradiVikundi na vikundi vidogo vilivyoingizwa ndani ya vingineMashirika
Inapendwa zaidi wapiMaendeleo ya kampuni, seva za ndaniOpen source, miradi ya umma, portfolio

Kwa vitendo, msanidi mara nyingi anatumia zote mbili: miradi binafsi na portfolio kwenye GitHub, na msimbo wa kazini kwenye GitLab ya kampuni. Amri za Git ni zile zile; kinachobadilika ni anwani ya repository ya mbali.

gitlab.com au seva yako mwenyewe (self-hosted)

gitlab.com ya wingu inafaa miradi binafsi na timu ndogo: unajisajili na kuunda repository mara moja. Masasisho, nakala rudufu na upatikanaji ni jukumu la GitLab. Vikwazo vya mpango wa bure (idadi ya washiriki, dakika za CI, ukubwa wa hifadhi) hubadilika mara kwa mara, kwa hiyo angalia masharti ya sasa kwenye ukurasa wa mipango.

Self-hosted GitLab kampuni inaiweka kwenye seva yake — kutoka kifurushi cha Linux, kwenye Docker au Kubernetes. Msimbo hautoki nje ya mtandao wa ndani, unaweza kuunganisha kuingia kwa kampuni kupitia LDAP na kusanidi wakimbiaji (runners) wako kwa ujenzi. Kwa upande mwingine, wasimamizi wanawajibika kwa masasisho na nakala rudufu. Kwa msanidi tofauti ni ndogo sana: anwani haitakuwa gitlab.com, bali kwa mfano gitlab.company.com.

Kusanidi Git kwa kufanya kazi na GitLab

Kabla ya commit ya kwanza, weka jina na barua pepe — yataingia kwenye historia, na GitLab itaunganisha commit na wasifu wako kwa barua pepe:

git config --global user.name "Ivan Petrov"
git config --global user.email "ivan@example.com"

Kwenye Windows ni rahisi kufanya kazi kwenye Git Bash: inasakinishwa pamoja na Git for Windows na ina ssh-keygen, kwa hiyo amri zote za makala hii zinafanya kazi humo bila mabadiliko. Kisha chagua njia ya kuingia — HTTPS kwa token au funguo ya SSH.

Kuingia kupitia HTTPS: personal access token

Nenosiri la akaunti si la kutumia kwa operesheni za Git kupitia HTTPS, na ukiwa umewasha uthibitishaji wa mambo mawili halitafanya kazi hata kidogo. Badala yake, unda personal access token kwenye mipangilio ya wasifu wa GitLab (sehemu ya Access tokens). Kwa kazi ya msimbo ruhusa za read_repository na write_repository zinatosha; weka muda wa matumizi na uhifadhi token mara moja — haitaonyeshwa tena.

Wakati wa push au clone ya kwanza, Git itauliza jina la mtumiaji na nenosiri: weka jina lako la mtumiaji la GitLab, na badala ya nenosiri weka token. Meneja wa taarifa za kuingia (ambaye yuko ndani ya Git for Windows) atakumbuka, kwa hiyo hutahitaji kuiingiza tena.

Kuingia kwa funguo ya SSH

SSH ni rahisi zaidi kwa kazi ya kila siku: unaongeza funguo mara moja, na hakuna kitu kingine cha kuingiza.

ssh-keygen -t ed25519 -C "ivan@example.com"
cat ~/.ssh/id_ed25519.pub

Yaliyomo kwenye faili la .pub (funguo ya umma) bandika kwenye mipangilio ya wasifu wa GitLab, sehemu ya SSH Keys. Kukagua muunganisho:

ssh -T git@gitlab.com
Welcome to GitLab, @ivan.petrov!

Git clone GitLab: jinsi ya kuclone repository

Kwenye ukurasa wa mradi kuna kitufe cha Code chenye anwani mbili — kwa SSH na kwa HTTPS. Nakili ile unayotaka kisha tekeleza git clone:

# kwa HTTPS
git clone https://gitlab.com/my-group/my-project.git

# kwa SSH
git clone git@gitlab.com:my-group/my-project.git

Kwenye GitLab njia ya mradi inaweza kujumuisha vikundi vidogo, kwa mfano gitlab.com/company/backend/api.git — ni kawaida, nakili anwani nzima.

Git clone GitLab kwa token

Kwenye skripti na seva ambako hakuna wa kuingiza nenosiri, token inawekwa moja kwa moja kwenye anwani. Jina la mtumiaji linaweza kuwa jina lako au oauth2 ya huduma:

git clone https://oauth2:TOKEN_YAKO@gitlab.com/my-group/my-project.git

Kumbuka: anwani kama hii itahifadhiwa kwenye .git/config na inaweza kuingia kwenye historia ya amri za shell. Kwa uendeshaji wa kiotomatiki ni bora kutumia deploy token au project access token yenye ruhusa chache na muda mfupi, na kwenye CI tumia kigezo kilichojengwa ndani CI_JOB_TOKEN.

Git push kwenda GitLab: kutuma msimbo

Ikiwa mradi tayari upo kwenye kompyuta yako, unda mradi tupu kwenye GitLab (bila README, ili kusiwe na commit ya ziada) kisha uunganishe remote:

git remote add origin git@gitlab.com:my-group/my-project.git
git branch -M main
git push -u origin main

Bendera -u inaunganisha tawi la kompyuta yako na tawi la mbali, baada ya hapo git push na git pull pekee zinatosha. Mzunguko wa kawaida wa kazi haubadiliki kwa huduma yoyote:

git switch -c feature/login
git add .
git commit -m "Ongeza fomu ya kuingia"
git push -u origin feature/login
git pull

Tagi zinatumwa tofauti: git push origin v1.2.0, au zote kwa pamoja kwa git push --tags. Kwenye GitLab tagi zinaonekana kwenye sehemu ya Tags, na mara nyingi zinaanzisha bomba la kutoa toleo (release).

Makosa ya kawaida ya git push kwenye GitLab

  • HTTP Basic: Access denied — jina la mtumiaji si sahihi au umeweka nenosiri badala ya token. Unda token yenye ruhusa ya write_repository na ufute ingizo la zamani kwenye meneja wa taarifa za kuingia.
  • Permission denied (publickey) — GitLab haijatambua funguo yako ya SSH. Angalia kwamba funguo ya umma imeongezwa kwenye wasifu, kisha tekeleza ssh -T git@gitlab.com.
  • You are not allowed to push code to protected branches — tawi (kwa kawaida main) limelindwa. Tuma mabadiliko kwenye tawi lako na ufungue merge request.
  • rejected ... (fetch first) — kuna commit kwenye seva ambazo huna. Tekeleza git pull --rebase kisha urudie push.
  • remote: Project not found — anwani ina kosa au huna ufikiaji wa mradi; uliza jukumu lako kwa mmiliki.

Merge request kwenye GitLab

Merge request ni sawa na pull request ya GitHub: ni ombi la kuunganisha tawi lako kwenye tawi kuu. Ndani ya MR wenzako wanaacha maoni kwenye mistari ya msimbo, ukaguzi wa CI unaendeshwa na uamuzi wa kuunganisha unafanywa. Baada ya push ya tawi jipya, GitLab inaonyesha kiungo cha kuunda MR kwenye terminal, na kwenye kiolesura cha wavuti pendekezo la kuiunda linaonekana.

MR pia inaweza kuundwa moja kwa moja kutoka mstari wa amri kwa kutumia push options:

git push -o merge_request.create -o merge_request.target=main origin feature/login

Mchakato wa kawaida: tawi kwa kazi → commit → push → MR → ukaguzi na bomba la kijani → merge. Wakati wa kuunganisha GitLab inaweza kuunganisha commit zote kuwa moja (squash) na kufuta tawi la chanzo. Ikiwa MR ina migongano, njia rahisi ni kusasisha tawi kwenye kompyuta yako — git pull --rebase origin main au git merge main — kutatua migongano na kutuma tena.

Weka alama ya Draft kwenye kazi ambayo bado haijakamilika: MR kama hiyo haiwezi kuunganishwa kwa bahati mbaya, lakini wenzako tayari wanaona mabadiliko na wanaweza kuyajadili.

CI/CD kwenye GitLab: .gitlab-ci.yml

Sifa kuu ya GitLab ni CI/CD iliyojengwa ndani. Weka faili la .gitlab-ci.yml kwenye mzizi wa repository, na kila push GitLab itaanzisha bomba (pipeline) lenye hatua (stages) na kazi (jobs). Kazi zinaendeshwa na wakimbiaji (runners): kwenye gitlab.com kuna wa pamoja, na kwenye seva yako wanasakinishwa kando.

stages:
  - test
  - deploy

test:
  stage: test
  image: python:3.12
  script:
    - pip install -r requirements.txt
    - pytest

deploy:
  stage: deploy
  script:
    - ./deploy.sh
  rules:
    - if: $CI_COMMIT_TAG

Hapa majaribio yanaendeshwa kwa kila push, na kazi ya deploy inaendeshwa tu wakati tagi imetumwa: git tag v1.0.0 na git push origin v1.0.0. Matokeo ya bomba yanaonekana moja kwa moja ndani ya merge request, na unaweza kuzuia kuunganisha hadi ukaguzi upite.

Jinsi ya kufuta repository kwenye GitLab

Amri za Git haziwezi kufuta mradi kwenye seva — git push inabadilisha matawi na tagi tu. Mradi unafutwa kwenye kiolesura cha wavuti: mipangilio ya mradi, sehemu ya General, kizuizi cha Advanced, kitufe cha kufuta chenye uthibitisho wa jina. Unahitaji jukumu la Owner. Nakala ya kwenye kompyuta yako inabaki — ni folda tu yenye .git.

Ikiwa unataka kutenganisha repository ya kwenye kompyuta yako na GitLab bila kufuta chochote kwenye seva, git remote remove origin inatosha.

Wakati wa kuchagua GitLab

  • Msimbo hauwezi kutolewa kwenye wingu la nje — unahitaji seva yako.
  • Unahitaji CI/CD tayari bila huduma za watu wengine.
  • Shirika kubwa lenye timu nyingi za ngazi tofauti — vikundi vilivyoingizwa ndani ya vingine na majukumu yanayonyumbulika vitasaidia.
  • Unajiunga na kampuni inayotumia GitLab tayari: hapo hakuna chaguo, lakini ujuzi wa Git unahamishika kikamilifu.

Kwa portfolio na open source mara nyingi wanachagua GitHub: kuna jumuiya kubwa zaidi na miradi inaonekana zaidi. Hakuna kinachokuzuia kuweka mradi kwenye huduma zote mbili — repository inaweza kuwa na remote kadhaa.

Kwa ufupi

GitLab ni jukwaa la repository za Git lenye ukaguzi kupitia merge request, kazi na CI/CD iliyojengwa ndani, linalopatikana winguni na kwenye seva yako mwenyewe. Kufanya kazi nalo kunamaanisha amri zinazojulikana: sanidi kuingia kwa token au funguo ya SSH, kisha clone, commit, push na merge request. Repository za mbali na mtiririko wa kazi wa timu zimefafanuliwa kwa mifano halisi kwenye kozi ya Git.

Maswali ya mara kwa mara

GitLab ni bure?

Community Edition ya kusakinisha kwenye seva yako ni bure. Kwenye gitlab.com kuna mpango wa bure wa Free wenye vikwazo; vipengele vya ziada vinapatikana kwenye mipango ya kulipia ya Premium na Ultimate.

Naweza kuhamisha mradi kutoka GitHub kwenda GitLab?

Ndiyo: GitLab ina uingizaji wa miradi kutoka GitHub, na historia unaweza kuihamisha kwa mkono — git clone --mirror kutoka anwani ya zamani kisha git push --mirror kwenda ile mpya.

Je, ninahitaji kujifunza amri maalum za GitLab?

Hapana, msimbo unafanyiwa kazi kwa amri za kawaida za Git; GitLab inaongeza kiolesura cha wavuti, na kwa uendeshaji wa kiotomatiki kuna zana ya mstari wa amri ya glab na API.

GitLab Flow inatofautianaje na Git Flow?

GitLab Flow ni rahisi zaidi: kazi inafanyika kwenye matawi ya feature na merge request kwenda main, na kwa mazingira na matoleo unaweza kuongeza matawi tofauti inapohitajika, bila develop na hotfix za Git Flow.

Jifunze mada hii kwa video

Mada hii inafundishwa kwa kina pamoja na mazoezi katika kozi “Git kutoka mwanzo hadi msanidi programu anayejiweza”.

Nenda kwenye kozi