Git-repozitoriya — bu, layihənin mənbə kodunun anbarıdır, burada Git fayllardakı hər dəyişikliyi tərtibat boyunca izləyir. Repozitoriya commitlər, budaqlar və teqlərin tam tarixini ehtiva edir ki, bu da tərtibatçılara kod üzərində birgə işləməyə imkan verir. Git, 2024 məlumatlarına görə, repozitoriya istənilən versiya nəzarət sisteminin əsasını təşkil edir və dünyada milyonlarla layihədə istifadə olunur.
Əsas məqamlar
Git repozitoriyası — bu, versiya nəzarət sisteminin layihə fayllarının dəyişiklik tarixçəsini təsvir edən metadata və obyektləri saxladığı məlumat strukturudur. Tərtibatçı git init əmri ilə repozitoriyanı işə saldıqda, Git layihənin kökündə gizli .git qovluğu yaradır.
Bu qovluğun içərisində sistemin işləməsi üçün lazım olan bütün obyektlər, istinadlar və konfiqurasiya faylları yerləşir. Repozitoriya konkret yerləşməyə bağlı deyil — tərtibatçı onu yerli olaraq yarada, sonra isə uzaq serverə qoşa bilər.
Git paylanmış repozitoriya modelindən istifadə edir: layihənin hər bir iştirakçısı öz kompüterində tam tarixçənin surətini saxlayır. Bu o deməkdir ki, əməliyyatların əksəriyyəti — commit, tarixçəyə baxmaq, budaqlar yaratmaq — serverə müraciət etmədən yerli olaraq yerinə yetirilir.
Git sənədlərinə görə, paylanmış arxitektura sistemi nasazlıqlara qarşı davamlı edir: server sıradan çıxsa, istənilən yerli repozitoriya layihənin tam tarixçəsinin bərpası üçün mənbə ola bilər.
Yerli repozitoriya — bu, tərtibatçının kompüterində layihənin surətidir. O, commit, branch, merge və rebase əməliyyatlarını şəbəkəyə qoşulmadan yerinə yetirməyə imkan verən bütün commitlər, budaqlar və teqlər tarixçəsini ehtiva edir.
Uzaq repozitoriya serverdə yerləşdirilir və komandanın bütün üzvləri üçün sinxronizasiya nöqtəsi kimi xidmət edir. Tərtibatçılar dəyişikliklərini git push əmri ilə göndərir və başqalarının dəyişikliklərini git pull əmri ilə götürürlər.
Yerli və uzaq repozitoriya arasında əlaqə remote origin — Git konfiqurasiyasında saxlanılan server URL-i vasitəsilə qurulur. Bir yerli repozitoriya bir neçə uzaq repozitoriyaya qoşula bilər ki, bu da fork-larla işləyərkən faydalıdır.
Belə modelin əsas üstünlüyü — tərtibatçı oflayn rejimdə kod üzərində işləyə və dəyişiklikləri yalnız nəticəni göndərməyə hazır olduqda sinxronizasiya edə bilər.
| Xüsusiyyət | Yerli | Uzaq |
|---|---|---|
| Yerləşmə | Tərtibatçının kompüterində | Serverdə (GitHub, GitLab) |
| Şəbəkəsiz giriş | Bütün əməliyyatlara tam giriş | Qoşulma olmadan əlçatan deyil |
| Sinxronizasiya | Uzaq repozitoriyaya push/pull | Yerli repozitoriyalardan push qəbul edir |
| Ehtiyat nüsxə | Məlumat itkisindən qorunmur | Serverdə backup-larla saxlanılır |
Git-in saxlama modeli digər versiya nəzarət sistemlərindən prinsipial olaraq fərqlənir. Versiyalar arasında dəyişikliklər siyahısını (deltalar) saxlamaq əvəzinə, Git hər commit anında layihənin bütün fayllarının tam snapshot-larını saxlayır.
Repozitoriyadakı hər bir obyekt unikal SHA-1 heşi ilə identifikasiya olunur. Faylın məzmunu commitlər arasında dəyişməyibsə, Git yeni obyekt yaratmır, mövcud olanı təkrar istifadə edir — bu yerə qənaət edir.
Git dörd növ obyektdən istifadə edir: blob (fayl məzmunu), tree (qovluq strukturu), commit (metadata ilə snapshot) və tag (commite adlandırılmış istinad). Bütün obyektlər .git/objects qovluğunda saxlanılır.
Git Internals məlumatlarına görə, Git-in obyekt modeli məlumatların bütövlüyünü təmin edir: fayl məzmununun hər hansı dəyişməsi yeni heşə gətirib çıxarır ki, bu da tarixçənin gizli dəyişdirilməsini qeyri-mümkün edir.
.git qovluğu — repozitoriyanın ürəyidir. O olmadan Git dəyişiklikləri izləyə bilməz, adi qovluq isə sadəcə fayllar dəsti olaraq qalır. Bu qovluğun strukturunu başa düşmək repozitoriya ilə bağlı problemlərin diaqnostikasına kömək edir.
HEAD faylı xüsusi diqqətə layiqdir. Normal vəziyyətdə o, budağa simvolik istinad ehtiva edir, məsələn ref: refs/heads/main. Detached HEAD vəziyyətində o, birbaşa commiti göstərir — bu o deməkdir ki, yeni commitlər heç bir budağa bağlı olmayacaq.
Git repozitoriyası ilə iş tərtibatçının hər gün yerinə yetirdiyi əsas əməliyyatlar dəstini əhatə edir. Hər bir əməliyyat repozitoriyanın vəziyyətini dəyişir, yeni obyektlər əlavə edir və ya istinadları yerdəyişdirir.
Push və pull əməliyyatları — uzaq serverə qoşulma tələb edən yeganə əməliyyatlardır. Bütün digər əməliyyatlar tamamilə yerli olaraq yerinə yetirilir ki, bu da böyük tarixçədə belə yüksək iş sürətini təmin edir.
Repozitoriyadakı hər bir fayl dörd vəziyyətdən keçir: untracked (izlənmir), modified (dəyişdirilib), staged (hazırlanıb) və committed (təsdiqlənib). Git yalnız git add vasitəsilə açıq şəkildə əlavə edilmiş və ya artıq commit tarixçəsində olan faylları izləyir.
Bu modeli başa düşmək Git ilə səmərəli işin açarıdır. Tərtibatçı commite yalnız dəyişdirilmiş faylların bir hissəsini seçərək hazırlaya bilər, aydın təsviri olan məntiqi tam commitlər yarada bilər.
Uzaq repozitoriyalar adətən veb-interfeys, giriş idarəetmə sistemi və birgə inkişaf üçün əlavə alətlər təmin edən ixtisaslaşmış platformalarda yerləşdirilir.
Platforma seçimi komandanın ölçüsündən, məxfilik tələblərindən və lazım olan inteqrasiyalardan asılıdır. Mobil tətbiq inkişafı üçün geniş icma dəstəyi və iOS və Android üçün CI/CD alətləri ilə inteqrasiyası səbəbindən tez-tez GitHub seçilir.
Praktik ssenarini nəzərdən keçirək: tərtibatçı mövcud repozitoriyanı klonlayır, yeni budaq yaradır, dəyişikliklər edir və onları serverə göndərir. Hər bir əmr repozitoriyanın müxtəlif komponentləri ilə işi nümayiş etdirir.
# Uzaq repozitoriyanın klonlanması
git clone https://github.com/user/mobile-app.git
# Layihə qovluğuna keçid
cd mobile-app
# Yeni feature budağının yaradılması və ona keçid
git checkout -b feature/auth
# Dəyişdirilmiş faylların statusunun yoxlanması
git status
# Bütün dəyişikliklərin staging area-ya əlavə edilməsi
git add .
# Təsvirlə commit-in yaradılması
git commit -m "Add authentication module"
# Dəyişikliklərin uzaq repozitoriyaya göndərilməsi
git push origin feature/auth
git status əmri — gündəlik işdə ən faydalılardan biridir. Hansı faylların dəyişdirildiyini, hansıların commite hazır olduğunu və hansıların ümumiyyətlə Git tərəfindən izlənmədiyini göstərir.
Repozitoriya tarixçəsinin təhlili üçün müxtəlif formatlaşdırma flagları ilə git log əmri istifadə olunur. O, commitlərin xronologiyasını, onların müəlliflərini, tarixlərini və SHA-1 identifikatorlarını göstərir.
# Budaq qrafikinin vizuallaşdırılması ilə tarixçəyə baxış
git log --oneline --graph --all
# Konkret commit-də dəyişikliklərə baxış
git show a1b2c3d
# Cari vəziyyətin son commit-lə müqayisəsi
git diff HEAD
# Konkret faylın tarixçəsinə baxış
git log --follow src/MainActivity.kt
--graph flagı budaqlanmaların ASCII-qrafikini göstərir ki, bu da çoxsaylı budaqlarda aktiv işi olan repozitoriyalarda xüsusilə faydalıdır. Tez-tez buraxılışları olan mobil layihələr üçün vizual qrafik inkişaf strukturunu tez qiymətləndirməyə kömək edir.
Tez-tez verilən suallar
Repozitoriya — bu, dəyişiklik tarixçəsi olan kodun texniki anbarıdır. Layihə — daha geniş anlayışdır, repozitoriya, tapşırıqların idarə edilməsi sistemi, sənədlər və inkişaf proseslərini əhatə edir. Bir layihədə bir neçə repozitoriya ola bilər.
New düyməsini sıxaraq GitHub veb-interfeysi vasitəsilə yeni repozitoriya yaradın. Ad, təsvir və giriş səviyyəsini göstərin. Sonra repozitoriyanı lokal maşına klonlayın və ya mövcud yerli repozitoriyanı git remote add origin vasitəsilə birləşdirin.
Uzaq repozitoriya serverdən silinibsə, lakin ən azı bir tərtibatçının yerli surəti varsa, repozitoriyanı bərpa etmək olar. Yeni uzaq repozitoriya yaratmaq və bütün tarixçə ilə yerli surətdən git push --force yerinə yetirmək kifayətdir.
Fork — bu, başqasının repozitoriyasının sizin hesabınızdakı surətidir. Siz tam tarixçə surətini alırsınız və orijinala təsir etmədən istənilən dəyişiklik edə bilərsiniz. Fork-lar Pull Request vasitəsilə open-source layihələrində iştirak etmək üçün istifadə olunur.
Obyektləri sıxışdırmaq və əlçatmaz məlumatları silmək üçün git gc istifadə edin. git filter-branch və ya git filter-repo vasitəsilə böyük faylları tarixçədən silin. İkili faylları olan layihələr üçün Git LFS (Large File Storage) nəzərdən keçirin.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun