Git — bu nədir, iş prinsipləri və əmrləri

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

Git — 2005-ci ildə Linux nüvəsinin inkişafı üçün Linus Torvalds tərəfindən yaradılmış açıq mənbəli paylanmış versiya idarəetmə sistemidir. SVN kimi mərkəzləşdirilmiş sistemlərdən fərqli olaraq, Git hər bir tərtibatçı cihazında repozitorinin tam surətini saxlayır ki, bu da serverə daimi qoşulma olmadan işləməyə imkan verir. Git SCM, 2024 məlumatlarına görə, Git bütün kommersiya proqram təminatı layihələrinin 90%-dən çoxunda istifadə olunur.

Əsas məqamlar

  • Git — hər bir tərtibatçı kompüterində dəyişikliklərin tam tarixçəsi olan paylanmış VCS.
  • Commitlər dəyişiklikləri izləmək üçün unikal SHA-1 heşi ilə fayl vəziyyətinin şəkillərini yaradır.
  • Filiallar Git-də funksiyaların inkişafını təcrid edir və münaqişəsiz paralel işə imkan verir.
  • Merge və Rebase — commit tarixçəsinə fərqli yanaşmalarla dəyişikliklərin inteqrasiyasının iki üsulu.
  • GitHub, GitLab və Bitbucket — Git-repozitoriləri üzərində UI və CI/CD əlavə edən veb platformalar.

Git nədir?

Git — fayllardakı dəyişiklikləri izləyən və bir neçə tərtibatçıya eyni vaxtda bir layihə üzərində işləməyə imkan verən paylanmış versiya idarəetmə sistemidir (VCS). Mərkəzləşdirilmiş sistemlərdən fərqli olaraq, Git-də hər bir tərtibatçı dəyişikliklərin bütün tarixçəsi daxil olmaqla repozitorinin tam surətinə malikdir ki, bu da sistemi məlumat itkisinə qarşı davamlı edir və mərkəzi serverə daimi qoşulma tələb etmir.

Git-in tarixi 2005-ci ildə, BitKeeper şirkəti Linux nüvəsi tərtibatçıları üçün öz sisteminə pulsuz lisenziyanı ləğv etdikdən sonra Linus Torvalds-ın yeni VCS yaratması ilə başladı. Məqsədlər bunlar idi: sürət, arxitekturanın sadəliyi, filiallar vasitəsilə qeyri-xətti inkişafın dəstəklənməsi və tam paylanmışlıq. 3 ay ərzində Torvalds Git-in nüvəsini yazdı və bir ildən sonra layihə Junio Hamanonun rəhbərliyi altında özünüidarəyə keçdi.

Stack Overflow sorğusuna (2024) görə, peşəkar tərtibatçıların 93,9%-i Git-dən istifadə edir ki, bu da onu sənayedə dominant versiya idarəetmə sisteminə çevirir. Ən yaxın rəqib — Subversion (SVN) — layihələrin yalnız 5,2%-də, əsasən mərkəzləşdirilmiş prosesləri olan böyük korporativ mühitlərdə istifadə olunur.

Git necə işləyir: repozitori və commitlər

Git repozitorisi — Git-in bütün fayllardakı dəyişiklikləri izlədiyi qovluqdur. Qovluğun içərisində sistemin bütün obyektlərinin saxlandığı gizli .git qovluğu yerləşir: commitlər, ağaclar, bloblar və istinadlar. Tərtibatçı commit yaratdıqda, Git faylları tamamilə kopyalamır — o, vəziyyətin şəklini (snapshot) yaradır və ona istinad saxlayır.

Hər bir commit ehtiva edir: unikal SHA-1 heşi (40 simvol), əvvəlki commitə istinad (parent), müəllif, tarix, commit mesajı və commit anında faylların vəziyyətini təsvir edən ağaca (tree) istinad. Commitlər zənciri istiqamətlənmiş asiklik qrafik təşkil edir, burada hər bir commit bir və ya bir neçə valideyni göstərir.

bash
# Repozitorinin inisiallaşdırılması
git init my-project
cd my-project

# Commitin yaradılması
echo "Hello, Git" > README.md
git add README.md
git commit -m "Initial commit"

# Tarixçəyə baxış
git log --oneline --graph --all

Git üç əsas sahədən istifadə edir: working directory (diskdəki fayllar), staging area (hazırlanmış faylların düşdüyü indeks) və repository (commit tarixçəsi). git add əmri dəyişiklikləri işçi qovluqdan staging-ə köçürür, git commit isə staging-in məzmununu repozitoridə təsbit edir. Bu bölgü tərtibatçıya hər bir düzəlişi ayrıca təsbit etmədən dəyişikliklər dəstindən mənalı commit toplamağa imkan verir.

Git-in əsas əmrləri

Git-in əsas əmrləri tərtibatçının gündəlik əməliyyatlarının 90%-ni əhatə edir. git clone əmri uzaq repozitorinin yerli surətini yaradır, git pull serverdən dəyişiklikləri götürüb cari filialla birləşdirir, git push isə yerli commitləri serverə göndərir. Bu üç əmr Git ilə işin əsas dövrünü təşkil edir.

