-
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
A2.4 Appendix B: Proqramlara Git Daxil Etmək - go-git
go-git
Git’i Golang’da yazılmış bir xidmətə inteqrasiya etmək istədiyiniz təqdirdə təmiz bir Go kitabxanası tətbiqi də mövcuddur. Bu tətbiqin heç bir yerli asılılığı yoxdur və bu səbəbdən manual yaddaş idarəetməsi səhvlərinə meylli deyil. CPU, Yaddaş profilləri, race detektoru və s. kimi standart Golang performans analizi alətləri üçün də transparent-dır.
go-git genişlənməyə, uyğunluğa yönəldilib və https://github.com/go-git/go-git/blob/master/COMPATIBILITY.md sənədləşdirilmiş santexnika API-lərinin çoxunu dəstəkləyir.
Go API-lərindən istifadənin əsas nümunəsi:
import "github.com/go-git/go-git/v5"
r, err := git.PlainClone("/tmp/foo", false, &git.CloneOptions{
URL: "https://github.com/go-git/go-git",
Progress: os.Stdout,
})
Bir Depo
nümunəsinə sahib olduqdan sonra məlumat əldə edə və üzərində mutasiyalar həyata keçirə bilərsiniz:
// retrieves the branch pointed by HEAD
ref, err := r.Head()
// get the commit object, pointed by ref
commit, err := r.CommitObject(ref.Hash())
// retrieves the commit history
history, err := commit.History()
// iterates over the commits and print each
for _, c := range history {
fmt.Println(c)
}
Ətraflı Funksionallıq
go-git-in az nəzərə çarpan inkişaf etmiş xüsusiyyətləri vardır, bunlardan biri də Libgit2 arxa planlarına bənzər bir taxılan saxlama sistemidir. Varsayılan tətbiq çox sürətli olan yaddaş içi depolamadır.
r, err := git.Clone(memory.NewStorage(), nil, &git.CloneOptions{
URL: "https://github.com/go-git/go-git",
})
Taxıla bilən yaddaş bir çox maraqlı seçim təqdim edir. Məsələn, https://github.com/go-git/go-git/tree/master/_examples/storage istinadlar, obyektlər və konfiqurasiyanı Aerokosmik bazasında saxlamağa imkan verir.
Digər bir xüsusiyyət çevik bir fayl sistemi soyutlamasıdır. https://pkg.go.dev/github.com/go-git/go-billy/v5?tab=doc#Filesystem istifadə edərək, bütün sənədləri fərqli şəkildə, hamısını qablaşdırmaqla saxlamaq asandır. Yəni diskdə bir arxiv və ya hamısını yaddaşda saxlamaq olar.
Başqa bir inkişaf etmiş istifadəyə, https://github.com/go-git/go-git/blob/master/_examples/custom_http/main.go da tapılan kimi yaxşı tənzimlənən HTTP müştərisi daxildir.
customClient := &http.Client{
Transport: &http.Transport{ // accept any certificate (might be useful for testing)
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
},
Timeout: 15 * time.Second, // 15 second timeout
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse // don't follow redirect
},
}
// Override http(s) default protocol to use our custom client
client.InstallProtocol("https", githttp.NewClient(customClient))
// Clone repository using the new client if the protocol is https://
r, err := git.Clone(memory.NewStorage(), nil, &git.CloneOptions{URL: url})
Əlavə Oxu
Go-git qabiliyyətlərinin tam müalicəsi bu kitabın əhatəsi xaricindədir. Go-git haqqında daha çox məlumat istəyirsinizsə, https://pkg.go.dev/github.com/go-git/go-git/v5ünvanında API sənədləri və https://github.com/go-git/go-git/tree/master/_examples-də bir sıra istifadə nümunələri var.