🌿
Веб-сайт

Git асослари: ҳар бир дастурчи билиши шарт бўлган версия назорати тизими

18.01.2026
← Барча мақолалар

Git бугунги кунда дастурлаш соҳасидаги энг муҳим воситалардан бири ҳисобланади ва ундан фойдаланишни билмаслик замонавий дастурчи учун жиддий камчилик саналади. Оддий қилиб айтганда, Git бу сизнинг лойиҳангиздаги ҳар бир ўзгаришни ёзиб борувчи версия назорати тизимидир. У файлларингизнинг вақт ўтиши билан қандай ўзгарганини эслаб қолади, керак бўлганда исталган эски ҳолатга қайтишга имкон беради ва бир нечта дастурчининг бир лойиҳа устида бир вақтда, бир-бирига халақит бермасдан ишлашини таъминлайди.

Тасаввур қилинг, сиз катта бир лойиҳа устида ишлаяпсиз ва кечаги код яхши ишлаганди, лекин бугунги ўзгаришлардан кейин ҳаммаси бузилди. Git бўлмаса, сиз нима ўзгарганини эслаб қолишингиз ёки қўлда захира нусхалар яратиб юришингиз керак бўларди. Git эса бу муаммони бутунлай ҳал қилади: ҳар бир ўзгариш қайд этилган бўлади ва сиз бир буйруқ билан ишлайдиган эски ҳолатга қайтишингиз мумкин. Ушбу мақолада Git'нинг асосий тушунчалари ва энг кўп ишлатиладиган буйруқларини амалий мисоллар билан ўрганамиз.

Репозиторий яратиш ва биринчи commit

Git билан ишлаш репозиторий яратишдан бошланади. Репозиторий бу лойиҳангиз ва унинг тўлиқ тарихи сақланадиган махсус папкадир. Мавжуд лойиҳа папкангизда Git'ни ишга тушириш учун терминалда қуйидаги буйруқни бажаринг. Бу буйруқ папка ичида яширин .git номли папка яратади ва айнан шу папкада барча тарих ва созламалар сақланади.

git init
git config user.name "Исмингиз"
git config user.email "email@example.com"

Репозиторий тайёр бўлгач, файлларингизни Git тарихига қўшишингиз керак. Бу икки босқичда амалга ошади: аввал файлларни staging деб аталувчи тайёрлаш майдонига қўшасиз, сўнг уларни commit қиласиз. Commit бу лойиҳангизнинг маълум бир вақтдаги суратга олинган ҳолатидир ва ҳар бир commit ўзига хос изоҳ билан сақланади. Қуйидаги буйруқлар барча файлларни қўшади ва биринчи commit'ни яратади.

git add .
git commit -m "Loyihaning birinchi versiyasi"

Бу ерда git add . жорий папкадаги барча ўзгарган файлларни тайёрлаш майдонига қўшади, git commit эса уларни изоҳ билан тарихга ёзади. Изоҳ аниқ ва мазмунли бўлиши муҳим, чунки келажакда сиз ёки жамоангиз ҳар бир ўзгаришнинг нима мақсадда қилинганини тушуниши керак бўлади. Ёмон изоҳ масалан "тузатиш" ўрнига "логин формасидаги парол текшируви хатосини тузатиш" деб ёзиш анча фойдалироқ.

Ҳолатни текшириш ва тарихни кўриш

Ишлаш жараёнида қайси файллар ўзгарганини ва қайсилари ҳали commit қилинмаганини билиш жуда муҳим. Бунинг учун git status буйруғи ишлатилади. У сизга staging майдонидаги файллар, ўзгарган лекин ҳали қўшилмаган файллар ва умуман кузатилмаётган янги файллар ҳақида тўлиқ маълумот беради. Бу буйруқни тез-тез ишлатиш одат тусига айланиши керак.

git status
git log --oneline
git diff

Лойиҳангиз тарихини кўриш учун git log буйруғидан фойдаланасиз. --oneline байроғи ҳар бир commit'ни битта қаторда ихчам кўрсатади, бу эса узун тарихни тез кўздан кечиришга ёрдам беради. git diff эса ҳали commit қилинмаган ўзгаришларни аниқ сатрма-сатр кўрсатади, яъни қайси қаторлар қўшилган ёки ўчирилганини билиб оласиз.

Branch ва merge: параллел ишлаш

Branch ёки тармоқ Git'нинг энг кучли имкониятларидан биридир. Branch сизга асосий коддан алоҳида ажралиб, янги хусусият устида бемалол ишлаш имконини беради. Агар янги ғоянгиз ишламаса, branch'ни ўчириб ташлайсиз ва асосий кодингизга ҳеч қандай зарар етмайди. Агар ишласа, уни асосий тармоққа бирлаштирасиз. Қуйидаги мисол янги branch яратиб унга ўтишни кўрсатади.

git branch yangi-xususiyat
git checkout yangi-xususiyat

# yoki bir buyruqda:
git checkout -b yangi-xususiyat