Vəziyyətə baxmaq üçün git status istifadə olunur — o, hansı faylların dəyişdirildiyini, hansının staging-ə əlavə edildiyini və hansının izlənmədiyini göstərir. git diff staging-ə əlavə etməzdən əvvəl fayllardakı konkret dəyişiklikləri göstərir. Aşağıda ən çox istifadə olunan əmrlərin cədvəli verilmişdir:

ƏmrFəaliyyətNümunə
git cloneUzaq repozitorini kopyalayırgit clone https://example.com/repo
git addFaylları staging-ə əlavə edirgit add src/main.kt
git commitDəyişiklikləri tarixçədə təsbit edirgit commit -m "Fix login bug"
git pushCommitləri serverə göndərirgit push origin main
git pullServerdən dəyişiklikləri götürürgit pull origin feature

Dəyişiklikləri ləğv etmək üçün Git bir neçə variant təqdim edir. git reset filial göstəricisini verilmiş commitə köçürür və staging və ya işçi qovluğu sıfırlaya bilər. git revert göstərilən commitin dəyişikliklərini ləğv edən yeni commit yaradır — bu, ümumi filiallar üçün təhlükəsiz ləğv üsuludur, çünki tarixçə yenidən yazılmır.

Git-də filiallar: main, feature və release

Git-də filiallar — müəyyən bir commitə yüngül daşınan göstəricilərdir. Yeni filial yaratmaq faylları kopyalamır, sadəcə yeni göstərici yaradır ki, bu da filiallanmanı praktiki olaraq ani edir. main filialı (əvvəllər master) — layihənin sabit, buraxılışa hazır kodu olan əsas filialıdır.

