3-bo‘lim

Birinchi repozitoriy va birinchi kommit

git init, git status, git add va git commit buyruqlari bilan loyihani Git nazoratiga olish.

🕑 16 daqiqa o‘qish 📄 805 so‘z 👁 5 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Repozitoriy nima?
  2. Holatni tekshirish
  3. Birinchi fayl
  4. Uch hudud
  5. Sahnaga qo'yish
  6. Birinchi kommit
  7. Kommit xabari qanday yozilishi kerak?
  8. Ikkinchi kommit
  9. Qisqartma: add va commit birga
  10. Fayl holatlari
  11. Qisqa holat
  12. To'liq misol
  13. Xulosa

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.

Terminal
mkdir birinchi-loyiha
cd birinchi-loyiha
git init
Natija
Initialized empty Git repository in C:/Users/husanboy/birinchi-loyiha/.git/
Terminal
ls -a
Natija
.  ..  .git
.git papkasini o'chirmang

Bu 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:

Terminal
git status
Natija
On branch main

No commits yet

nothing to commit (create/copy files and use "git add" to track)
git status ni tez-tez chaqiring

Bu 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 #

Terminal
echo "# Birinchi loyiham" > README.md
git status
Natija
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:

Ish papkasi Working Directory Siz tahrirlaydigan haqiqiy fayllar o'zgarishlar hali xavfsiz emas Sahna Staging Area / Index Keyingi kommitga tayyorlangan o'zgarishlar "qora nusxa" Repozitoriy .git papkasi Doimiy saqlangan kommitlar tarixi o'zgarish endi xavfsiz add commit checkout / restore - tarixdan qaytarish
Fayl ish papkasidan sahnaga, sahnadan repozitoriyga o'tadi
Nima uchun "sahna" 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 #

Terminal
git add README.md
git status
Natija
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.

Terminal
# 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
BuyruqNima qo'shadi
git add fayl.txtBitta fayl
git add .Joriy papka va uning ichidagilar
git add -AButun repozitoriy bo'ylab hamma o'zgarish
git add -uFaqat allaqachon kuzatilayotgan fayllar
git add -pInteraktiv - fayl ichidagi qismlarni tanlab
git add . ehtiyotkorlik talab qiladi

Bu 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.

Terminal
git commit -m "Loyiha yaratildi va README qo'shildi"
Natija
[main (root-commit) a3f5b2c] Loyiha yaratildi va README qo'shildi
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
Terminal
git status
Natija
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? #

Yaxshi kommit xabari qoidalari
  1. Birinchi satr - 50 belgidan qisqa, xulosa
  2. Buyruq mayli ishlating: "qo'shildi" emas, "qo'sh" yoki "qo'shildi" (jamoada bir xil uslub tanlang)
  3. Nima qilinganini emas, nima uchun qilinganini yozing
  4. Nuqta qo'yish shart emas
YomonYaxshi
o'zgarishLogin formasiga validatsiya qo'shildi
fixSavatda narx noto'g'ri hisoblangani tuzatildi
asdfFoydalanuvchi profili sahifasi yaratildi
ishladi!!!Buyurtma yaratishda tranzaksiya qo'shildi

Uzun xabar yozish kerak bo'lsa:

Terminal
git commit

Muharrir ochiladi:

Natija
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.
Bo'sh satr muhim

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 #

Terminal
echo "Bu mening birinchi Git loyiham." >> README.md
git status
Natija
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.

Terminal
git add README.md
git commit -m "README ga loyiha tavsifi qo'shildi"
Natija
[main 7b1e9d4] README ga loyiha tavsifi qo'shildi
 1 file changed, 1 insertion(+)

Qisqartma: add va commit birga #

Faqat allaqachon kuzatilayotgan fayllar uchun:

Terminal
git commit -am "README yangilandi"

-a bayrog'i barcha o'zgargan fayllarni avtomatik sahnaga qo'yadi.

-a yangi fayllarni qo'shmaydi

Yangi 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 #

Untracked kuzatilmaydi Staged sahnada Committed saqlangan Modified o'zgartirilgan add commit tahrir git add - tsikl takrorlanadi
Kundalik ish - shu tsiklning takrorlanishi

Qisqa holat #

Uzun chiqishdan charchasangiz:

Terminal
git status -s
Natija
 M README.md
A  index.html
?? vaqtinchalik.log
MM style.css
BelgiMa'nosi
??Kuzatilmaydi
ASahnaga qo'shilgan yangi fayl
M (o'ngda)Ish papkasida o'zgartirilgan
M (chapda)Sahnada o'zgartirilgan
MMSahnaga qo'yilgan, keyin yana o'zgartirilgan
DO'chirilgan
RNomi o'zgartirilgan

To'liq misol #

Terminal
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
Natija
c9d2e71 Kitoblar sahifasi va tavsif qo'shildi
5a8b3f0 Bosh sahifa yaratildi
1f4c6d9 Loyiha boshlandi
Amaliy topshiriq
  1. mening-saytim nomli papka yarating va git init qiling.
  2. index.html fayl yarating va kommit qiling.
  3. style.css va script.js yarating, ikkalasini bitta kommitda saqlang.
  4. index.html ni o'zgartiring va git status -s bilan holatni ko'ring.
  5. Faqat index.html ni sahnaga qo'ying, git status bilan tekshiring.
  6. Kommit qiling va git log --oneline bilan uchta kommitni ko'ring.
  7. Uzun kommit xabari yozib ko'ring: sarlavha, bo'sh satr, tavsif.
  8. git commit -am bilan yangi fayl qo'shilmasligini o'zingiz sinab ko'ring.

Xulosa #

  • git init - papkani repozitoriyga aylantiradi, .git papkasini 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.
  • -a bayrog'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.

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.