🐙 Git na GitHub CLI
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 |
|
git grep -n "TODO" |
Pata mistari yenye |
|
git grep -i "login" |
Tafuta neno |
|
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 |
|
git branch -d old-feature |
Futa tawi la ndani linaloitwa |
|
git checkout |
Badilisha matawi au rejesha faili kutoka commit nyingine | |
git checkout main |
Badilisha hadi tawi |
|
git checkout -b new-branch |
Unda na ubadilishe hadi tawi jipya linaloitwa |
|
git switch |
Badilisha matawi (mbadala rahisi kwa checkout) |
|
git switch main |
Badilisha hadi tawi |
|
git switch -c feature-x |
Unda na ubadilishe hadi tawi jipya linaloitwa |
|
git switch new-feature |
Badilisha hadi tawi lililopo linaloitwa |
|
git merge |
Unganisha mabadiliko kutoka tawi jingine hadi lile la sasa | |
git merge new-feature |
Unganisha tawi |
|
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 |
|
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 |
📡 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 |
|
git pull |
Pakua na unganisha mabadiliko kiotomatiki kutoka tawi la mbali | |
git pull origin main |
Pakua na unganisha mabadiliko kutoka tawi |
|
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 |
|
git fetch |
Pakua mabadiliko kutoka mbali bila kuunganisha | |
git fetch origin |
Pakua masasisho yote kutoka remote |
|
git fetch origin main |
Pakua tawi |
|
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 ( |
📦 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 |
|
git tag -d v1.0 |
Futa tagi ya ndani iitwayo |
|
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. |
|
git push origin :refs/tags/v1.0 |
Futa tagi ya mbali |
🛠️ 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 |
|
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 submodule sync --recursive |
Linganishwa URLs za submodule baada ya mabadiliko kwenye faili |
|
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 |
|
git archive --format=tar --prefix=project/ HEAD \| gzip > project.tar.gz |
Unda archive ya |
|
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
ghhukuruhusu 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 ( |
|
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 |
|
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 |
|
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 |
|
gh repo create |
Unda repository mpya ya GitHub kutoka CLI | |
gh repo create my-project |
Unda repository mpya iitwayo |
|
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 |
💡 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-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