Git bugungi kunda dasturlash sohasidagi eng muhim vositalardan biri hisoblanadi va undan foydalanishni bilmaslik zamonaviy dasturchi uchun jiddiy kamchilik sanaladi. Oddiy qilib aytganda, Git bu sizning loyihangizdagi har bir o'zgarishni yozib boruvchi versiya nazorati tizimidir. U fayllaringizning vaqt o'tishi bilan qanday o'zgarganini eslab qoladi, kerak bo'lganda istalgan eski holatga qaytishga imkon beradi va bir nechta dasturchining bir loyiha ustida bir vaqtda, bir-biriga xalaqit bermasdan ishlashini ta'minlaydi.
Tasavvur qiling, siz katta bir loyiha ustida ishlayapsiz va kechagi kod yaxshi ishlagandi, lekin bugungi o'zgarishlardan keyin hammasi buzildi. Git bo'lmasa, siz nima o'zgarganini eslab qolishingiz yoki qo'lda zaxira nusxalar yaratib yurishingiz kerak bo'lardi. Git esa bu muammoni butunlay hal qiladi: har bir o'zgarish qayd etilgan bo'ladi va siz bir buyruq bilan ishlaydigan eski holatga qaytishingiz mumkin. Ushbu maqolada Git'ning asosiy tushunchalari va eng ko'p ishlatiladigan buyruqlarini amaliy misollar bilan o'rganamiz.
Repozitoriy yaratish va birinchi commit
Git bilan ishlash repozitoriy yaratishdan boshlanadi. Repozitoriy bu loyihangiz va uning to'liq tarixi saqlanadigan maxsus papkadir. Mavjud loyiha papkangizda Git'ni ishga tushirish uchun terminalda quyidagi buyruqni bajaring. Bu buyruq papka ichida yashirin .git nomli papka yaratadi va aynan shu papkada barcha tarix va sozlamalar saqlanadi.
git init
git config user.name "Ismingiz"
git config user.email "email@example.com"
Repozitoriy tayyor bo'lgach, fayllaringizni Git tarixiga qo'shishingiz kerak. Bu ikki bosqichda amalga oshadi: avval fayllarni staging deb ataluvchi tayyorlash maydoniga qo'shasiz, so'ng ularni commit qilasiz. Commit bu loyihangizning ma'lum bir vaqtdagi suratga olingan holatidir va har bir commit o'ziga xos izoh bilan saqlanadi. Quyidagi buyruqlar barcha fayllarni qo'shadi va birinchi commit'ni yaratadi.
git add .
git commit -m "Loyihaning birinchi versiyasi"
Bu yerda git add . joriy papkadagi barcha o'zgargan fayllarni tayyorlash maydoniga qo'shadi, git commit esa ularni izoh bilan tarixga yozadi. Izoh aniq va mazmunli bo'lishi muhim, chunki kelajakda siz yoki jamoangiz har bir o'zgarishning nima maqsadda qilinganini tushunishi kerak bo'ladi. Yomon izoh masalan "tuzatish" o'rniga "login formasidagi parol tekshiruvi xatosini tuzatish" deb yozish ancha foydaliroq.
Holatni tekshirish va tarixni ko'rish
Ishlash jarayonida qaysi fayllar o'zgarganini va qaysilari hali commit qilinmaganini bilish juda muhim. Buning uchun git status buyrug'i ishlatiladi. U sizga staging maydonidagi fayllar, o'zgargan lekin hali qo'shilmagan fayllar va umuman kuzatilmayotgan yangi fayllar haqida to'liq ma'lumot beradi. Bu buyruqni tez-tez ishlatish odat tusiga aylanishi kerak.
git status
git log --oneline
git diff
Loyihangiz tarixini ko'rish uchun git log buyrug'idan foydalanasiz. --oneline bayrog'i har bir commit'ni bitta qatorda ixcham ko'rsatadi, bu esa uzun tarixni tez ko'zdan kechirishga yordam beradi. git diff esa hali commit qilinmagan o'zgarishlarni aniq satrma-satr ko'rsatadi, ya'ni qaysi qatorlar qo'shilgan yoki o'chirilganini bilib olasiz.
Branch va merge: parallel ishlash
Branch yoki tarmoq Git'ning eng kuchli imkoniyatlaridan biridir. Branch sizga asosiy koddan alohida ajralib, yangi xususiyat ustida bemalol ishlash imkonini beradi. Agar yangi g'oyangiz ishlamasa, branch'ni o'chirib tashlaysiz va asosiy kodingizga hech qanday zarar yetmaydi. Agar ishlasa, uni asosiy tarmoqqa birlashtirasiz. Quyidagi misol yangi branch yaratib unga o'tishni ko'rsatadi.
git branch yangi-xususiyat
git checkout yangi-xususiyat
# yoki bir buyruqda:
git checkout -b yangi-xususiyat
Yangi branch'da ishlab, o'zgarishlarni commit qilganingizdan so'ng, ularni asosiy branch'ga birlashtirish kerak bo'ladi. Buni merge buyrug'i orqali amalga oshirasiz. Avval asosiy branch'ga qaytib o'tasiz, so'ng o'z xususiyatingiz joylashgan branch'ni unga birlashtirasiz. Git ikki branch'dagi o'zgarishlarni avtomatik ravishda birlashtirishga harakat qiladi.
git checkout main
git merge yangi-xususiyat
Konflikt yechish
Ba'zan ikki branch bir xil fayldagi bir xil qatorni har xil tarzda o'zgartirgan bo'ladi va Git qaysi versiyani tanlashni bilolmay qoladi. Bu holatga konflikt deyiladi. Konflikt yuzaga kelganda Git sizni xabardor qiladi va konfliktli fayl ichiga maxsus belgilar qo'yadi. Sizning vazifangiz bu faylni ochib, qaysi qism qolishi kerakligini hal qilishdir.
<<<<<<< HEAD
mening o'zgarishim
=======
boshqa branch o'zgarishi
>>>>>>> yangi-xususiyat
Bu belgilarni ko'rganda siz qaysi kod to'g'ri ekanini hal qilasiz, keraksiz qismni va maxsus belgilarni o'chirasiz. So'ng faylni saqlab, uni qaytadan staging maydoniga qo'shasiz va commit qilasiz. Shu tariqa konflikt hal etilgan bo'ladi va merge jarayoni yakuniga yetadi. Konfliktdan qo'rqmaslik kerak, ular har qanday jamoaviy ishda tabiiy holdir.
git add buzilgan-fayl.php
git commit -m "Merge konflikti yechildi"
Remote, push va pull: GitHub bilan ishlash
Hozirgacha biz faqat kompyuteringizdagi lokal repozitoriy bilan ishladik. Lekin kodni boshqalar bilan ulashish yoki uni xavfsiz saqlash uchun masofaviy server kerak bo'ladi. Aynan shu yerda GitHub, GitLab kabi xizmatlar yordamga keladi. Remote bu sizning lokal repozitoriyangiz bog'langan masofaviy nusxadir. Quyidagi buyruq lokal repozitoriyangizni GitHub'dagi loyihaga bog'laydi.
git remote add origin https://github.com/user/loyiha.git
git push -u origin main
Push buyrug'i lokal o'zgarishlaringizni masofaviy serverga yuboradi, shunda jamoangizning boshqa a'zolari ularni ko'ra oladi. Aksincha, boshqalar kiritgan o'zgarishlarni o'z kompyuteringizga olib kelish uchun pull buyrug'idan foydalanasiz. Jamoada ishlayotganda har kuni ish boshida pull qilish yaxshi odat hisoblanadi, chunki bu sizni hamkasblaringizning so'nggi o'zgarishlari bilan ta'minlaydi.
git pull origin main
.gitignore va to'g'ri ish jarayoni
Har bir loyihada Git tomonidan kuzatilishi shart bo'lmagan fayllar bo'ladi, masalan parollar saqlanadigan konfiguratsiya fayllari, vaqtinchalik fayllar yoki kutubxonalar papkasi. Bunday fayllarni Git'dan yashirish uchun loyiha ildizida .gitignore nomli fayl yaratiladi. Unda kuzatilmasligi kerak bo'lgan fayl va papkalar ro'yxati yoziladi. Bu fayl loyihangizni toza va xavfsiz saqlashga yordam beradi.
node_modules/
.env
*.log
vendor/
.DS_Store
Eng samarali ish jarayoni har bir yangi xususiyat yoki tuzatish uchun alohida branch yaratish, unda ishlash va tugagach asosiy branch'ga birlashtirishdir. Bu usul feature branch ish jarayoni deb ataladi va u kodni barqaror saqlaydi. Asosiy main branch doimo ishlaydigan, barqaror holatda bo'lishi kerak, barcha tajribalar esa alohida tarmoqlarda olib boriladi. Git'ni muntazam ishlatish bilan bu jarayon tezda odatga aylanadi va siz uni har bir loyihada qo'llay boshlaysiz.
Git'ni o'rganish boshida murakkab tuyulishi mumkin, lekin bu maqolada ko'rib chiqilgan asosiy buyruqlar kundalik ishingizning 90 foizini qoplaydi. Eng yaxshi o'rganish usuli amaliyot: kichik bir loyiha yarating, unga o'zgarishlar kiriting, branchlar bilan o'ynang va konfliktlarni ataylab yuzaga keltirib, ularni yechishni mashq qiling. Vaqt o'tib Git sizning eng ishonchli yordamchingizga aylanadi va usiz ishlashni tasavvur ham qila olmaysiz.