-
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
-
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
-
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
7.12 Git AlÉtlÉri - Bundling
Bundling
Git mÉlumatlarını ÅÉbÉkÉ (HTTP, SSH vÉ s.) üzÉrindÉn ƶtürmÉyin ümumi yollarını nÉzÉrdÉn keƧirsÉk dÉ, ümumilikdÉ istifadÉ olunmayan, lakin olduqca faydalı ola bilÉcÉk daha bir yol var.
Git ƶz mÉlumatlarını vahid bir faylda ābundlingā etmÉyÉ qadirdir.
Bu müxtÉlif ssenarilÉrdÉ faydalı ola bilÉr.
BÉlkÉ ÅÉbÉkÉniz itdi vÉ iÅ yoldaÅlarınıza dÉyiÅikliklÉr gƶndÉrmÉk istÉyirsiniz.
Ola bilsin ki, baÅqa yerdÉ iÅlÉyirsiniz vÉ tÉhlükÉsizlik sÉbÉbi ilÉ yerli ÅÉbÉkÉyÉ qoÅula bilmirsiniz.
BÉlkÉ wireless / ethernet kartınız sadÉcÉ qırılıb.
BÉlkÉ bu anda ortaq bir serverÉ girmÉ imkanı yoxdur, kimÉsÉ yenilÉmÉlÉri e-poƧtla gƶndÉrmÉk istÉyirsiniz vÉ 40 Émri format-patch
vasitÉsilÉ Ć¶türmÉk istÉmirsiniz.
git bundle
Émrinin kƶmÉk edÉ bilÉcÉyi yer mÉhz budur.
bundle
Émri, adÉtÉn git push
Émri ilÉ telin üzÉrindÉn atılacaq hÉr Åeyi, kimÉsÉ e-poƧt gƶndÉrÉ bilÉcÉyiniz vÉ ya bir flash sürücünüzÉ qoya bilÉcÉyiniz vÉ sonra baÅqa bir depoya daxil olaraq gƶndÉrÉ bilÉcÉyiniz ikili sÉnÉdÉ yıÄacaqdır.
SadÉ bir misala baxaq. DeyÉk ki, iki commit olan bir depo var:
$ git log
commit 9a466c572fe88b195efd356c3f2bbeccdb504102
Author: Scott Chacon <schacon@gmail.com>
Date: Wed Mar 10 07:34:10 2010 -0800
Second commit
commit b1ec3248f39900d2a406049d762aa68e9641be25
Author: Scott Chacon <schacon@gmail.com>
Date: Wed Mar 10 07:34:01 2010 -0800
First commit
Bu deponukimÉsÉ gƶndÉrmÉk istÉsÉniz vÉ push etmÉk üçün bir depo ÉldÉ edÉ bilmirsinizsÉ vÉ ya sadÉcÉ onu quraÅdırmaq istÉmirsinizsÉ, onu git bundle create
ilÉ baÄlaya bilÉrsiniz.
$ git bundle create repo.bundle HEAD master
Counting objects: 6, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (6/6), 441 bytes, done.
Total 6 (delta 0), reused 0 (delta 0)
İndi repo.bundle
adlı bir faylınız var ki, iƧindÉ deponun Ésas branch-ını yenidÉn yaratmaq üçün lazım olan bütün mÉlumatlar var. Bundle Émri ilÉ daxil olmasını istÉdiyiniz hÉr bir arayıÅı vÉ ya bir sıra ÉmrlÉri siyahıya salmalısınız.
Bunun baÅqa bir yerdÉ dÉ klonlanmasını istÉsÉniz, burada etdiyimiz kimi bir mÉlumat olaraq HEAD ÉlavÉ etmÉlisiniz.
Bu repo.bundle
faylını baÅqasına gƶndÉrÉ vÉ ya USB sürücüsünÉ qoyub üzÉrindÉn keĆ§É bilÉrsiniz.
DigÉr tÉrÉfdÉn, bu repo.bundle
faylı gƶndÉrdiyinizk vÉ layihÉ Ć¼zÉrindÉ iÅlÉmÉk istÉdiyinizi sƶylÉyin.
İkili fayldan bir URL-É müraciÉt edÉ bilÉcÉk kimi bir qovluÄu klonlaÅdıra bilÉrsiniz.
$ git clone repo.bundle repo
Cloning into 'repo'...
...
$ cd repo
$ git log --oneline
9a466c5 Second commit
b1ec324 First commit
ĘgÉr arayıÅlara HEAD daxil etmirsinizsÉ, -b master
vÉ ya hansı branch daxil edildiyini dÉ gƶstÉrmÉlisiniz, çünki Éks halda hansı branch-ın yoxlanılacaÄını bilmÉyÉcÉk.
İndi deyÉk ki, üç tapÅırıÄı yerinÉ yetirmisiniz vÉ yeni ÉmrlÉri bir USB ƧubuÄuna vÉ ya e-poƧtunuzdakı bir dÉstÉ vasitÉsilÉ geri gƶndÉrmÉk istÉyirsiniz.
$ git log --oneline
71b84da Last commit - second repo
c99cf5b Fourth commit - second repo
7011d3d Third commit - second repo
9a466c5 Second commit
b1ec324 First commit
ĘvvÉlcÉ paketÉ daxil etmÉk istÉdiyimiz tapÅırıÄı müÉyyÉnlÉÅdirmÉliyik. ÅÉbÉkÉ Ć¼zÉrindÉn ƶtürülmÉsi üçün minimum mÉlumat toplusunu tÉyin edÉn ÅÉbÉkÉ protokollarından fÉrqli olaraq, bunu manual olaraq anlamalıyıq. İndi eyni Åeyi edÉ bilÉr vÉ iÅlÉyÉcÉk bütün deponu bundle edÉ bilÉrsiniz, ancaq fÉrqlÉri yÉni, yalnız local olaraq hazırladıÄınız üç Émri bundle etmÉk daha yaxÅıdır.
Bunu etmÉk üçün fÉrqi hesablamalı olacaqsınız. Commit Aralıqları-da tÉsvir etdiyimiz kimi, bir sıra yollarla bir sıra tapÅırıqları tÉyin edÉ bilÉrsiniz.
ĘvvÉlcÉ klonlaÅdırdıÄımız branch-da olmayan master
branch-mızdakı üç Émri ÉldÉ etmÉk üçün origin/master..master
vÉ ya master ^origin/master
kimi bir ÅeydÉn istifadÉ edÉ bilÉrik.
Bunu log
Émri ilÉ sınaya bilÉrsiniz.
$ git log --oneline master ^origin/master
71b84da Last commit - second repo
c99cf5b Fourth commit - second repo
7011d3d Third commit - second repo
BelÉliklÉ, bundle-a daxil etmÉk istÉdiyimiz tapÅırıqların siyahısı olduqdan sonra onları yıÄırıq.
Bunu git bundle create
Émri ilÉ edirik vÉ ona bundle-mızın olmasını istÉdiyimiz bir ad verÉrÉk, daxil olmaÄımız lazım olan ÉmrlÉr sıra tÉqdim edirik.
$ git bundle create commits.bundle master ^9a466c5
Counting objects: 11, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (9/9), 775 bytes, done.
Total 9 (delta 0), reused 0 (delta 0)
İndi qovluÄumuzda bir commits.bundle
faylı var.
Bunu gƶtürüb ortaÄımıza gƶndÉrsÉk, o vaxt orada daha Ƨox iÅ gƶrülmüŠolsa belÉ, onu orijinal depo iƧÉrisinÉ idxal edÉ bilÉr.
Bundle-ı aldıqda, onu depo iƧÉrisinÉ gÉtirmÉdÉn ÉvvÉl nÉ olduÄunu bilmÉk üçün yoxlaya bilÉr.
Birinci Émr, sÉnÉdin doÄrudan Git paketi olduÄuna vÉ onu düzgün ÅÉkildÉ yenidÉn qurması üçün bütün lazımi soylarınıza sahib olduÄundan Émin olacaq bundle verify
Émridir.
$ git bundle verify ../commits.bundle
The bundle contains 1 ref
71b84daaf49abed142a373b6e5c59a22dc6560dc refs/heads/master
The bundle requires these 1 ref
9a466c572fe88b195efd356c3f2bbeccdb504102 second commit
../commits.bundle is okay
Bundler, hÉr üçü deyil, yalnız son iki ÉmrdÉn ibarÉt bir dÉstÉ yaratmıŠolsaydı, orijinal depo, lazımlı tarix olmadıÄı üçün onu idxal edÉ bilmÉzdi.
Verify
Émri bunun yerinÉ belÉ gƶrünÉrdi:
$ git bundle verify ../commits-bad.bundle
error: Repository lacks these prerequisite commits:
error: 7011d3d8fc200abe0ad561c011c3852a4b7bbe95 Third commit - second repo
HÉr ÅÉkildÉ ilk bundle-mız etibarlıdır, ona gƶrÉ dÉ ondan Émr gƶtürÉ bilÉrik. Bundle-da hansı branch-ların idxal edilÉ bilÉcÉyini gƶrmÉk istÉyirsinizsÉ, yalnız head-ları sadalamaq üçün bir Émr var:
$ git bundle list-heads ../commits.bundle
71b84daaf49abed142a373b6e5c59a22dc6560dc refs/heads/master
verify
alt komandası sizÉ head-lÉri dÉ xÉbÉr verÉcÉkdir.
MÉsÉlÉ budur ki, nÉyin pull edilÉ bilÉcÉyini gƶrmÉk üçün bu bundle-dan fetch
vÉ ya pull
ÉmrlÉrini idxal ÉmrlÉri kimi istifadÉ edÉ bilÉrsiniz.
Budur, bundle-ın master
branch-nı depomuzdakı other-master
adlı bir branch-a gÉtirÉcÉyik:
$ git fetch ../commits.bundle master:other-master
From ../commits.bundle
* [new branch] master -> other-master
İndi gƶrürük ki, idxal olunmuÅ ÉmrlÉrini other-master
branch-ı ilÉ eyni zamanda ƶz master
branch-mızda etdiyimiz hÉr hansı bir Émr var.
$ git log --oneline --decorate --graph --all
* 8255d41 (HEAD, master) Third commit - first repo
| * 71b84da (other-master) Last commit - second repo
| * c99cf5b Fourth commit - second repo
| * 7011d3d Third commit - second repo
|/
* 9a466c5 Second commit
* b1ec324 First commit
BelÉliklÉ, git bundle
sizin üçün müvafiq ÅÉbÉkÉ vÉ ya bƶlüÅdürülmüŠdepolarınız olmadıqda bƶlüÅmÉk vÉ ya ÅÉbÉkÉ tipli ÉmÉliyyatlar aparmaq üçün hÉqiqÉtÉn faydalı ola bilÉr.