Jet Academy Logo
Məzmunə keç / Skip to content

Git nədir?

Git — proqram təminatı layihələrində fayllarda və kodda edilən dəyişiklikləri izləmək, müxtəlif versiyaları saxlamaq və proqramçıların eyni layihə üzərində birlikdə işləməsini asanlaşdırmaq üçün istifadə olunan paylanmış versiya nəzarət sistemidir. İngilis dilində bu anlayış Distributed Version Control System — DVCS adlanır. Sadə dillə desək, Git proqramçıya layihədə hansı dəyişikliklərin edildiyini, həmin dəyişikliklərin nə vaxt və kim tərəfindən edildiyini izləməyə imkan verir. Məsələn, bir veb sayt hazırladığınızı düşünün. Bu gün login səhifəsi əlavə etdiniz, sabah dizaynı dəyişdirdiniz, bir neçə gün sonra isə həmin dəyişikliklərdən birinin problem yaratdığını gördünüz. Git vasitəsilə layihənin dəyişiklik tarixçəsinə baxmaq, hansı kodun nə vaxt dəyişdirildiyini müəyyən etmək və lazım gəldikdə əvvəlki vəziyyətlə müqayisə aparmaq mümkündür. Git Frontend, Backend, Full-Stack, mobil proqramlaşdırma, DevOps və digər proqram təminatı istiqamətlərində geniş istifadə olunur.

Git nə üçün istifadə olunur?

Git-in əsas məqsədi proqram layihəsinin dəyişiklik tarixçəsini idarə etməkdir.

Git vasitəsilə:

  • kodda edilən dəyişiklikləri izləmək;
  • layihənin müxtəlif versiyalarını saxlamaq;
  • əvvəlki dəyişiklikləri araşdırmaq;
  • yeni funksiyalar üzərində ayrıca işləmək;
  • bir neçə proqramçının eyni layihədə işləməsini təşkil etmək;
  • müxtəlif kod dəyişikliklərini birləşdirmək;
  • layihəni GitHub kimi remote platformalarla sinxronlaşdırmaq mümkündür.

Məsələn, üç proqramçı eyni layihə üzərində işləyə bilər. Bir proqramçı login sistemini, digəri məhsul səhifəsini, üçüncüsü isə ödəniş funksiyasını hazırlaya bilər. Git bu dəyişikliklərin ayrıca hazırlanmasına və sonradan əsas layihədə birləşdirilməsinə imkan verir.

Version Control nədir?

Version Control — fayllarda və proqram kodunda zaman ərzində edilən dəyişikliklərin izlənilməsi sistemidir.

Məsələn, layihənin müxtəlif mərhələlərini belə təsəvvür etmək olar:

Version 1

↓

Login əlavə edildi

↓

Version 2

↓

Məhsul səhifəsi əlavə edildi

↓

Version 3

↓

Ödəniş sistemi əlavə edildi

Git bu dəyişiklikləri ayrı-ayrı versiyalar şəklində izləməyə kömək edir. Beləliklə proqramçı sadəcə layihənin hazırkı vəziyyətini deyil, onun necə inkişaf etdiyini də görə bilir. Version Control xüsusilə komanda şəklində proqram təminatı hazırlanarkən vacibdir.

Distributed Version Control nədir?

Git Distributed Version Control System-dir. Bu o deməkdir ki, proqramçı repository-nin yalnız son versiyasını deyil, Git tarixçəsinin lokal surətini də öz kompüterində saxlaya bilər.

Məsələn:

Developer A

↓

Local Repository


Developer B

↓

Local Repository


Developer C

↓

Local Repository


↕

Remote Repository

Proqramçılar lokal repository-də işləyə, commit yarada və daha sonra dəyişiklikləri remote repository ilə paylaşa bilərlər. Bu yanaşma mərkəzləşdirilmiş versiya nəzarət sistemlərindən fərqlənir.

Repository nədir?

Repository və ya qısaca repo Git tərəfindən idarə olunan layihə və onun dəyişiklik tarixçəsidir. Repository daxilində proqram kodu, şəkillər, konfiqurasiya faylları, sənədlər və layihəyə aid digər fayllar ola bilər.

Git repository yaratmaq üçün:

git init

