3-bo‘lim
Birinchi repozitoriy va birinchi kommit
git init, git status, git add va git commit buyruqlari bilan loyihani Git nazoratiga olish.
Ushbu bo‘lim mundarijasi
Endi haqiqiy ish boshlanadi. Kichik loyiha yaratamiz va uni Git nazoratiga olamiz.
Repozitoriy nima? #
Repozitoriy (qisqacha repo) - Git kuzatib boradigan papka.
Uning ichida .git nomli yashirin papka bo'ladi - butun tarix o'sha yerda.
mkdir birinchi-loyiha
cd birinchi-loyiha
git init
Initialized empty Git repository in C:/Users/husanboy/birinchi-loyiha/.git/
ls -a
. .. .git
.git papkasini o'chirmangBu papkada loyihaning butun tarixi saqlanadi. Uni o'chirsangiz - barcha kommitlar, tarmoqlar va tarix yo'qoladi. Papkadagi fayllar qoladi, lekin ular oddiy fayllarga aylanadi.
Uni ko'chirish yoki nomini o'zgartirish ham mumkin emas.
Holatni tekshirish #
Git bilan ishlashda eng ko'p ishlatiladigan buyruq:
git status
On branch main
No commits yet
nothing to commit (create/copy files and use "git add" to track)
git status ni tez-tez chaqiringBu buyruq zararsiz - u hech nimani o'zgartirmaydi, faqat holatni ko'rsatadi. Har bir amaldan keyin uni chaqirish odat qiling. Git ko'pincha keyingi qadamni ham maslahat beradi.
Birinchi fayl #
echo "# Birinchi loyiham" > README.md
git status
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
nothing added to commit but untracked files present (use "git add" to track)
Git yangi faylni ko'rdi, lekin uni hali kuzatmayapti (untracked).
Uch hudud #
Git bilan ishlash tushunish uchun uch hududni bilish kerak:
Boshlovchilarga bu ortiqcha bosqichdek tuyuladi. Lekin u juda foydali:
Siz uchta faylni o'zgartirdingiz - ikkitasi bitta vazifaga, uchinchisi butunlay boshqa vazifaga tegishli. Sahna tufayli birinchi ikkitasini alohida kommit qilishingiz va uchinchisini keyingi kommitga qoldirishingiz mumkin.
Natijada tarix toza va tushunarli bo'ladi.
Sahnaga qo'yish #
git add README.md
git status
On branch main
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
Endi fayl yashil rangda - u sahnada.
# Bir nechta fayl
git add index.html style.css
# Butun papka
git add .
# Faqat .php fayllar
git add *.php
# Butun loyiha (ildizdan)
git add -A
| Buyruq | Nima qo'shadi |
|---|---|
git add fayl.txt | Bitta fayl |
git add . | Joriy papka va uning ichidagilar |
git add -A | Butun repozitoriy bo'ylab hamma o'zgarish |
git add -u | Faqat allaqachon kuzatilayotgan fayllar |
git add -p | Interaktiv - fayl ichidagi qismlarni tanlab |
git add . ehtiyotkorlik talab qiladiBu buyruq hamma narsani qo'shadi - shu jumladan tasodifan yaratilgan vaqtinchalik fayllar, parollar, katta arxivlar.
Har doim git status bilan nima qo'shilganini tekshiring.
Keyingi bo'limlarda .gitignore bilan keraksiz fayllarni chetlab o'tishni
o'rganamiz.
Birinchi kommit #
Kommit - loyihaning ma'lum bir vaqtdagi saqlangan holati.
git commit -m "Loyiha yaratildi va README qo'shildi"
[main (root-commit) a3f5b2c] Loyiha yaratildi va README qo'shildi
1 file changed, 1 insertion(+)
create mode 100644 README.md
git status
On branch main
nothing to commit, working tree clean
working tree clean - hamma o'zgarish saqlangan. Bu ko'rishni yoqtirasiz.
Kommit xabari qanday yozilishi kerak? #
- Birinchi satr - 50 belgidan qisqa, xulosa
- Buyruq mayli ishlating: "qo'shildi" emas, "qo'sh" yoki "qo'shildi" (jamoada bir xil uslub tanlang)
- Nima qilinganini emas, nima uchun qilinganini yozing
- Nuqta qo'yish shart emas
| Yomon | Yaxshi |
|---|---|
o'zgarish | Login formasiga validatsiya qo'shildi |
fix | Savatda narx noto'g'ri hisoblangani tuzatildi |
asdf | Foydalanuvchi profili sahifasi yaratildi |
ishladi!!! | Buyurtma yaratishda tranzaksiya qo'shildi |
Uzun xabar yozish kerak bo'lsa:
git commit
Muharrir ochiladi:
Savat hisob-kitobi qayta yozildi
Ilgari narx float turida saqlanardi va yaxlitlash xatolari
tufayli jami summa bir-ikki so'mga farq qilardi.
Endi barcha hisob DECIMAL turida bajariladi.
Muammoni Jasur aniqladi.
Birinchi satr va matn orasida bo'sh satr bo'lishi shart. Git birinchi satrni sarlavha, qolganini tavsif deb qabul qiladi.
git log --oneline da faqat sarlavha ko'rinadi.
Ikkinchi kommit #
echo "Bu mening birinchi Git loyiham." >> README.md
git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")
E'tibor bering: endi Untracked emas, modified. Git bu faylni
allaqachon biladi.
git add README.md
git commit -m "README ga loyiha tavsifi qo'shildi"
[main 7b1e9d4] README ga loyiha tavsifi qo'shildi
1 file changed, 1 insertion(+)
Qisqartma: add va commit birga #
Faqat allaqachon kuzatilayotgan fayllar uchun:
git commit -am "README yangilandi"
-a bayrog'i barcha o'zgargan fayllarni avtomatik sahnaga qo'yadi.
-a yangi fayllarni qo'shmaydiYangi yaratilgan fayl (untracked) -a bilan qo'shilmaydi.
Uni albatta git add bilan qo'shish kerak.
Bu ko'p uchraydigan chalkashlik: "Men kommit qildim, lekin fayl yo'q!"
Fayl holatlari #
Qisqa holat #
Uzun chiqishdan charchasangiz:
git status -s
M README.md
A index.html
?? vaqtinchalik.log
MM style.css
| Belgi | Ma'nosi |
|---|---|
?? | Kuzatilmaydi |
A | Sahnaga qo'shilgan yangi fayl |
M (o'ngda) | Ish papkasida o'zgartirilgan |
M (chapda) | Sahnada o'zgartirilgan |
MM | Sahnaga qo'yilgan, keyin yana o'zgartirilgan |
D | O'chirilgan |
R | Nomi o'zgartirilgan |
To'liq misol #
mkdir kutubxona && cd kutubxona
git init
echo "# Kutubxona tizimi" > README.md
git add README.md
git commit -m "Loyiha boshlandi"
mkdir manba
echo "<?php echo 'Salom';" > manba/index.php
git add manba/
git commit -m "Bosh sahifa yaratildi"
echo "Kitoblarni boshqarish tizimi." >> README.md
echo "<?php echo 'Kitoblar';" > manba/kitoblar.php
git add .
git commit -m "Kitoblar sahifasi va tavsif qo'shildi"
git log --oneline
c9d2e71 Kitoblar sahifasi va tavsif qo'shildi
5a8b3f0 Bosh sahifa yaratildi
1f4c6d9 Loyiha boshlandi
mening-saytimnomli papka yarating vagit initqiling.index.htmlfayl yarating va kommit qiling.style.cssvascript.jsyarating, ikkalasini bitta kommitda saqlang.index.htmlni o'zgartiring vagit status -sbilan holatni ko'ring.- Faqat
index.htmlni sahnaga qo'ying,git statusbilan tekshiring. - Kommit qiling va
git log --onelinebilan uchta kommitni ko'ring. - Uzun kommit xabari yozib ko'ring: sarlavha, bo'sh satr, tavsif.
git commit -ambilan yangi fayl qo'shilmasligini o'zingiz sinab ko'ring.
Xulosa #
git init- papkani repozitoriyga aylantiradi,.gitpapkasini yaratadi.git status- eng ko'p ishlatiladigan buyruq, uni tez-tez chaqiring.- Git da uch hudud: ish papkasi, sahna, repozitoriy.
git add- fayllarni sahnaga qo'yadi.git commit -m "xabar"- sahnadagi hamma narsani doimiy saqlaydi.-abayrog'i faqat kuzatilayotgan fayllarni qo'shadi, yangilarini emas.- Kommit xabari qisqa, aniq va mazmunli bo'lishi kerak.
git status -s- qisqa va tez ko'rinish.
Keyingi bo'limda Git ichida aslida nima saqlanishini ko'rib chiqamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.