-
1. Başlanğıc
- 1.1 Versiyaya Nəzarət Haqqında
- 1.2 Git’in Qısa Hekayəsi
- 1.3 Git Nədir?
- 1.4 Əmr Sətiri
- 1.5 Git’i Quraşdırmaq
- 1.6 İlk Dəfə Git Quraşdırması
- 1.7 Kömək Almaq
- 1.8 Qısa Məzmun
-
2. Git’in Əsasları
-
3. Git’də Branch
- 3.1 Nutshell’də Branch’lar
- 3.2 Sadə Branching və Birləşdirmə
- 3.3 Branch İdarəedilməsi
- 3.4 Branching İş Axınları
- 3.5 Uzaq Branch’lar
- 3.6 Rebasing
- 3.7 Qısa Məzmun
-
4. Server’də Git
- 4.1 Protokollar
- 4.2 Serverdə Git Əldə Etmək
- 4.3 Sizin öz SSH Public Key’nizi yaratmaq
- 4.4 Server qurmaq
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Üçüncü Tərəf Seçimləri
- 4.10 Qısa Məzmun
-
5. Paylanmış Git
-
6. GitHub
-
7. Git Alətləri
- 7.1 Reviziya Seçimi
- 7.2 Interaktiv Səhnələşdirmə
- 7.3 Stashing və Təmizləmə
- 7.4 İşinizin İmzalanması
- 7.5 Axtarış
- 7.6 Tarixi Yenidən Yazmaq
- 7.7 Reset Demystified
- 7.8 İnkişaf etmiş Birləşmə
- 7.9 Rerere
- 7.10 Git ilə Debugging
- 7.11 Alt Modullar
- 7.12 Bundling
- 7.13 Dəyişdirmək
- 7.14 Etibarlı Yaddaş
- 7.15 Qısa Məzmun
-
8. Git’i Fərdiləşdirmək
- 8.1 Git Konfiqurasiyası
- 8.2 Git Atributları
- 8.3 Git Hook’ları
- 8.4 Git-Enforced Siyasət Nümunəsi
- 8.5 Qısa Məzmun
-
9. Git və Digər Sistemlər
- 9.1 Git Müştəri kimi
- 9.2 Git’ə Miqrasiya
- 9.3 Qısa Məzmun
-
10. Git’in Daxili İşləri
- 10.1 Plumbing və Porcelain
- 10.2 Git Obyektləri
- 10.3 Git Referansları
- 10.4 Packfile’lar
- 10.5 Refspec
- 10.6 Transfer Protokolları
- 10.7 Maintenance və Məlumatların Bərpası
- 10.8 Mühit Dəyişənləri
- 10.9 Qısa Məzmun
-
A1. Appendix A: Digər Mühitlərdə Git
- A1.1 Qrafik interfeyslər
- A1.2 Visual Studio’da Git
- A1.3 Visual Studio Code’da Git
- A1.4 Eclipse’də Git
- A1.5 Sublime Text’də Git
- A1.6 Bash’da Git
- A1.7 Zsh’də Git
- A1.8 PowerShell’də Git
- A1.9 Qısa Məzmun
-
A2. Appendix B: Proqramlara Git Daxil Etmək
- A2.1 Əmr-sətri Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Appendix C: Git Əmrləri
- A3.1 Quraşdırma və Konfiqurasiya
- A3.2 Layihələrin Alınması və Yaradılması
- A3.3 Sadə Snapshotting
- A3.4 Branching və Birləşmə
- A3.5 Layihələrin Paylaşılması və Yenilənməsi
- A3.6 Yoxlama və Müqayisə
- A3.7 Debugging
- A3.8 Patching
- A3.9 E-poçt
- A3.10 Xarici Sistemlər
- A3.11 İdarəetmə
- A3.12 Plumbing Əmrləri
4.8 Server’də Git - GitLab
GitLab
GitWeb olduqca asan quruluşdadır. Əgər siz daha müasir və tam xüsusiyyətli Git server axtarırsınızsa, onun yerinə quraşdıra biləcəyiniz başqa open source solutions var. Gitlab onların ən məşhurlarından olduğu kimi biz onun quraşdırılmasını mühafizə edə və misal kimi göstərə bilərik. Bu GitWeb seçimindən bir az daha mürəkkəbdir və daha çox təminat tələb edir, lakin tam xüsusiyyətli seçimdir.
Quraşdırılma
GitLab məlumat bazalı veb-tətbiqdir, buna görə də onun quraşdırılması digər Git serverlərə görə daha dolaşıqdır. Yaxşı ki, bu prosess tam sənədli və dəstəklənəndir.
GitLab quraşdırılmasını izləmək üçün bir neçə metod vardır. Bir şeyi tez işlətmək istəyirsinizsə, https://bitnami.com/stack/gitlab-dan bir klik quraşdırıcını və ya virtual mexanizm təsvirini yükləyə və konfiqurasiyanı xüsusi çevrənizə uyğun dəyişə bilərsiniz. Bir incə toxunuşla Bitnami login ekranını daxil edir (alt+→ yazaraq daxil edilə bilir); bu sizə GitLab üçün quraşdırılmış ip ünvan, standart istifadəçi adı və parolu göstərir.
![Virtual mexanizm Bitnami Gitlabın giriş ekranı](png/bitnami.png)
Başqa hər şey üçün, https://gitlab.com/gitlab-org/gitlab-ce/tree/master-da yerləşən GitLab Community Editiondakı rəhbəri izləyə bilərsiniz. Orada siz Chef reseptlərindən istifadə edərək GitLab quraşdırılmasına yardım, Digital Oceanda virtual ekran və RPM və DEB paketlərini (betadakı bu yazılar kimi) tapa bilərsiniz. Orada həmçinin, standart olmayan əməliyyat sistemlərində GitLab qoşmağın “qeyri-rəsmi” yollarını, tam manual quraşdırmaları və digər mövzuları tapa bilərsiniz.
Idarəetmə
GitLab’ın idarəetmə interfeysi veb üzərindən daxil olunandır. Sadəcə brauzerinizi GitLab’ın quraşdırıldığı IP adressə və ya host adına işarələyin və admin istifadəçi kimi daxil olun. Standart istifadəçi adı admin@local.host
və standart parol 5iveL!fe
(hansı ki daxil olduğunuz anda dəyişə bilərsiniz) olacaq. Daxil olduqda menyunun sağ üst tərəfindəki “Admin area” ikonuna klikləyin.
İstifadəçilər
GitLab hesablarında istifadəçilər insanlarla yazışanlardır. İstifadəçi hesablarında çox mürəkkəblik yoxdur; əsasən onlar əsas dataya yığılmış şəxsi informasiyalar toplusudur. Hər bir istifadəçi hesabı həmin istifadəçiyə aid olan proyektlər qrupunun namespace'i (ad boşluğu) ilə gəlir. Əgər istifadəçi jane’in proyekt adlı proyekti olarsa, onda həmin proyektin url’i belə görünür: http://server/jane/project
![GitLab istifadəçisinin idarəetmə ekranı](png/gitlab-users.png)
İstifadəçini iki yolla silmək olar. “Blocking” istifadəçini GitLab’a girişdən məhrum edir, lakin həmin istifadəçinin ad boşluğundakı bütün datası qorunur və həmin istifadəçinin mail adresi ilə verdiyi bütün commit-lər həmin istifadəçinin profilinə linklənir.
Digər tərəfdən isə, istifadəçini “Destroying” (yox etmək) onu faylsistemdən və databasedən tam olaraq silir. Onların ad boşluğundakı bütün data və proyektlər silinir, həmçinin onlara məxsus bütün qruplar aradan qaldırılır. Bu çox nadir hallarda istifadə edilir və daha qalıcı və dağıdıcı addımdır.
Qruplar
GitLab qrupu istifadəçilərin proyektlərə necə daxil olduğunun datasını əhatə edən proyektlər assambleyasıdır. Hər qrupun -istifadəçilərdə olduğu kimi- proyekt ad boşluğu mövcuddur, yəni qrup məşqinin proyekt materialları olarsa, onlar belə görünür: http://server/training/materials
.
![GitLab qrup idarəetmə ekranı](png/gitlab-groups.png)
Hər bir qrup həmin qrupun icazələri və proyektləri bir neçə istifadəçiyə bağlıdır. Bu “Guest”-dən (sadəcə problemlər və söhbətlər) “Owner”-ə (bütün qrupu, üzvlərini və proyektlərini idarəetmə) qədər hissəni əhatə edir. Burada sadalanan çoxsaylı proyekt tipləri var, lakin GitLab’ın idarəetmə ekranında yardımçı linki mövcuddur.
Proyektlər
GitLab proyekti tək bir Git deposuna uyğunlaşır. Hər proyekt bir ad boşluğuna, istifadəçiyə və ya qrupa aiddir. Əgər proyekt istifadəçiyə aiddirsə, proyektin sahibi proyektə girişi olan hər kəsə birbaşa nəzarət edə bilir; əgər proyekt qrupa məxsusdursa, istifadəçi səviyyə icazəsi də həmçinin təsir edə bilir.
Hər proyektin depolara və proyektin səhifələrinə oxuma girişi olanlara nəzarət edilə bilən görünmə dərəcəsi var. Əgər proyekt Private-dirsə proyektin sahibi xüsusi istifadəçilərə geniş daxilolma icazəsi verməlidir. Internal proyekt daxil olan hər istifadəçiyə görünəndir, Public proyekt isə hər kəsə görünəndir. Qeyd edin ki, bu UI veb proyekti üçün hər iki git fetch
girişinə nəzarət edir.
Hooklar
GitLab proyekt və sistem səviyyəsində hookları da daxil edir. Bunların hər ikisi üçün GitLab serveri müvafiq hadisələr baş verəndə JSON təsvirilə HTTP POST yerinə yetirir. Bu sizin Git depolarınızı və GitLab instansiyasınızı inkişaf avtomatlaşdırmanızın qalan hissəsinə bağlamaq üçün əla bir yoldur, məsələn, CI serverləri, söhbət otaqları və ya yerləşdirmə qurğuları.
Əsas İStifadə
GitLab ilə etmək istənilən ilk şey yeni proyekt yaratmaqdır. Bu alətlər panelindəki “+” ikonuna basmaqla yerinə yetirilir. Sizdən proyektin adı, hansı ad boşluğuna aid olduğu və görünmə səviyyəsinin nə olduğu soruşulacaqdır. Burada qeyd edilənlərin çoxu daimi olmur və tənzimlənmələr bölməsindən təkrar dəyişdirilə bilər. “Create Project”-ə klikləyin və budur, artıq hazırdır.
Proyekt hazır olduqdan sonra siz onu böyük ehtimalla lokal Git deposuna bağlayacaqsınız.
Hər proyekt HTTPS və ya SSH üzərindən daxil olunandır və hər ikisi Git yayımını konfiqurasiya etmək üçün istifadə oluna bilər. URL’lar proyektin ana səhifəsində yuxarıda görünürlər. Bu əmr yayımlanan ərazidə mövcud yerli depo üçün gitlab
adlı remote yaradacaq:
$ git remote add gitlab https://server/namespace/project.git
Deponun sizdə local kopyası yoxdursa, onda siz sadə şəkildə belə edə bilərsiniz:
$ git clone https://server/namespace/project.git
Veb UI deponun özündə işlək görünmələri təmin edir. Hər proyektin ana səhifəsi ən son hərəkətləri göstərir və üst tərəfdəki linklər sizə proyektin faylları və tapşırıqlarını göstərir.
Birlikdə İşləmək
GitLab proyektində birgə işləməyin ən rahat yolu digər istifadəçiyə Git deposuna birbaşa push access verməkdir. Proyektin tənzimləmələr hissəsində “Members” hissəsində proyektə istifadəçi əlavə edə bilərsiniz və yeni istifadəçinin giriş səviyyəsini əlaqələndirə bilərsiniz (fərqli giriş səviyyələri Qruplar'da müzakirə edilir). İstifadəçi developer və ya yuxarı səviyyə giriş verilərsə, cəzasız birbaşa depo olan branch-lar ilə commit-lər verə bilər.
Əməkdaşlıq etməyin digər yollarından biri də istəkləri birləşdirməkdir. Bu özəllik hər bir istifadəçiyə nəzarətli şəkildə proyektə dəstək verməyə imkan verir. Birbaşa girişi olan istifadəçilər branch yarada, ona commit-lər verə və master və ya başqa branch-larda birləşdirilmiş istəklər yarada bilərlər. Depoya push icazəsi olmayan istifadəçilər onu “fork” (öz kopyasını yaratmaq) edə bilər, həmin kopyaya push tapşırıqları verə bilər və əsas proyektdən geriyə forkdan istəklər aça bilərlər. Bu model sahibinə etibar etibarsız istifadəçilərin dəstəyi ilə depoya nəyin nə zaman gəldiyini nəzarət altına almağa imkan verir.
Birləşdirilmiş istəklər və problemlər Gitlabdakı uzunmüddətli diskussiyanın əsas hissələrindəndir. Hər birləşmə istəyi təklif olunan dəyişikliyin( hansı ki, yüngül kod yığımını tələb edir), eləcə də ümumi müzakirə mövzusunun xətti olaraq müzakirə edilməsinə imkan verir. Onların hər ikisi istifadəçilər tərəfindən təyin oluna və mərhələlərə bölünə bilər.
Bu hissə ən əsas GitLabın Git ilə əlaqəli xüsusiyyətlərinə yönəldilmişdir, lakin yekun proyekt olaraq o sizə wiki və sistem vasitələri ilə komandanızla birgə işləməyə imkan verir. GitLabin başqa bir üstünlüyü də odur ki, server quraşdırılıb işləyirsə, sizin nadir hallarda konfiqurasiya faylını tweakləməyə və ya SSH serveri ilə giriş etməyə ehtiyacınız olacaq (əksər idarəetmə və ümumi istifadə browserin interfeysində başa çatdırılır).