🐙 Git na GitHub CLI

Multilingual DevOps cheat sheet: Linux, Docker, Git, Kubernetes, Helm, Terraform, practical scenarios & templates.
Imechapishwa

31 Agosti 2025

Amri za msingi na za hali ya juu za Git kwa udhibiti wa toleo, matawi, repos za mbali, stash, tagi na GitHub CLI.

🔹 Amri za Msingi

Amri

Mfano

Maelezo

git add Ongeza faili kwenye eneo la staging
git add file.txt

Ongeza faili maalum kwa commit inayofuata

git add .

Ongeza mabadiliko yote kwenye saraka ya sasa na chini yake

git add -p

Chagua sehemu za faili kuongeza kwa njia ya mwingiliano (inasaidia kwa partial commits)

git clone Nakili repository kwenye saraka mpya
git clone -b branch_name URL

Nakili tawi maalum pekee (badala ya default)

git clone --depth 1 URL

Nakili commit ya hivi karibuni pekee, ikifanya nakala ndogo ili kuokoa muda na nafasi

git commit Hifadhi mabadiliko kwenye repository
git commit -m "Initial commit"

Fanya commit na ujumbe bila kufungua mhariri

git commit -a -m "Fix bugs"

Ongeza na commit faili zote zilizobadilishwa zilizofuatiliwa na ujumbe

git commit --amend

Sasisha commit ya mwisho (badilisha ujumbe au ongeza mabadiliko zaidi)

git commit --fixup abc1234

Unda commit ya fixup ili kuunganishwa kiotomatiki baadaye wakati wa interactive rebase

git config Pata na weka chaguo za repository au za kimataifa
git config --global user.name "Name"

Weka jina la Git la kimataifa

git config --global user.email "email@example.com"

Weka barua pepe ya Git ya kimataifa

git config --list

Orodhesha mipangilio yote ya Git (jina, barua pepe, mhariri, nk.)

git diff Onyesha mabadiliko kati ya commits, commit na working tree, nk.
git diff HEAD

Onyesha ulichobadilisha tangu commit ya mwisho (mabadiliko yasiyo staged)

git diff --staged

Onyesha yatakayojumuishwa kwenye commit inayofuata

git diff --word-diff HEAD~1

Onyesha mabadiliko kwa tofauti za kiwango cha maneno

git grep Tafuta ndani ya faili za repository
git grep "functionName"

Pata marejeo yote ya functionName kwenye faili zote za mradi

git grep -n "TODO"

Pata mistari yenye TODO na onyesha nambari za mistari (inasaidia kwa code notes)

git grep -i "login"

Tafuta neno login bila kujali herufi kubwa au ndogo (litapatana na Login, LOGIN, login, nk.)

git init Unda repository tupu ya Git au anza upya iliyopo
git init my-project

Anzisha repo mpya kwenye saraka my-project

git init --bare

Anzisha repository ya bare

git log Onyesha commit logs
git log --oneline

Onyesha historia ya commit kwa muundo wa mstari mmoja

git log --graph --all

Onyesha matawi yote kwenye grafu ya commits

git log -p --stat

Onyesha patch na stats za mabadiliko ya faili kwa commits

git reset Ondoa faili kutoka staging, ukihifadhi mabadiliko kwenye working directory
git reset HEAD file.txt

Ondoa faili kutoka staging (inahifadhi uhariri wako)

git reset --hard HEAD~1

Rudi commit moja nyuma na ufute mabadiliko yote (hatarishi!)

git reset --soft HEAD~1

Futa commit ya mwisho lakini hifadhi mabadiliko tayari kwa commit tena

git reset --mixed HEAD~1

Futa commit lakini hifadhi mabadiliko yasiyo staged kwenye working directory

git show Onyesha aina mbalimbali za vitu
git show <commit_hash>

Onyesha mabadiliko na ujumbe wa commit maalum

git show HEAD~1

Onyesha commit iliyopita kabla ya ya sasa

git show --stat

Onyesha muhtasari wa mabadiliko ya faili kwa commit ya hivi karibuni

