Proqramlaşdırma

Git

Git nədir?

Git hər yaddaşı commit adlı bir nöqtəyə yazır. Commit bütün layihənin surəti deyil, əvvəlki vəziyyətdən fərqdir. Tarix kompüterində qalır. GitHub və GitLab həmin tarixi başqası ilə bölüşmək üçün saytdır. Onlar Git-in özü deyil.

Git nə üçün istifadə olunur?

Git bir nəfər işləyəndə də lazımdır. Səhv dəyişiklikdən geri qayıtmaq və başqasının kodunu qarışdırmadan almaq üçündür.

  • Səhv commit-dən əvvələ qayıtmaq
  • İki fikri ayrı budaqda saxlamaq
  • Serverə yalnız hazır kodu göndərmək
  • Komandanın eyni faylına toxunmaq

Git ilə nə etmək olar?

Git ilə qovluğu izləyirsən, dəyişikliyi seçib commit edirsən, budaq açırsan və uzaq ünvana göndərirsən. Köhnə commit-ə baxıb faylı o günkü halına qaytarmaq olar. Git özü saytı işə salmır və kodu yoxlamır.

Git öyrənmək çətindirmi?

İlk üç əmr asandır: status, add, commit. Çətinlik budaq, birləşmə və münaqişədə başlayır. Eyni sətri iki nəfər dəyişəndə Git özü düzgün variantı seçmir. Sirr, şifrə və böyük fayl commit-ə düşməməlidir.

Üstünlükləri və məhdudiyyətləri

Üstünlük: tarix qalır, səhv geri alınır, bir neçə nəfər eyni layihədə işləyir. Məhdudiyyət: Git yedəkləmə xidməti deyil, serverdəki saytın özü deyil. Commit mesajı qısa və düz olmalıdır, yoxsa tarix oxunmur.

Əsas anlayışlar

İş qovluğu, commit və uzaq ünvan üç ayrı yerdir. Budaq eyni tarixdən ayrılan xəttdir.

  • status nəyin dəyişdiyini göstərir
  • add seçilmiş faylı növbəti commit-ə qoyur
  • commit mesajla nöqtə yaradır
  • push həmin nöqtəni uzaq ünvana göndərir

Qısa nümunə

Bu üç əmr vəziyyətə baxır, faylları seçir və qısa mesajla yadda saxlayır. Mesajı öz dəyişikliyinə görə yaz.

git status
git add .
git commit -m "First note"

İşlək nümunələr

Yuxarıdakı üç sətir hər şeyi bir yerdə saxlayır. Bu nümunələr daha kiçik iş görür və ekranda nə görünməli olduğunu deyir. Onları artıq Git layihəsi olan qovluqda işə sal. git status bunun anbar olmadığını desə, qovluq git init ilə başlamayıb.

Bütün qovluğu yox, bir faylı saxlamaq

status nəyin dəyişdiyini və Git-in hələ izləmədiyini sayır. add note.txt növbəti saxlama üçün yalnız o faylı seçir. Başqa dəyişən fayllar kənarda qalır. commit nöqtəni yazır. Dırnaqdakı yazı mesajdır. Nə etdiyini deməlidir, təkcə update yox. git add . yazsan, qovluqdakı hər dəyişiklik eyni nöqtəyə girir.

git status
git add note.txt
git commit -m "Add the note"

Commit-dən sonra git status iş yerinin təmiz olduğunu deyir. note.txt tarixdədir. Əlavə etmədiyin ikinci fayl yoxdur.

Saxlamadan əvvəl dəyişən sətirləri görmək

diff faylın indiki halı ilə son commit arasındakı fərqi göstərir. + ilə başlayan sətir əlavə olunub. - ilə başlayan sətir silinib. Bu commit deyil. Hələ heç nə saxlanmır. Heç nə dəyişməyibsə, əmr heç nə yazmır. add-dən əvvəl bunu oxu ki, şifrəni və ya yarım sətri səhvən saxlamayasın.

git diff

Ekran müqayisədir, tarixdə yeni nöqtə deyil. Terminalı bağlamaq fayldakı dəyişikliyi geri almır.

Tarixi qısa sətirlərdə oxumaq

log commit-ləri sayır. --oneline hər birini bir sətrə qoyur. Ən yeni commit yuxarıdadır. Başdakı qısa söz id-dir. Köhnə nöqtəyə baxmaq lazım olanda həmin id-ni işlədirsən. Mesaj commit-də yazdığın mətndir. Mesajların hamısı update-dirsə, siyahı nəyin dəyişdiyini demir.

git log --oneline

Hər saxlama üçün bir sətir görürsən. Üst sətir son commit-dir. Köhnələr onun altında durur.

Öz addımını göndərmək və başqasınınkını götürmək

push kompüterindəki commit-ləri bağladığın ünvana göndərir, çox vaxt GitHub-a. pull həmin ünvanda olub sənin maşınında olmayan commit-ləri gətirir. Eyni əmr deyil. push yoldaşının yeni işini endirmir. pull səninikini yükləmir. pull dayanıb münaqişədən danışırsa, eyni sətir iki yerdə dəyişib. Git düzgün sətri seçmir. Sən seçirsən.

git push
git pull

Təmiz push-dan sonra saytda sənin son commit-in var. Təmiz pull-dan sonra qovluğunda yalnız saytda olan commit-lər var.

Tez-tez verilən suallar

  • Git və GitHub eynidir? Xeyr. Git alətdir. GitHub həmin tarixi saxlayan saytdır.
  • Git yalnız kod üçündür? Əsasən mətn faylı üçündür. Şəkil və video üçün pis yoldur.
  • Hər saxlama commit-dir? Xeyr. Əvvəl faylı seçirsən, sonra commit yazırsan.