əmrindən istifadə etmək mümkündür. Bu əmr mövcud qovluğu Git repository-yə çevirir. Başqa mövcud repository-ni kompüterə götürmək üçün isə git clone istifadə edilə bilər.

Repository iki əsas formada qarşımıza çıxa bilər:

Local Repository — proqramçının kompüterində yerləşir.

Remote Repository — GitHub, GitLab və digər server və ya platformalarda yerləşə bilər.

Git necə işləyir?

Git ilə işləyərkən dəyişikliklər bir neçə mərhələdən keçir.

Sadələşdirilmiş proses belə göstərilə bilər:

Working Directory

↓

Staging Area

↓

Local Repository

↓

Remote Repository

Working Directory layihə faylları üzərində hazırda işlədiyiniz sahədir. Staging Area növbəti commit-ə hansı dəyişikliklərin daxil ediləcəyini seçdiyiniz mərhələdir. Local Repository yaradılmış commit-lərin və layihə tarixçəsinin saxlandığı lokal Git repository-dir. Remote Repository isə GitHub kimi uzaq serverdə yerləşən repository ola bilər. Bu strukturu başa düşmək Git əmrlərinin məntiqini öyrənməyi xeyli asanlaşdırır.

git init nədir?

git init yeni Git repository yaratmaq üçün istifadə olunur.

Məsələn:

git init

əmrini layihə qovluğunda işlətdikdə Git həmin qovluğu izləməyə hazır vəziyyətə gətirir. Bu zaman .git adlı xüsusi qovluq yaradılır.

.git qovluğu Git repository-nin tarixçəsi, branch-ləri, commit-ləri və digər metadata məlumatlarını saxlayır. Bu qovluğu təsadüfən silmək repository-nin Git tarixçəsini itirməyə səbəb ola bilər.

git status nədir?

git status repository-nin hazırkı vəziyyətini göstərir.

Məsələn:

git status

əmri vasitəsilə hansı faylların dəyişdirildiyini, hansı faylların staging area-ya əlavə olunduğunu və hansı faylların Git tərəfindən hələ izlənmədiyini görmək mümkündür. Git öyrənməyə başlayanlar üçün ən faydalı əmrlərdən biri git status hesab olunur. Çünki hər mərhələdə repository-də nə baş verdiyini anlamağa kömək edir.

git add nədir?

Faylda dəyişiklik etdikdən sonra həmin dəyişiklik avtomatik olaraq commit-ə daxil edilmir. Əvvəlcə dəyişiklik staging area-ya əlavə olunmalıdır.

Məsələn:

git add index.html

yalnız index.html faylındakı dəyişiklikləri staging area-ya əlavə edir. Bütün uyğun dəyişiklikləri əlavə etmək üçün:

git add .

istifadə edilə bilər. Beləliklə proqramçı növbəti commit-ə hansı dəyişikliklərin daxil olacağını idarə edə bilir.

Commit nədir?

Commit layihədə müəyyən mərhələdə edilmiş dəyişikliklərin Git tarixçəsində qeyd olunmasıdır. Commit-i layihənin tarixçəsindəki yoxlama nöqtəsi kimi düşünmək olar.

Məsələn:

git commit -m "Add login page"

Bu əmrlə staging area-da olan dəyişikliklər commit şəklində qeyd olunur.

Daha sonra başqa dəyişiklik edilə bilər:

git commit -m "Fix login validation"

Beləliklə layihədəki dəyişikliklərin tarixçəsi formalaşır. Yaxşı commit message qısa və aydın şəkildə hansı dəyişiklik edildiyini göstərməlidir.

git log nədir?

git log repository-də yaradılmış commit tarixçəsini göstərir.

Məsələn:

git log

vasitəsilə commit-lərin müəllifini, tarixini, identifikatorunu və commit message-lərini görmək mümkündür.

Daha qısa görünüş üçün:

git log --oneline

istifadə edilə bilər. Bu, layihənin inkişaf tarixçəsini daha rahat izləməyə imkan verir.

Branch nədir?

Branch layihənin əsas koduna birbaşa müdaxilə etmədən ayrıca dəyişikliklər üzərində işləməyə imkan verən inkişaf xəttidir.