git status Onyesha hali ya working tree
git status -s

Onyesha hali kwa muundo mfupi

git status -b

Onyesha tawi la sasa na hali ya faili

🌿 Matawi na Kuunganisha

Amri

Mfano

Maelezo

git branch Unda, orodhesha au futa matawi
git branch new-feature

Unda tawi jipya linaloitwa new-feature

git branch -d old-feature

Futa tawi la ndani linaloitwa old-feature

git checkout Badilisha matawi au rejesha faili kutoka commit nyingine
git checkout main

Badilisha hadi tawi main

git checkout -b new-branch

Unda na ubadilishe hadi tawi jipya linaloitwa new-branch

git switch Badilisha matawi (mbadala rahisi kwa checkout)
git switch main

Badilisha hadi tawi main

git switch -c feature-x

Unda na ubadilishe hadi tawi jipya linaloitwa feature-x

git switch new-feature

Badilisha hadi tawi lililopo linaloitwa new-feature

git merge Unganisha mabadiliko kutoka tawi jingine hadi lile la sasa
git merge new-feature

Unganisha tawi new-feature hadi tawi la sasa

git merge --no-ff new-feature

Daima unda merge commit (hata kama fast-forward inawezekana)

git merge --abort

Ghairi merge na rudisha mabadiliko ikiwa migongano itatokea

git rebase Hamisha au rudia commits juu ya commit mpya ya msingi
git rebase main

Rudia commits za tawi lako juu ya tawi main

git rebase -i HEAD~3

Hariri commits 3 za mwisho kwa njia ya interactive

git rebase --abort

Simamisha na futa rebase inayoendelea

git rebase -i --autosquash HEAD~5

Unganisha commits zilizowekwa alama kama fixup au squash wakati wa interactive rebase

git cherry-pick Tumia commits maalum kutoka tawi jingine
git cherry-pick <hash>

Tumia commit maalum (kwa hash) kwenye tawi la sasa

git cherry-pick --continue

Endelea cherry-pick baada ya kutatua migongano

git cherry-pick A^..B

Tumia safu ya commits kutoka A (haijajumuishwa) hadi B (imejumuishwa)

📡 Repositories za Mbali

Amri

Mfano

Maelezo

git remote Simamia viungo kwa repositories za mbali (mfano GitHub)
git remote -v

Onyesha majina ya remote na URL zao

git remote add origin URL

Ongeza repository ya mbali iitwayo origin

git pull Pakua na unganisha mabadiliko kiotomatiki kutoka tawi la mbali
git pull origin main

Pakua na unganisha mabadiliko kutoka tawi main la mbali hadi tawi lako la sasa

git pull --rebase origin main

Pakua na rebase tawi lako juu ya tawi la mbali badala ya kuunganisha

git push Pakia mabadiliko yako ya ndani hadi repository ya mbali
git push origin main

Push tawi lako main la ndani hadi remote origin

git fetch Pakua mabadiliko kutoka mbali bila kuunganisha
git fetch origin

Pakua masasisho yote kutoka remote origin, lakini usiyatumie bado

git fetch origin main

Pakua tawi main pekee kutoka mbali

git fetch --all

Pakua masasisho kutoka kwa remotes zote

git fetch --prune

Safisha matawi yaliyofutwa — ondoa marejeo ya ndani kwa matawi yaliyofutwa mbali

git fetch --dry-run

Onyesha kitakachopakuliwa bila kupakua chochote

git fetch origin +main

Sasisha kwa nguvu tawi lako la kufuatilia (origin/main), ukifuta migongano

📦 Stash na Usafishaji

Amri

Mfano

Maelezo

git stash Hifadhi kwa muda mabadiliko yasiyocommitiwa (kazi inayoendelea)
git stash

Hifadhi faili zilizobadilishwa na staged, kisha rudisha working directory hadi commit ya mwisho

git stash apply

Tumia tena stash ya hivi karibuni (stash inabaki imehifadhiwa)

git stash pop

