Git-də Repository: nədir, hansı növləri var və necə işləyir

Müəllif: IT Sectr Dərc olunub: 2026-05-09 Oxuma vaxtı: 8 dəq

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, bütün dəyişiklik tarixçəsinin saxlandığı .git xidmət qovluğu olan layihə qovluğudur.
  • Yerli repozitoriya tərtibatçının kompüterində yerləşir və internetə qoşulmadan kodla işləməyə imkan verir.
  • Uzaq repozitoriya GitHub, GitLab və ya Bitbucket serverində yerləşdirilir və iştirakçılar arasında sinxronizasiya üçün xidmət edir.
  • Git məlumatları faylların snapshot-ları kimi saxlayır, dəyişikliklər siyahısı kimi yox, bu da budaqlama və birləşdirmə əməliyyatlarını sürətləndirir.
  • Versiya nəzarət sistemi bir layihə üzərində eyni vaxtda işləmə problemini həll edir, kod birləşdirilməsi zamanı konfliktlərin qarşısını alır.

Git-də repozitoriya nədir

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 və uzaq repozitoriya

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.

Yerli və uzaq repozitoriya arasındakı fərqlər

XüsusiyyətYerliUzaq
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
SinxronizasiyaUzaq repozitoriyaya push/pullYerli repozitoriyalardan push qəbul edir
Ehtiyat nüsxəMəlumat itkisindən qorunmurServerdə backup-larla saxlanılır

Git repozitoriyada məlumatları necə saxlayı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ğunun strukturu

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

  • objects/ — repozitoriyanın bütün obyektləri: blobs, trees, commits, tags. Sıxılmış formada saxlanılır.
  • refs/ — commitlərə istinadlar: heads (budaqlar), tags (etiketlər), remotes (uzaq budaqlar).
  • HEAD — cari aktiv budağı və ya commiti göstərən fayl.
  • config — repozitoriya parametrləri: uzaq URL, istifadəçi adı, e-poçt və digər parametrlər.
  • index — staging area (indeks), burada Git commite hazırlanmış fayllar haqqında məlumat saxlayır.
  • logs/ — istinad yeniləmə jurnalları (reflog), HEAD və budaqların hərəkət tarixçəsini saxlayır.

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.

Repozitoriya ilə əsas əməliyyatlar

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.

  • git init — cari qovluqda yeni boş repozitoriya yaradır. Git ilkin strukturu ilə .git qovluğu yaradır.
  • git clone — mövcud uzaq repozitoriyanı bütün commit tarixçəsi ilə birlikdə lokal maşına kopyalayır.
  • git add — fayl dəyişikliklərini staging area-ya (indeks) əlavə edir, onları commite hazırlayır.
  • git commit — indeksdəki məlumatlar əsasında layihənin snapshot-nı yaradır və onu yeni commit obyekti kimi saxlayır.
  • git push — yeni commitləri yerli repozitoriyadan uzaq repozitoriyaya göndərir, serverdə budaqları yeniləyir.
  • git pull — uzaq repozitoriyadan yeni commitləri götürür və onları cari yerli budaqla birləşdirir.

Pushpull ə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.

Repozitoriyada faylın həyat dövrü

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.

  • GitHub — 100 milyondan çox repozitoriyası olan ən böyük platforma. Actions, Pull Requests, Issues və Wiki təmin edir. Açıq layihələr üçün pulsuzdur.
  • GitLab — inteqrasiya olunmuş CI/CD, Container Registry və daxili DevOps pipeline ilə platforma. SaaS və self-hosted versiyada mövcuddur.
  • Bitbucket — Atlassian-dan Jira və Trello inteqrasiyası ilə həll. Çevik giriş parametrləri sayəsində korporativ mühitdə populyardır.

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.

Repozitoriya ilə iş üçün əmr nümunələri

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.

bash
# 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.

Commit tarixçəsinə baxmaq

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.

bash
# 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 layihədən nə ilə fərqlənir?

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.

GitHub-da repozitoriyanı necə yaratmaq olar?

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.

Silinmiş repozitoriyanı bərpa etmək olarmı?

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.

Repozitoriyanın fork-u nədir?

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.

Repozitoriyanın ölçüsünü necə azaltmaq olar?

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ə

  • Git repozitoriyası — bu, hər commit-in müəyyən bir zamanda layihənin bütün fayllarının snapshot-u olduğu, tam dəyişiklik tarixçəsi olan kod anbarıdır.
  • Yerli repozitoriya tərtibatçının kompüterində saxlanılır və şəbəkəyə qoşulmadan Git əməliyyatlarının tam dəstini dəstəkləyir.
  • Uzaq repozitoriya push və pull vasitəsilə komandanın işini sinxronlaşdırır, bütün iştirakçılar üçün vahid həqiqət mənbəyini təmin edir.
  • .git qovluğu bütün xidmət məlumatlarını ehtiva edir: obyektlər, budaq istinadları, konfiqurasiya və reflog əməliyyat jurnalı.
  • GitHub, GitLab və Bitbucket — əlavə CI/CD alətləri ilə uzaq repozitoriyaların saxlanması üçün əsas platformalar.
  • Git obyekt modeli hər bir obyekti identifikasiya etmək üçün SHA-1 heşlərindən istifadə edir ki, bu da repozitoriya məlumatlarının bütövlüyünü təmin edir.
  • Tövsiyə: hər gün ən azı bir dəfə commit edin və hər tamamlanmış iş mərhələsindən sonra uzaq repozitoriya ilə sinxronizasiya edin.

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.

Layihəni müzakirə et

Həm də oxuyun