Məsələn, əsas branch:

main

adlana bilər.

Yeni login funksiyası üçün:

feature/login

adlı ayrıca branch yaratmaq mümkündür. Beləliklə proqramçı yeni funksiyanı hazırlayarkən əsas layihənin işlək versiyasını dəyişdirmədən işləyə bilər.

Yeni branch yaratmaq üçün:

git branch feature/login

istifadə edilə bilər.

Branch dəyişmək üçün müasir Git-də:

git switch feature/login

əmrindən istifadə etmək mümkündür.

Yeni branch yaradıb dərhal ona keçmək üçün:

git switch -c feature/login

yazmaq olar.

main və master nədir?

Git repository-nin əsas branch-i müxtəlif adlara malik ola bilər.

Əvvəllər bir çox repository-də əsas branch:

master

adlanırdı.

Bu gün yeni layihələrdə:

main

adı geniş istifadə olunur. Lakin Git-də əsas branch-in adı məcburi olaraq main və ya master olmalı deyil. Layihənin konfiqurasiyasına əsasən başqa ad da seçilə bilər.

Merge nədir?

Merge bir branch-də edilmiş dəyişikliklərin başqa branch-ə birləşdirilməsi prosesidir.

Məsələn:

main

│

├─────────────┐

│ │

│ feature/login

│ │

└──── merge ←─┘

feature/login branch-ində login sistemi tamamlandıqdan sonra həmin dəyişiklikləri main branch-ə merge etmək mümkündür. Bu proses komandaların müxtəlif funksiyalar üzərində paralel işləməsinə imkan verir.

Merge Conflict nədir?

Bəzən iki branch-də eyni faylın eyni hissəsi fərqli şəkildə dəyişdirilir. Git bu dəyişikliklərin hansını avtomatik seçəcəyini müəyyən edə bilmədikdə Merge Conflict yaranır.

Məsələn:

Developer A:

Button color → blue

Developer B:

Button color → green

Eyni kod hissəsi fərqli şəkildə dəyişdirildiyi üçün Git proqramçıdan düzgün versiyanı seçməyi tələb edə bilər. Merge Conflict proqramlaşdırma komandalarında normal prosesdir və düzgün həll edilməlidir.

Git və GitHub arasında fərq nədir?

Git və GitHub eyni anlayış deyil.

Git — versiya nəzarət sistemidir.

GitHub — Git repository-lərinin internet üzərində saxlanılması, paylaşılması və komanda ilə idarə olunması üçün istifadə olunan platformadır. Git kompüterinizdə GitHub olmadan işləyə bilər.

Məsələn, internet olmadan belə:

git init

git add .

git commit -m "Initial commit"

əmrləri ilə lokal repository üzərində işləmək mümkündür. GitHub isə remote repository, Pull Request, Issues, Actions və digər əməkdaşlıq imkanlarını təqdim edir.

Sadə müqayisə:

Git → dəyişiklik tarixçəsini idarə edir

GitHub → Git repository-lərinin paylaşılması və komanda işi üçün platformadır

Remote Repository nədir?

Remote Repository lokal kompüterdən kənarda yerləşən Git repository-dir. Bu repository GitHub, GitLab və ya başqa serverdə yerləşə bilər.

Remote-ların siyahısını görmək üçün:

git remote -v

istifadə olunur.

Yeni remote əlavə etmək üçün:

git remote add origin https://github.com/user/project.git

yazmaq mümkündür. Burada origin remote repository üçün istifadə edilən standart adlardan biridir.

git clone nədir?

git clone mövcud Git repository-nin surətini kompüterə götürmək üçün istifadə olunur.

Məsələn:

git clone https://github.com/user/project.git

Bu əmrlə layihə faylları ilə yanaşı Git repository tarixçəsi də lokal kompüterə götürülür. Clone xüsusilə mövcud komandaya qoşulduqda və ya açıq mənbəli layihə üzərində işləməyə başladıqda istifadə olunur.

git push nədir?

git push lokal repository-də yaradılmış commit-ləri remote repository-yə göndərmək üçün istifadə olunur.

Məsələn:

git push origin main

burada lokal main branch-in commit-ləri origin remote-a göndərilir. Push etdikdən sonra digər komanda üzvləri həmin dəyişiklikləri remote repository-də görə bilirlər.