Tumia tena na uondoe stash ya hivi karibuni

git stash list

Onyesha orodha ya stash zote

git stash branch feature-fix

Unda tawi jipya na tumia stash ya hivi karibuni ndani yake

git clean Futa faili zisizofuatiliwa kabisa (sio sehemu ya Git)
git clean -f

Futa faili zisizofuatiliwa kwenye saraka ya sasa

git clean -fd

Futa faili na folda zisizofuatiliwa

git clean -n

Onyesha itakayofutwa (dry run salama)

🏷️ Tagi

Amri

Mfano

Maelezo

git tag Unda, orodhesha au futa tagi ili kuweka alama sehemu maalum za historia (mfano matoleo)
git tag -a v1.0 -m "Version 1.0"

Unda tagi yenye maelezo iitwayo v1.0 na ujumbe (inahifadhiwa kama kitu kamili cha Git, inafaa kwa matoleo)

git tag -d v1.0

Futa tagi ya ndani iitwayo v1.0 (haiathiri remote)

git push Pakia commits, matawi na tagi kutoka ndani hadi repository ya mbali
git push origin --tags

Push tagi zote za ndani hadi remote (inasaidia baada ya kuweka matoleo mengi)

git push origin v1.0

Push tagi maalum (mf. v1.0) hadi repository ya mbali

git push origin :refs/tags/v1.0

Futa tagi ya mbali v1.0 (angalia sintaksia ya colon)

🛠️ Utatuzi wa Migongano

Amri

Mfano

Maelezo

git mergetool Fungua zana ya kuona kusaidia kutatua migongano ya merge
git mergetool --tool=meld

Tumia zana maalum ya merge (mfano Meld) kurekebisha migongano

git rerere Acha Git ikumbuke jinsi ulivyotatua migongano hapo awali
git config --global rerere.enabled true

Wezesha utumiaji wa kiotomatiki wa suluhisho za migongano zilizopita

git rerere status

Onyesha ni faili zipi zina suluhisho zilizohifadhiwa

git rerere diff

Onyesha mabadiliko ambayo Git imehifadhi kwa matumizi ya baadaye

⚙️ Amri za Kina

Amri

Mfano

Maelezo

git bisect Tumia binary search kupata commit iliyoleta hitilafu
git bisect start

Anza binary search kati ya commit nzuri na mbaya ili kupata bug

git bisect bad

Weka alama commit ya sasa kama “mbaya” (ina bug)

git bisect good <commit>

Weka alama commit inayojulikana kama “nzuri” ambapo bug haikuwepo

git blame Onyesha nani alibadilisha kila mstari wa faili, na revision na mwandishi
git blame file.txt

Onyesha mwandishi na commit info kwa kila mstari kwenye faili

git blame -L 10,20 file.txt

Onyesha blame info kwa mistari 10 hadi 20 pekee

git blame --show-email file.txt

Onyesha barua pepe za waandishi kando ya mabadiliko ya mistari

git reflog Tazama na simamia reference log (reflog) ya harakati za matawi na HEAD
git reflog show main@{1.week.ago}

Angalia pale ambapo tawi main lilikuwa limeelekezwa wiki moja iliyopita

git reflog expire --expire=30.days --dry-run

Onyesha ni reflog entries zipi zilizo zaidi ya siku 30 zinaweza kusafishwa (hakuna mabadiliko yaliyofanywa)

git reflog delete HEAD@{2}

Futa reflog entry maalum (tumia kwa uangalifu, inaweza kuathiri recovery)

git submodule Ongeza, anzisha, sasisha, au kagua submodules (repositories ndani ya repositories)
git submodule add URL path

Ongeza repository ya nje kama submodule kwenye njia maalum

git submodule update --init

Anzisha na pakua submodules zote zilizoorodheshwa kwenye repository

git submodule foreach git pull

Endesha git pull ndani ya kila submodule ili kuisasisha hadi commit ya hivi karibuni

git submodule sync --recursive

Linganishwa URLs za submodule baada ya mabadiliko kwenye faili .gitmodules