Standart təcrübə Git Flow və ya GitHub Flow istifadə etməkdir. Git Flow-da filiallardan istifadə olunur: main (buraxılış kodu), develop (inteqrasiya filialı), feature/* (yeni funksiyalar), release/* (buraxılışların hazırlanması) və hotfix/* (təcili düzəlişlər). GitHub Flow daha sadədir: yalnız main və feature-filiallar, bütün dəyişikliklər Pull Request vasitəsilə çatdırılır.

bash
# Filialın yaradılması və keçidi
git branch feature-auth
git checkout feature-auth
# və ya bir əmrlə:
git checkout -b feature-auth

# Filialların siyahısı
git branch --list
git branch -a  # bütün filiallar, silinmişlər daxil olmaqla

# Filialın silinməsi
git branch -d feature-auth

Git filiallanmasının vacib xüsusiyyəti cherry-pick imkanıdır: ayrıca commitin bir filialdan digərinə git cherry-pick <hash> əmri ilə köçürülməsi. Bu, bütün filialı birləşdirmədən feature-filialdan release-ə səhv düzəlişini köçürmək lazım olduqda faydalıdır. Git həmçinin commitləri yapışdırmaq, sıralamaq və redaktə etmək üçün rebase və interaktiv rebase (git rebase -i) dəstəkləyir.

Birləşdirmə: Merge və Rebase

Merge (birləşdirmə) iki valideyni olan xüsusi merge-commit yaradır. Bu commit iki filialın birləşmə faktını qeyd edir və tam tarixçəni saxlayır — birləşmənin harada və nə vaxt baş verdiyi görünür. Merge tarixçəni yaradıldığı formada saxlayır ki, bu da auditi asanlaşdırır, lakin commit qrafikini daha mürəkkəb edir.

Rebase (yenidən əsaslandırma) merge-commit yaratmaq əvəzinə cari filialın commitlərini hədəf filialın təpəsinə köçürür. Tarixçə xətti olur — inkişafın ardıcıl aparıldığı təəssüratı yaranır. Bununla belə, rebase tarixçəni yenidən yazır, commitlərin SHA-1 heşlərini dəyişdirir ki, bu da onu digər tərtibatçıların girişi olan ümumi filiallar üçün təhlükəli edir.

Seçim üçün tövsiyə: tarixçəni digər tərtibatçıların gördüyü ictimai filiallar üçün merge (feature → develop), Pull Request yaratmazdan əvvəl main-dan təzə dəyişiklikləri öz feature-filialınıza tətbiq etmək lazım olduqda isə rebase istifadə edin. Qayda sadədir: əgər commit artıq serverə göndərilibsə — onu rebase etməyin.

Münaqişələrin həlli

Birləşdirmə münaqişəsi Git bir fayldakı dəyişiklikləri avtomatik birləşdirə bilmədikdə yaranır. Git münaqişəli hissələri faylda xüsusi markerlərlə qeyd edir: <<<<<<< (bizim dəyişikliklər), ======= (ayırıcı), >>>>>>> (onların dəyişiklikləri). Tərtibatçı faylı əl ilə redaktə edir, lazımi variantı seçir və ya hər ikisini birləşdirir və birləşdirməni commitlə tamamlayır.

Uzaq repozitorilərlə iş

Uzaq repozitori (remote) — serverdə yerləşən Git repozitorisinin surətidir. GitHub, GitLab və Bitbucket uzaq repozitorilərin hostinqi üçün ən populyar platformalardır. Onlar kodun nəzərdən keçirilməsi, girişin idarə edilməsi, kod icmalı və CI/CD sistemləri ilə inteqrasiya üçün veb interfeys təqdim edir.

Git-də bir layihə üçün bir neçə uzaq repozitori konfiqurasiya etmək olar. Varsayılan olaraq əsas remote origin adlanır. git remote add əmri yeni remote əlavə edir, git fetch birləşdirmədən dəyişiklikləri götürür, git pull isə git fetch + git merge üçün qısaltmadır. Pull Request vasitəsilə kodla işləmək üçün tərtibatçı repozitorinin fork-unu yaradır, onu klonlayır, feature-filialda işləyir və orijinal repozitoriyə birləşdirmə sorğusu göndərir.

bash
# Uzaq repozitorinin əlavə edilməsi
git remote add origin https://github.com/user/repo.git

# Uzaq repozitorilərə baxış
git remote -v

# Filialın serverə göndərilməsi
git push -u origin feature-auth

# Uzaq filialdan dəyişikliklərin götürülməsi
git pull origin main

Uzaq repozitorilər buraxılış versiyalarının markalanması üçün teqləməni dəstəkləyir. Teqlər yüngül (sadəcə commitə göstərici) və anotasiyalı (metadata: müəllif, tarix, mesaj) ola bilər. Anotasiyalı teqlərin buraxılış versiyaları üçün istifadəsi tövsiyə olunur, çünki onlar versiya haqqında tam məlumat ötürür və müəllifliyin doğrulanması üçün GPG açarı ilə imzalana bilər.

Paralel iş üçün Git Worktree

Git Worktree onlar arasında keçid etmədən müxtəlif qovluqlarda eyni anda bir neçə filialla işləməyə imkan verir. git worktree add ../feature-auth feature-auth əmri feature-auth adlı yeni işçi qovluğu yaradır, burada əsas qovluqda filialı dəyişmədən kod yazmaq olar. Worktree əsas qovluq uzunmüddətli inkişafla məşğul olduqda release filialında sürətli düzəlişlər üçün faydalıdır.

Asılılıqlar üçün Git Submodules

Git Submodules — bir Git repozitorisinin digərinə daxil edilməsi mexanizmidir. Submodule xarici repozitorinin sabit commitinə istinad saxlayır ki, bu da qurulmanın təkrarlanmasını təmin edir. git submodule add https://github.com/example/lib.git əmri xarici kitabxananı alt modul kimi əlavə edir. Alt modulları olan layihəni klonlayarkən bütün asılılıqları yükləmək üçün git submodule update --init --recursive yerinə yetirilməlidir.

Tez-tez verilən suallar

Git SVN-dən nə ilə fərqlənir?

Git — yerli tarixçəsi və oflayn işləmək imkanı olan paylanmış VCS. SVN — fayllara baxmaqdan başqa bütün əməliyyatlar üçün serverə daimi qoşulma tələb edən mərkəzləşdirilmiş sistem.

Son commiti necə ləğv etmək olar?

Təhlükəsiz ləğv üçün git revert HEAD istifadə edin (yeni commit yaradılır). Commit hələ serverə göndərilməyibsə, git reset --soft HEAD~1 istifadə edə bilərsiniz.

.gitignore nədir və nə üçün lazımdır?

.gitignore — Git-in görməməli olduğu fayl və qovluq nümunələrinin siyahısı olan fayldır. Müvəqqəti faylları, qurulmaları və IDE konfiqurasiyalarını repozitoridən xaric etmək üçün istifadə olunur.

git pull və git fetch arasında fərq nədir?

git fetch dəyişiklikləri serverdən endirir, lakin onları cari filialla birləşdirmir. git pull fetch edir və dərhal merge yerinə yetirir. Nəzarət üçün fetch + diff-ə baxma, sonra əl ilə merge istifadə edin.

Son commitin mesajını necə düzəltmək olar?

git commit --amend istifadə edin — bu əmr commit mesajını dəyişdirmək üçün redaktoru açır. Commit artıq serverdədirsə, git push --force tələb olunacaq ki, bu da ümumi filiallar üçün təhlükəlidir.

Nəticə

  • Git — Linus Torvalds-dan proqram təminatının hazırlanmasında standarta çevrilmiş paylanmış versiya idarəetmə sistemi.
  • Commitlər SHA-1 heşi və əvvəlki commitə istinadla fayl vəziyyətinin şəkillərini təsbit edir.
  • Filiallar — commitlərə yüngül göstəricilər, funksiyaların paralel inkişafına imkan verir.
  • Merge iki valideynli merge-commit yaradır, Rebase — xətti qrafik üçün tarixçəni yenidən yazır.
  • Uzaq repozitorilər (origin) push və pull vasitəsilə tərtibatçılar arasında kodu sinxronlaşdırır.
  • GitHub, GitLab, Bitbucket Git üzərində veb interfeys, kod icmalı və CI/CD əlavə edir.
  • Başlayın repozitorini klonlamaqla və üç əmri mənimsəməklə: commit, push, pull — onlar əsas iş dövrünü əhatə edir.

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