git fetch nədir?

git fetch remote repository-də olan yeni məlumatları lokal Git repository-yə gətirir, lakin onları avtomatik olaraq hazırkı branch-ə birləşdirmir.

Məsələn:

git fetch origin

remote repository-dəki yeni branch və commit məlumatlarını əldə edə bilər. Bu əmrin üstünlüyü odur ki, proqramçı remote dəyişiklikləri əvvəlcə yoxlayıb, sonra onları öz branch-i ilə necə birləşdirəcəyinə qərar verə bilər.

git pull nədir?

git pull remote repository-dəki dəyişiklikləri götürərək lokal branch-i yeniləmək üçün istifadə olunur. Sadələşdirilmiş formada git pull adətən remote dəyişiklikləri fetch edir və sonra onları mövcud branch ilə inteqrasiya edir.

Məsələn:

git pull origin main

komandadakı digər proqramçıların main branch-ə göndərdiyi yeni dəyişiklikləri lokal layihəyə gətirə bilər.

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

git fetch remote dəyişiklikləri götürür, lakin onları avtomatik olaraq hazırkı branch-ə inteqrasiya etmir.

git pull isə dəyişiklikləri götürür və sonra onları lokal branch ilə inteqrasiya etməyə çalışır.

Sadə müqayisə:

git fetch → məlumatı gətir, əvvəlcə yoxla

git pull → məlumatı gətir və lokal branch-i yenilə

Komanda ilə işləyərkən hər iki əmrin fərqini başa düşmək vacibdir.

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

git push dəyişiklikləri lokal repository-dən remote repository-yə göndərir.

git pull isə remote repository-dəki dəyişiklikləri lokal layihəyə gətirir.

Sadə istiqamət:

Local Repository

|

| git push

↓

Remote Repository

|

| git pull

↓

Local Repository

Bu əmrlər proqramçının lokal işi ilə komandanın paylaşdığı remote repository arasında sinxronizasiya yaratmağa kömək edir.

.gitignore nədir?

.gitignore Git tərəfindən izlənməməli olan fayl və qovluqları müəyyən edən xüsusi fayldır.

Məsələn:

node_modules/

.env

dist/

.gitignore daxilində qeyd edilə bilər.

node_modules kimi böyük dependency qovluqlarını repository-də saxlamaq adətən lazım deyil.

.env faylında isə API key, database password və digər məxfi məlumatlar ola bilər. Belə məlumatların public repository-yə göndərilməməsi vacibdir.

HEAD nədir?

Git-də HEAD hazırda üzərində işlədiyiniz commit və ya branch mövqeyinə istinad edən xüsusi göstəricidir. Əksər hallarda HEAD hazırkı branch-in son commit-inə işarə edir.

Məsələn, main branch-də işləyirsinizsə:

HEAD → main → latest commit

kimi düşünmək mümkündür. HEAD anlayışı checkout, reset, rebase və Git tarixçəsi ilə işləyərkən daha çox əhəmiyyət qazanır.

git diff nədir?

git diff dəyişikliklər arasındakı fərqi göstərmək üçün istifadə olunur.

Məsələn:

git diff

commit edilməmiş dəyişikliklərin fərqini göstərməyə kömək edə bilər. Bu əmrlə hansı sətirlərin əlavə olunduğunu, silindiyini və ya dəyişdirildiyini görmək mümkündür. Kod dəyişikliklərini commit etməzdən əvvəl git diff ilə yoxlamaq yaxşı praktikadır.

Git revert və reset arasında fərq nədir?

Git-də əvvəlki dəyişikliklərlə işləmək üçün müxtəlif mexanizmlər mövcuddur.

git revert müəyyən commit-in dəyişikliklərini geri alan yeni commit yaradır. Bu yanaşma paylaşılmış repository tarixçəsində çox vaxt daha təhlükəsizdir, çünki mövcud tarixçə yenidən yazılmır.

git reset isə branch-in və müəyyən hallarda staging/working tree vəziyyətinin hansı commit-ə işarə etdiyini dəyişdirə bilər.

