-
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
2.5 Git’in Əsasları - Uzaqdan İşləmək
Uzaqdan İşləmək
Hər hansı bir Git layihəsində əməkdaşlıq edə bilmək üçün uzaqdakı depolarınızı necə idarə edəcəyinizi bilməlisiniz. Uzaqdan yerləşdirilmiş depolar İnternetdə və ya şəbəkədə bir yerdə yerləşdirilən layihənizin versiyalarıdır. Onlardan bir neçəsinə sahib ola bilərsiniz, bunların hər biri ümumiyyətlə read-only və ya sizin üçün read/write olur. Başqaları ilə əməkdaşlıq etmək, bu uzaq məsafəli depoların idarə edilməsini və iş bölüşmək lazım olduqda məlumatları onlara və onlardan push və pull etməyi özündə əks etdirir. Uzaq depoları idarə etmək və uzaq depoları necə əlavə etməyi, artıq yararsız olanları uzaqlaşdırmağı, müxtəlif uzaq filialları idarə etməyi və onları izlənilən və ya izlənilməyəni müəyyənləşdirməyi və daha çoxunu əhatə edir.
Bu hissədə bu uzaqdan idarəetmə bacarıqlarından bəzilərini əhatə edəcəyik.
Note
|
Uzaqdakı depolar lokal maşınınızda ola bilər.
“Remote” bir depo ilə işləməlisinizsə, əslində tamamilə mümkündür. Belə bir uzaq depo ilə işləmək, hər hansı digər uzaqdan idarə olunan depoda olduğu kimi, bütün standart fetching, pushing və pulling əməliyyatları daxildir. |
Uzaqdan Göstərişləriniz
Konfiqurasiya etdiyiniz uzaq serverləri görmək üçün git remote
əmrini işlədə bilərsiniz.
Bu göstərdiyiniz hər remote handle’ın qısa adlarını sadalayır.Deponuzu klonlaşdırmısınızsa, ən azından origin
-i görməlisiniz - bu sizin klonlaşmış Git serverinizə verilən default addır:
$ git clone https://github.com/schacon/ticgit
Cloning into 'ticgit'...
remote: Reusing existing pack: 1857, done.
remote: Total 1857 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1857/1857), 374.35 KiB | 268.00 KiB/s, done.
Resolving deltas: 100% (772/772), done.
Checking connectivity... done.
$ cd ticgit
$ git remote
origin
Həmçinin, uzaqdan oxuyarkən və yazarkən istifadə ediləcək qısa ad üçün Git’in saxladığı URL’ləri sizə göstərən –v
ilə göstərə bilərsiniz:
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
Birdən daha çox remote qurmusunuzsa, komanda bunların hamısını sadalayır.
$ cd grit
$ git remote -v
bakkdoor https://github.com/bakkdoor/grit (fetch)
bakkdoor https://github.com/bakkdoor/grit (push)
cho45 https://github.com/cho45/grit (fetch)
cho45 https://github.com/cho45/grit (push)
defunkt https://github.com/defunkt/grit (fetch)
defunkt https://github.com/defunkt/grit (push)
koke git://github.com/koke/grit.git (fetch)
koke git://github.com/koke/grit.git (push)
origin git@github.com:mojombo/grit.git (fetch)
origin git@github.com:mojombo/grit.git (push)
Bu, istifadəçilərdən hər hansı birindən çox asanlıqla pull contributions edə biləcəyimiz deməkdir. Əlavə olaraq bunlardan birini və ya daha çoxunu pull etməyə icazə verə bilərik, baxmayaraq ki, burada qeyd edə bilmərik.
Bu remote’lərin müxtəlif protokollar istifadə etdiyinə diqqət yetirin; bu barədə daha çox məlumatı bir Serverdə Git Əldə Etmək-də əhatə edəcəyik.
Uzaqdan Depolara Əlavə Edilməsi
git clone
əmrinin sizin üçün uzaqdan origin
necə əlavə etdiyini bir neçə nümayiş etdik və qeyd etdik.
Yeni bir uzaqdan idarə etmə necə əlavə etmək olar.
Asanlıqla istinad edə biləcəyiniz qısa ad kimi yeni bir uzaq Git deposuna əlavə etmək üçün git remote add <shortname> <url>
əlavə edin:
$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
pb https://github.com/paulboone/ticgit (fetch)
pb https://github.com/paulboone/ticgit (push)
İndi bütün URL əvəzinə əmr sətirindəki pb
sətirindən istifadə edə bilərsiniz.
Məsələn, Paulun bütün məlumatlarını götürmək istəyirsinizsə, ancaq hələ deponuzda yoxdursa, git fetch pb
işlədə bilərsiniz:
$ git fetch pb
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 43 (delta 10), reused 31 (delta 5)
Unpacking objects: 100% (43/43), done.
From https://github.com/paulboone/ticgit
* [new branch] master -> pb/master
* [new branch] ticgit -> pb/ticgit
Paulun master
branch’ı indi pb/master
olaraq lokal olaraq əlçatandır - onu branch’lardan birinə birləşdirə bilərsiniz və ya yoxlamaq istəsəniz lokal bir branch’ı yoxlaya bilərsiniz.
Branch’ların nədən ibarət olduğunu və onlardan daha ətraflı necə istifadə edəcəyimizi Git’də Branch-dan öyrənəcəyik.
Uzaqdan Fetching və Pulling
Gördüyü kimi, remote layihələrinizdən məlumat əldə etmək üçün işləyə bilərsiniz:
$ git fetch <remote>
Komanda o uzaq layihəyə çıxır və sizdə olmayan o remote layihədən olan bütün məlumatları çıxarır, yəni pull edir. Bunu etdikdən sonra, istənilən vaxt birləşdirə və ya yoxlaya biləcəyiniz uzaqdan bütün branch’lara istinadlar olmalıdır.
Deponu klonlaşdırsanız, əmr avtomatik olaraq uzaqdan yerləşdirilən depoları “origin” adı altında əlavə edir.
Beləliklə, git fetch origin
onu klonlaşdırdığınızdan (və ya sonuncu götürdüyünüzdən) sonra bu serverə sövq edilmiş hər hansı yeni bir işi gətirir.
Qeyd etmək vacibdir ki, git fetch
əmri yalnız məlumatları lokal depoya yükləyir - onu avtomatik olaraq hər hansı bir işlə birləşdirmir və ya hazırda olan işinizi dəyişdirmir.
Hazır olanda manual olaraq işinizə birləşdirməlisiniz.
Cari branch’ınız uzaq bir branch’ı izləmək üçün qurulmuşdursa,(daha çox məlumat üçün sonrakı hissəyə və Git’də Branch-a bax), avtomatik olaraq götürmək üçün git pull
əmrindən istifadə edə bilərsiniz və sonra uzaq branch-ı cari branch’ınıza birləşdirməlisiniz.
Bu sizin üçün daha asan və ya daha rahat bir iş axını ola bilər; Varsayılan olaraq, git clone
əmri avtomatik olaraq local master
branch’nızı klonlaşdırdığınız serverdə uzaqdan master
branch’ını (və ya standart budaq adlanır) izləmək üçün qurur.
git pull
ümumiyyətlə əvvəlcədən klonlanmış serverdən məlumat alır və avtomatik olaraq hazırda işlədiyiniz koda daxil olmağa çalışır.
Note
|
Git versiyasının 2.27-dən başlayaraq, Git’in standart davranışını istəyirsinizsə (mümkünsə sürətli irəli göndərin, başqa bir birləşmə yarat):
Pulling edərkən yenidən yazmaq istəsəniz:
|
Uzaqdan Pushing etmək
Layihənizi bölüşmək istədiyiniz bir nöqtədə olduqda, onu yuxarıdan push etməlisiniz.
Bunun əmri sadədir: git push <remote> <branch>
.
Əgər master
branch-nızı `origin`serverinə push etmək istəyirsinizsə (yenidən klonlaşdırmaq bu adların hər ikisini avtomatik olaraq sizin üçün yaradır), bu zaman serverə etdiyiniz hər hansı bir commit-i push etmək üçün işləyə bilərsiniz:
$ git push origin master
Bu əmr yalnız yazılı girişi olan bir serverdən klonlanmış və bu vaxt heç kim push etmədikdə işləyir. Eyni anda başqası ilə klonlaşsanız və onlar yuxarıya doğru push etsələr və sonra yuxarıya doğru push etsən, təkanlarınız rədd ediləcəkdir. Əvvəlcə işlərini götürməli və təkan verməyinizə qədər bunu özünüzə daxil etməlisiniz. Uzaq serverlərə necə push barədə daha ətraflı məlumat üçün Git’də Branch baxın.
Uzaqdan Yoxlama
Müəyyən bir remote haqqında daha çox məlumat görmək istəyirsinizsə, git remote show <remote>
komandasını istifadə edə bilərsiniz.
Bu əmri origin
kimi müəyyən bir qısa ad ilə işləsəniz, bu kimi bir şey əldə edirsiniz:
$ git remote show origin
* remote origin
Fetch URL: https://github.com/schacon/ticgit
Push URL: https://github.com/schacon/ticgit
HEAD branch: master
Remote branches:
master tracked
dev-branch tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
Uzaqdakı depo üçün URL, eləcə də izləmə branch’ı məlumatlarını sadalayır.
Komanda sizə köməkliklə deyir ki, master
branch’ında olsanız və git pull
işlədirsinizsə, bütün uzaq istinadları aldıqdan sonra avtomatik olaraq uzaqdakı master
branch’ında birləşəcəkdir.
Ayrıca, endirdiyi bütün uzaq istinadları sadalayır.
Bu qarşılaşa biləcəyiniz sadə bir nümunədir.
Git’i daha çox istifadə edərkən, git remote show
-dan daha çox məlumat görə bilərsiniz:
$ git remote show origin
* remote origin
URL: https://github.com/my-org/complex-project
Fetch URL: https://github.com/my-org/complex-project
Push URL: https://github.com/my-org/complex-project
HEAD branch: master
Remote branches:
master tracked
dev-branch tracked
markdown-strip tracked
issue-43 new (next fetch will store in remotes/origin)
issue-45 new (next fetch will store in remotes/origin)
refs/remotes/origin/issue-11 stale (use 'git remote prune' to remove)
Local branches configured for 'git pull':
dev-branch merges with remote dev-branch
master merges with remote master
Local refs configured for 'git push':
dev-branch pushes to dev-branch (up to date)
markdown-strip pushes to markdown-strip (up to date)
master pushes to master (up to date)
Bu əmr müəyyən branch’larda olarkən git push
işlədikdə hansı branch’ın avtomatik push edildiyini göstərir.
Ayrıca, git pull
hələ serverinizdə olmayan uzaq branch’ları, serverdən hansısa uzaq branch’ları çıxartdığınızı və çalışdığınız zaman avtomatik olaraq uzaqdan izləmə branch’ı ilə birləşdirə bilən çoxsaylı lokal branch’ları göstərir.
Uzaqdan Adların Dəyişdirilməsi və Çıxarılması
Remote qısa adını dəyişdirmək üçün git remote rename
funksiyasını işlədə bilərsiniz.
Məsələn, pb
adını paul
olaraq dəyişdirmək istəyirsinizsə, git remote rename
ilə bunu edə bilərsiniz:
$ git remote rename pb paul
$ git remote
origin
paul
Bu, bütün uzaqdan izləyən branch adlarınızı da dəyişdirdiyini qeyd etmək lazımdır.
Əvvəllər pb/master
də istinad edilən şey indi paul/master
-ə istinad ediləcəkdir.
Bir səbəbdən bir uzaqdan silmək istəsəniz - serveri köçürdünüz və ya artıq müəyyən bir güzgüdən istifadə etmirsiniz, ya da bəlkə bir dəfə töhfə verən başqa bir töhfə vermirsə, git remote remove
və ya git remote rm
istifadə edə bilərsiniz:
$ git remote remove paul
$ git remote
origin
Uzaqdan bir istinadı bu şəkildə sildikdən sonra, uzaqdan izlənən bütün branch’lar və bu uzaqdan əlaqəli konfiqurasiya parametrləri də silinir.