git submodule update --remote --merge

Sasisha submodules hadi commit ya hivi karibuni kutoka matawi yao ya mbali

git archive Unda archive (zip, tar, nk.) ya faili kutoka commit au tawi maalum
git archive --format=zip HEAD > archive.zip

Unda archive ya ZIP ya faili za mradi kwa HEAD

git archive -o release.tar.gz HEAD

Unda archive ya .tar.gz iliyoshinikizwa kutoka HEAD ya sasa

git archive --format=tar --prefix=project/ HEAD \| gzip > project.tar.gz

Unda archive ya .tar.gz iliyoshinikizwa ya mradi, ikiweka faili zote ndani ya folda iitwayo project/

git gc Safisha faili zisizohitajika na boresha repository kwa utendaji
git gc --aggressive

Fanya usafishaji na uboreshaji wa kina (unaweza kuwa mrefu lakini ni bora)

git gc --prune=now

Ondoa vitu visivyofikika mara moja (hatarishi ukikosa uhakika)

git shortlog Muhtasari wa haraka wa waandishi na commits zao
git shortlog -e

Onyesha orodha ya waandishi na barua pepe zao (mf. kuchambua nani alichangia na kiasi gani)

git shortlog -s -n

Onyesha commits ngapi kila mwandishi alifanya, zikiorodheshwa kwa idadi

git shortlog -sne

Sawa na hapo juu, lakini pia ni pamoja na majina na barua pepe — inasaidia kwa ufuatiliaji wa kina wa shughuli

git revert Unda commit mpya inayofuta mabadiliko kutoka commit ya awali bila kuandika upya historia
git revert HEAD

Futa commit ya mwisho kwa kuunda commit mpya inayopindua mabadiliko yake

git revert <commit_hash>

Futa commit maalum kwa hash, ukiongeza commit mpya inayopindua hiyo salama

🐙 GitHub CLI

gh hukuruhusu kusimamia GitHub kutoka terminal.

Amri

Mfano

Maelezo

gh auth login Thibitisha na mwenyeji wa GitHub kuruhusu amri za CLI kuingiliana na akaunti yako
gh auth login --with-token < mytoken.txt

Thibitisha ukitumia personal access token iliyohifadhiwa kwenye faili (mytoken.txt)

gh auth login --hostname enterprise.internal

Thibitisha kwa seva ya GitHub Enterprise (sio github.com)

gh repo clone Nakili repository ya GitHub kwenye mashine yako ya ndani
gh repo clone user/repo

Nakili repository repo inayomilikiwa na user kwenye folda inayoitwa repo

gh repo clone cli/cli -- --depth=1

Nakili repository lakini pakua commit ya hivi karibuni pekee kwa nakala ndogo na ya haraka

gh repo clone cli/cli workspace/cli

Nakili repository kwenye folda maalum workspace/cli

gh issue list Orodhesha masuala (issues) kwenye repository ya GitHub, ukiweza kuchuja kwa vigezo mbalimbali
gh issue list --assignee "@me"

Orodhesha masuala yaliyokabidhiwa kwako

gh issue list --state all

Orodhesha masuala bila kujali hali (wazi au yamefungwa)

gh issue list --search "error no:assignee sort:created-asc"

Orodhesha masuala yanayolingana na “error”, yasiyokabidhiwa, yaliyopangwa kwa tarehe ya kuundwa kupanda

gh pr create Unda pull request kwenye GitHub kupitia CLI
gh pr create --title "..."

Unda pull request yenye kichwa kilichotolewa

gh pr create --project "Roadmap"

Unganisha pull request na mradi wa GitHub uitwao “Roadmap”

gh pr create --base develop --head monalisa:feature

Unda PR kutoka tawi feature kwenye fork monalisa kwenda tawi develop

gh repo create Unda repository mpya ya GitHub kutoka CLI
gh repo create my-project

Unda repository mpya iitwayo my-project kwenye GitHub (maswali ya mwingiliano yatafuata)

gh repo create my-project --public --clone

Unda repository ya umma na uiweke nakala ndani

