-
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.6 Git’in Əsasları - Etiketləmə
Etiketləmə
Əksər VNS’lər kimi, Git, depo tarixçəsindəki müəyyən nöqtələri önəmli olaraq etiketləyə bilir.
Tipik olaraq, insanlar bu funksionallıqdan istifadə nöqtələrini qeyd etmək üçün istifadə edirlər (v1.0
,` v2.0` və s.).
Bu bölmədə mövcud etiketlərin necə siyahıya alınmasını, etiketləri necə yaratmaq və silməyi və fərqli etiket növlərinin nə olduğunu öyrənəcəksiniz.
Etiketlərinizi Listləyin
Git-də mövcud etiketlərin siyahısı sadədir.
Yalnız git tag
yazın (əlavə olaraq -l
və ya --list
ilə):
$ git tag
v1.0
v2.0
Bu əmr etiketləri əlifba sırası ilə sıralayır; göstərilən qaydanın heç bir əsası yoxdur.
Ayrıca müəyyən bir xüsusi nümunəyə uyğun etiketlər axtara bilərsiniz. Məsələn Git mənbə repo, 500-dən çox etiketi ehtiva edir. Yalnız 1.8.5 seriyasına baxmaq istəyirsinizsə, bunu işlədə bilərsiniz:
$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5-rc3
v1.8.5.1
v1.8.5.2
v1.8.5.3
v1.8.5.4
v1.8.5.5
Note
|
Etiket kartı siyahısına qoymaq üçün
-l və ya --list seçimi tələb olunurEtiketlərin yalnız bütün siyahısını istəsəniz, Lakin, etiket adlarına uyğun bir işaret naxışını təqdim edirsinizsə, -l və ya - List istifadəsi məcburidir. |
Etiket Yaratmaq
Git iki növ etiket dəstəkləyir: yüngül və əlavə.
Yüngül etiket dəyişməyən bir budağa bənzəyir - yalnız müəyyən bir öhdəliyi göstərir.
Qeyd olunan etiketlər Git verilənlər bazasında tam obyekt kimi saxlanılır. Çeki qiymətləndirdilər; etiketçi adını, e-poçtunu və tarixini ehtiva edir; etiketləmə mesajı var; və GNU Privacy Guard (GPG) ilə imzalanıb təsdiqlənə bilər. Bütün bu məlumatlara sahib olmağınız üçün ümumiyyətlə annotasiya etiketləri yaratmağınız tövsiyə olunur; ancaq müvəqqəti etiket istəsəniz və ya nədənsə digər məlumatı saxlamaq istəmirsinizsə yüngül etiketlər də mövcuddur.
Əlavə Etiketlər
Git-də əlavə etiket yaratmaq çox sadədir.
Ən asan yol, tag
əmrini işlədərkən -a
göstərməkdir:
$ git tag -a v1.4 -m "my version 1.4"
$ git tag
v0.1
v1.3
v1.4
-m
etiket ilə birlikdə saxlanan bir etiket mesajını göstərir.
Əlavə etiket üçün bir mesaj göstərməmisinizsə, Git redaktorunuzu işə salır ki, daxil edə bilərsiniz.
Etiket məlumatlarını git show
əmrindən istifadə edərək etiketlənmiş öhdəliklə birlikdə görə bilərsiniz:
$ git show v1.4
tag v1.4
Tagger: Ben Straub <ben@straub.cc>
Date: Sat May 3 20:19:12 2014 -0700
my version 1.4
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
Change version number
Bu etiket məlumatını, öhdəliyin etiketlənmə tarixini və öhdəlik məlumatını göstərmədən əvvəl qeyd mesajını göstərir.
Yüngül Etiketlər
Etiketləyin başqa bir yolu yüngül bir etiketdir.
Bu, əsasən bir sənəddə saxlanılan tapşırıq çeki məbləğidir - başqa heç bir məlumat saxlanılmır.
Yüngül bir etiket yaratmaq üçün -a
,` -s` və ya -m
variantlarından heç birini təmin etmədən etiket adını təqdim etmə bəs edər:
$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5
Bu dəfə etiketdə git show
işlədirsinizsə, əlavə etiket məlumatlarını görmürsünüz.
Komanda sadəcə öhdəliyi göstərir:
$ git show v1.4-lw
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
Change version number
Daha Sonra Etiketləmə
Keçmişləri köçürdükdən sonra qeyd edə bilərsiniz. Təqdim etdiyiniz tarix belə görünərsə:
$ git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 Create write support
0d52aaab4479697da7686c15f77a3d64d9165190 One more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc Add commit function
4682c3261057305bdd616e23b64b0857d832627b Add todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a Create write support
9fceb02d0ae598e95dc970b74767f19372d61af8 Update rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc Commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a Update readme
İndi güman ki, layihəni v1.2-də etiketləməyi unutmusunuz ki, bu da “Yeniləmə rakefile” commitində idi. Faktdan sonra əlavə edə bilərsiniz. Bu əməli etiketləmək üçün əmr sonunda tapşırıq çeki məbləğini (və ya onun bir hissəsini) göstərin:
$ git tag -a v1.2 9fceb02
Commit etiketlədiyinizi görə bilərsiniz:
$ git tag
v0.1
v1.2
v1.3
v1.4
v1.4-lw
v1.5
$ git show v1.2
tag v1.2
Tagger: Scott Chacon <schacon@gee-mail.com>
Date: Mon Feb 9 15:32:16 2009 -0800
version 1.2
commit 9fceb02d0ae598e95dc970b74767f19372d61af8
Author: Magnus Chacon <mchacon@gee-mail.com>
Date: Sun Apr 27 20:43:35 2008 -0700
Update rakefile
...
Etiketləri Paylaşmaq
Varsayılan olaraq, git push
əmri etiketləri uzaq serverlərə ötürmür.
Etiketləri yaratdıqdan sonra açıq şəkildə ortaq bir serverə push olacaqsınız.
Bu proses uzaq filialları bölüşmək üçün git push origin <tagname>
işlədə bilərsiniz.
$ git push origin v1.5
Counting objects: 14, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (14/14), 2.05 KiB | 0 bytes/s, done.
Total 14 (delta 3), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
* [new tag] v1.5 -> v1.5
Push istədiyiniz çox etiket varsa, git push
əmrinə --tags
seçimini də istifadə edə bilərsiniz.
Bu, bütün etiketlərinizi artıq olmayan uzaq serverə köçürəcəkdir.
$ git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 160 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
* [new tag] v1.4 -> v1.4
* [new tag] v1.4-lw -> v1.4-lw
İndi başqası deponuzu klonlaşdırdıqda və ya pull edəndə bütün etiketlərinizi də alacaqsınız.
Note
|
git push hər iki etiketi push edir
|
Etiketləri Silmək
Yerli depolarınızdakı etiketi silmək üçün git tag -d <tagname>
istifadə edə bilərsiniz.
Məsələn, yuxarıdakı yüngül etiketimizi silə bilərik:
$ git tag -d v1.4-lw
Deleted tag 'v1.4-lw' (was e7d5add)
Qeyd edək ki, bu etiketi heç bir uzaq serverdən silmir. Bir etiketi uzaq bir serverdən silmək üçün iki ümumi variant var.
Birinci variant git push <remote> :refs/tags/<tagname>
-dır:
$ git push origin :refs/tags/v1.4-lw
To /git@github.com:schacon/simplegit.git
- [deleted] v1.4-lw
Yuxarıda göstərilənləri şərh etməyin yolu, nöqtəni kolon uzaq məsafəli etiket adına sövq edilərək effektiv şəkildə silməkdən əvvəl oxumaqdır.
Uzaq bir etiketi silməyin ikinci (və daha asan) yolu:
$ git push origin --delete <tagname>
Etiketlərin Yoxlanılması
Etiket işarələdiyi sənədlərin versiyalarına baxmaq istəyirsinizsə, etiketinizə git checkout
edə bilərsiniz, baxmayaraq ki, bu, depolarınızı bəzi pis yan təsirləri olan “detached HEAD” vəziyyətinə qoyur:
$ git checkout v2.0.0
Note: checking out 'v2.0.0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch>
HEAD is now at 99ada87... Merge pull request #89 from schacon/appendix-final
$ git checkout 2.0-beta-0.1
Previous HEAD position was 99ada87... Merge pull request #89 from schacon/appendix-final
HEAD is now at df3f601... Add atlas.json and cover image
“detached HEAD” vəziyyətində, dəyişiklik edirsinizsə və sonra öhdəlik yaradırsınızsa, etiket eyni qalacaq, ancaq yeni öhdəliyiniz heç bir branch-a aid olmayacaq və dəqiq bir işləmə hash istisna olmaqla əlçatmaz olacaq. Beləliklə, dəyişiklik etmək lazımdırsa - məsələn, köhnə bir versiyada bir səhv düzəldirsinizsə - ümumiyyətlə bir filial yaratmaq istəyəcəksiniz:
$ git checkout -b version2 v2.0.0
Switched to a new branch 'version2'
Bunu etsəniz və öhdəlik götürsəniz, version2
filialınız v2.0.0
etiketinizdən bir qədər fərqli olacaq, çünki yeni dəyişikliklərinizlə irəliləyəcək, buna görə diqqətli olun.