Янги branch'да ишлаб, ўзгаришларни commit қилганингиздан сўнг, уларни асосий branch'га бирлаштириш керак бўлади. Буни merge буйруғи орқали амалга оширасиз. Аввал асосий branch'га қайтиб ўтасиз, сўнг ўз хусусиятингиз жойлашган branch'ни унга бирлаштирасиз. Git икки branch'даги ўзгаришларни автоматик равишда бирлаштиришга ҳаракат қилади.

git checkout main
git merge yangi-xususiyat

Конфликт ечиш

Баъзан икки branch бир хил файлдаги бир хил қаторни ҳар хил тарзда ўзгартирган бўлади ва Git қайси версияни танлашни билолмай қолади. Бу ҳолатга конфликт дейилади. Конфликт юзага келганда Git сизни хабардор қилади ва конфликтли файл ичига махсус белгилар қўяди. Сизнинг вазифангиз бу файлни очиб, қайси қисм қолиши кераклигини ҳал қилишдир.

<<<<<<< HEAD
mening o'zgarishim
=======
boshqa branch o'zgarishi
>>>>>>> yangi-xususiyat

Бу белгиларни кўрганда сиз қайси код тўғри эканини ҳал қиласиз, кераксиз қисмни ва махсус белгиларни ўчирасиз. Сўнг файлни сақлаб, уни қайтадан staging майдонига қўшасиз ва commit қиласиз. Шу тариқа конфликт ҳал этилган бўлади ва merge жараёни якунига етади. Конфликтдан қўрқмаслик керак, улар ҳар қандай жамоавий ишда табиий ҳолдир.

git add buzilgan-fayl.php
git commit -m "Merge konflikti yechildi"

Remote, push ва pull: GitHub билан ишлаш

Ҳозиргача биз фақат компютерингиздаги локал репозиторий билан ишладик. Лекин кодни бошқалар билан улашиш ёки уни хавфсиз сақлаш учун масофавий сервер керак бўлади. Айнан шу ерда GitHub, GitLab каби хизматлар ёрдамга келади. Remote бу сизнинг локал репозиториянгиз боғланган масофавий нусхадир. Қуйидаги буйруқ локал репозиториянгизни GitHub'даги лойиҳага боғлайди.

git remote add origin https://github.com/user/loyiha.git
git push -u origin main

Push буйруғи локал ўзгаришларингизни масофавий серверга юборади, шунда жамоангизнинг бошқа аъзолари уларни кўра олади. Аксинча, бошқалар киритган ўзгаришларни ўз компютерингизга олиб келиш учун pull буйруғидан фойдаланасиз. Жамоада ишлаётганда ҳар куни иш бошида pull қилиш яхши одат ҳисобланади, чунки бу сизни ҳамкасбларингизнинг сўнгги ўзгаришлари билан таъминлайди.

git pull origin main

.gitignore ва тўғри иш жараёни

Ҳар бир лойиҳада Git томонидан кузатилиши шарт бўлмаган файллар бўлади, масалан пароллар сақланадиган конфигурация файллари, вақтинчалик файллар ёки кутубхоналар папкаси. Бундай файлларни Git'дан яшириш учун лойиҳа илдизида .gitignore номли файл яратилади. Унда кузатилмаслиги керак бўлган файл ва папкалар рўйхати ёзилади. Бу файл лойиҳангизни тоза ва хавфсиз сақлашга ёрдам беради.

node_modules/
.env
*.log
vendor/
.DS_Store

Энг самарали иш жараёни ҳар бир янги хусусият ёки тузатиш учун алоҳида branch яратиш, унда ишлаш ва тугагач асосий branch'га бирлаштиришдир. Бу усул feature branch иш жараёни деб аталади ва у кодни барқарор сақлайди. Асосий main branch доимо ишлайдиган, барқарор ҳолатда бўлиши керак, барча тажрибалар эса алоҳида тармоқларда олиб борилади. Git'ни мунтазам ишлатиш билан бу жараён тезда одатга айланади ва сиз уни ҳар бир лойиҳада қўллай бошлайсиз.

Git'ни ўрганиш бошида мураккаб туюлиши мумкин, лекин бу мақолада кўриб чиқилган асосий буйруқлар кундалик ишингизнинг 90 фоизини қоплайди. Энг яхши ўрганиш усули амалиёт: кичик бир лойиҳа яратинг, унга ўзгаришлар киритинг, branchлар билан ўйнанг ва конфликтларни атайлаб юзага келтириб, уларни ечишни машқ қилинг. Вақт ўтиб Git сизнинг энг ишончли ёрдамчингизга айланади ва усиз ишлашни тасаввур ҳам қила олмайсиз.

Ўхшаш мақолалар

🌾 Қишлоқ хўжалиги ва агро сайти: маҳсулотлар каталоги ❤️ Хайрия фонди сайти: шаффоф ва ишонч 🎉 Тўйxона ва банкет зали сайти: бирон қилиш 🚙 Автомобил ижара сайти: каталог ва бирон
🌐 Тил
🇺🇿 O'zbek 🇺🇿 Ўзбек 🇷🇺 Русский 🇬🇧 English