gh repo create my-project --private --source=. --remote=upstream

Unda repo ya mbali ya kibinafsi kutoka folda ya sasa na ongeza remote iitwayo upstream

💡 Aliasi za Git (Njia Fupi Muhimu)

Sanidi aliasi rahisi ili kuharakisha amri za kawaida za Git:

git config --global alias.br branch                                       # njia ya mkato kwa: git branch
git config --global alias.ci commit                                       # njia ya mkato kwa: git commit
git config --global alias.co checkout                                     # njia ya mkato kwa: git checkout
git config --global alias.graph "log --oneline --graph --all --decorate"  # grafu nzuri ya historia
git config --global alias.last "log -1 HEAD"                              # onyesha commit ya mwisho
git config --global alias.st status                                       # njia ya mkato kwa: git status

🚀 Amri za Kina za Git kwa Wataalamu

Amri

Mfano

Maelezo

git filter-repo Chombo chenye nguvu na kasi kwa kuandika upya historia ya Git ili kuondoa au kurekebisha faili, uandishi, au njia; kinachobadilisha git filter-branch kwa kasi na usalama bora
git filter-repo --path secret.txt --invert-paths

Andika upya historia ya repository ili kuondoa faili au saraka nyeti bila matatizo ya utendaji ya git filter-branch. Tumia kwa uangalifu

git filter-repo --replace-text replacements.txt

Badilisha kwa wingi mistari au mifumo kote kwenye historia (mfano, kusafisha credentials)

git filter-repo --subdirectory-filter src

Toa historia ya subdirectory ndani ya repository mpya, ukihifadhi metadata ya commit

git worktree Simamia saraka nyingi za kazi zilizounganishwa kwenye repository moja, kuruhusu kufanya kazi sambamba kwenye matawi tofauti bila cloning
git worktree add ../feature feature-branch

Unda worktree ya ziada iliyoambatanishwa na repository ile ile, ikiruhusu checkouts za matawi sambamba bila clones

git worktree list

Orodhesha worktree zote zinazotumika, njia zao na matawi husika

git worktree remove ../feature

Ondoa worktree iliyounganishwa ikiwa haihitajiki tena, kusafisha saraka za kazi kwa usalama

git replace Unda marejeleo ya muda yanayobadilisha vitu vilivyopo, ukiruhusu urekebishaji wa historia wa ndani bila kuharibu na kwa madhumuni ya majaribio
git replace <old_commit> <new_commit>

Badilisha commit moja kwa nyingine kwa muda kwenye repo yako ya ndani, inasaidia kwa majaribio bila kuandika upya historia

git replace --list

Onyesha replacement refs zote zinazotumika

git replace -d <replace_ref>

Futa replacement ref maalum kurejesha tabia ya awali

git stash Hifadhi kwa muda mabadiliko yasiyocommitiwa kwenye stack, ukiruhusu kubadilisha muktadha bila kufanya commit ya kazi isiyokamilika
git stash push -p

Chagua hunks za mabadiliko kwa mwingiliano ili kuweka stash, ukitoa udhibiti wa kina

git stash push -m "WIP selective stash"

Unda stash yenye ujumbe maalum kwa utambulisho rahisi

git stash apply stash@{2}

Tumia stash maalum kutoka orodha ya stash bila kuifuta

git rebase Rudia commits juu ya base mpya, kurahisisha historia safi, linear na kuhariri historia kwa interactive
git rebase --interactive --autosquash

Anza interactive rebase inayopanga upya na kuunganisha commits zilizowekwa alama kama fixup au squash

git rebase -i --autosquash HEAD~10

Panga upya na unganisha commits zilizowekwa fixup/squash, kusafisha historia kabla ya push

git commit --fixup <commit>

Unda commit ya fixup itakayounganishwa kiotomatiki wakati wa interactive rebase

git commit --squash <commit>

Unda commit ya squash kuunganishwa na commit maalum kwenye rebase