reset, xüsusilə --hard ilə istifadə edildikdə dəyişikliklərin itirilməsinə səbəb ola bilər. Buna görə bu əmrləri istifadə etməzdən əvvəl onların repository tarixçəsinə təsirini başa düşmək vacibdir.

Git rebase nədir?

Rebase bir branch-dəki commit-ləri başqa base üzərində yenidən tətbiq etməyə imkan verən Git əməliyyatıdır. Məsələn, feature branch əsas main branch-dən geri qalıbsa, rebase vasitəsilə həmin feature commit-lərini main branch-in daha yeni vəziyyəti üzərinə yerləşdirmək mümkündür. Rebase daha xətti commit tarixçəsi yarada bilər. Lakin artıq başqa proqramçılarla paylaşılmış commit-ləri rebase etmək repository tarixçəsini yenidən yazdığı üçün problemlər yarada bilər. Bu səbəbdən rebase-in necə işlədiyini başa düşmədən paylaşılmış branch-lərdə istifadə etmək tövsiyə edilmir.

Git proqramçılar üçün niyə vacibdir?

Real proqram təminatı layihələri daim dəyişir. Yeni funksiyalar əlavə olunur, xətalar düzəldilir, kod refactor edilir və bir neçə proqramçı eyni layihədə işləyir. Git bu dəyişiklikləri sistemli şəkildə idarə etməyə imkan verir. Proqramçı Git vasitəsilə hansı kodu nə vaxt dəyişdirdiyini görə, müxtəlif funksiyalar üçün branch yarada, dəyişikliklərini commit edə və komanda üzvləri ilə paylaşa bilər. Git həmçinin Debugging prosesində faydalı ola bilər. Məsələn, müəyyən problemin hansı commit-dən sonra yarandığını araşdırmaq mümkündür.

Git yalnız proqramçılar üçündür?

Git daha çox proqram təminatının hazırlanması ilə əlaqələndirilsə də, yalnız proqram kodu üçün nəzərdə tutulmayıb. Texniki olaraq Git mətn əsaslı müxtəlif faylların dəyişiklik tarixçəsini izləmək üçün istifadə edilə bilər. Proqramlaşdırmada isə xüsusilə effektivdir, çünki source code dəyişikliklərini sətir səviyyəsində müqayisə etməyə və branch əsaslı workflow qurmağa imkan verir.

Git-də ən çox istifadə olunan əmrlər hansılardır?

Başlanğıc səviyyədə aşağıdakı Git əmrlərini bilmək kifayət qədər yaxşı baza yaradır:

git init

git clone

git status

git add

git commit

git log

git branch

git switch

git merge

git fetch

git pull

git push

git diff

Bunların hamısını sadəcə əzbərləmək əvəzinə Git workflow daxilində hansı məqsədlə istifadə edildiyini başa düşmək daha vacibdir.

Git öyrənməyə haradan başlamaq lazımdır?

Git öyrənərkən ilk mərhələdə mürəkkəb komandalarla başlamağa ehtiyac yoxdur.

Əvvəlcə belə bir workflow-u öyrənmək kifayətdir:

Layihə yarat

↓

git init

↓

Fayllarda dəyişiklik et

↓

git status

↓

git add

↓

git commit

Daha sonra remote repository ilə işləməyi öyrənmək olar:

GitHub repository

↓

git clone

↓

Dəyişiklik et

↓

git add

↓

git commit

↓

git push

Növbəti mərhələdə Branch, Merge, Merge Conflict, Pull Request, Fetch, Rebase və digər anlayışlara keçmək mümkündür. Git-i ən yaxşı real layihələr üzərində öyrənmək olar. Hazırladığınız şəxsi layihələri Git ilə idarə etmək və GitHub-a yerləşdirmək həm Git bacarıqlarını inkişaf etdirir, həm də proqramlaşdırma portfolio-su yaratmağa kömək edir. Git, GitHub və digər müasir proqramlaşdırma alətlərini real layihələr üzərində öyrənmək istəyirsinizsə, JET Academy-nin Frontend, Full-Stack və Java Backend proqramlaşdırma təlimləri ilə tanış ola bilərsiniz.

Tədris sahələrimiz barədə məlumat almaq üçün qeydiyyatdan keçin

IT sahəsini öyrənməyə başla