git bisect Chombo cha binary search kutambua commit iliyosababisha bug kwa kujaribu commits kwa mpangilio na kupunguza mabadiliko yenye kosa
git bisect run

Otomatisha mchakato wa bisect kwa kuendesha script ya majaribio kwenye kila commit ili kupata bug haraka

git bisect start; git bisect bad; git bisect good v1.0; git bisect run ./test.sh

Otomatisha bisection kwa script, ikiharakisha sana utambuzi wa bug

git bisect visualize

Fungua chombo cha kuona kuonyesha mchakato wa bisection

git bisect reset

Toka hali ya bisect na urudi kwenye HEAD ya awali

git commit Hifadhi mabadiliko kwenye repository na chaguo za kina kwa amend, sign, fixup, na urekebishaji wa ujumbe kudumisha historia safi ya mradi
git commit --gpg-sign

Unda commit iliyosainiwa kwa GPG yako kuhakikisha uthibitisho wa cryptographic wa uhalisi

git commit -S -m "Signed commit"

Saini commits zako kwa GPG yako, kuhakikisha uadilifu na uthibitisho wa uandishi

git config --global user.signingkey <key_id>

Sanidi ufunguo wa GPG unaotumika kusaini commits kimataifa

git log --show-signature

Thibitisha na onyesha taarifa ya saini za GPG kwa commits

git reflog Hifadhi logi ya masasisho kwa HEAD na matawi, muhimu kwa kurejesha commits zilizopotea na kuelewa historia ya ndani
git reset --hard HEAD@{3}

Weka upya tawi la sasa kwa hali ya awali kutoka reflog ili kurejesha au kufuta mabadiliko

git reflog expire --expire=now --all

Futa mara moja entries zote za reflog, kusafisha historia ya reflog (tumia kwa uangalifu)

🧰 Vidokezo vya Kitaalamu vya Mtiririko wa Kazi na Otomatisi

Mada

Amri / Mfano

Maelezo & Vidokezo vya Pro

Usafishaji Mkali wa Repo

git gc --aggressive --prune=now

Hufanya garbage collection ya kina na hukata vitu visivyofikika mara moja kwa uboreshaji wa repo. Tumia wakati wa matengenezo

Worktrees Sambamba za Matawi

git worktree add ../feature-branch feature

Hifadhi worktrees nyingi kwa maendeleo ya vipengele sambamba, huepuka mzigo wa clone

Historia Safi, Linear

git rebase -i --autosquash

Kabla ya kupush, fanya rebase kwa interactive na autosquash kudumisha historia safi na rahisi kusomeka

Commits Salama

git commit -S

Saini commits na GPG kuongeza uaminifu kwenye repos zilizoshirikiwa, ni lazima katika mazingira mengi ya biashara

Bisect Otomatiki

git bisect run ./test-script.sh

Otomatisha utafutaji wa bug kwa kuendesha script ya majaribio kwenye kila commit wakati wa bisect

Kumbukumbu ya Migongano

git config --global rerere.enabled true

Wezesha utumiaji tena wa suluhisho za migongano ili kuharakisha utatuzi wa migongano inayojirudia kwenye rebases au merges

Aliasi na Hooks za Pamoja

Hifadhi aliasi za Git na commit hooks kwenye repo ya pamoja au pipeline ya CI kutekeleza viwango vya timu na kuboresha tija

Rasilimali za Ziada

🧠 Kidokezo

Usijaribu kukumbuka kila kitu. Tumia --help, chunguza, na fanya mazoezi mara kwa mara:

git help <command>
git status

🌐 Viungo Muhimu

📘 Nyaraka Rasmi za Git — mwongozo wa kina kwa amri zote za Git:
https://git-scm.com/docs

📙 Jifunze Git Branching — mafunzo ya kuona kwa interactive kudhibiti matawi:
https://learngitbranching.js.org

📕 Kitabu cha Pro Git (bure, na Scott Chacon & Ben Straub):
https://git-scm.com/book

📗 Git Cheatsheet (muhtasari rasmi wa haraka):
https://education.github.com/git-cheat-sheet-education.pdf