-
1. Pričetek
- 1.1 O nadzoru različic
- 1.2 Kratka zgodovina Gita
- 1.3 Kaj je Git?
- 1.4 Ukazna vrstica
- 1.5 Git namestitev
- 1.6 Prva namestitev Gita
- 1.7 Pridobivanje pomoči
- 1.8 Povzetek
-
2. Osnove Git
- 2.1 Pridobivanje repozitorija Git
- 2.2 Snemanje sprememb v repozitorij
- 2.3 Pregled zgodovine potrditev
- 2.4 Razveljavljanje stvari
- 2.5 Delo z daljavami
- 2.6 Označevanje
- 2.7 Git aliasi
- 2.8 Povzetek
-
3. Veje Git
- 3.1 Veje na kratko
- 3.2 Osnove vej in združevanja
- 3.3 Upravljanje vej
- 3.4 Potek dela z vejami
- 3.5 Oddaljene veje
- 3.6 Ponovno baziranje (rebasing)
- 3.7 Povzetek
-
4. Git na strežniku
- 4.1 Protokoli
- 4.2 Pridobiti Git na strežnik
- 4.3 Generiranje vaših javnih ključev SSH
- 4.4 Nastavitev strežnika
- 4.5 Prikriti proces Git
- 4.6 Pametni HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Tretje osebne opcije gostovanja
- 4.10 Povzetek
-
5. Distribuirani Git
- 5.1 Razdeljeni poteki dela
- 5.2 Prispevanje projektu
- 5.3 Vzdrževanje projekta
- 5.4 Povzetek
-
6. GitHub
-
7. Orodja Git
- 7.1 Revision Selection
- 7.2 Interactive Staging
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Debugging with Git
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Povzetek
-
8. Prilagoditev Gita
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Kljuke Git
- 8.4 An Example Git-Enforced Policy
- 8.5 Povzetek
-
9. Git in ostali sistemi
- 9.1 Git kot klient
- 9.2 Migracija na Git
- 9.3 Povzetek
-
10. Notranjost Gita
- 10.1 Napeljava in keramika
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Povzetek
-
A1. Dodatek A: Git v drugih okoljih
- A1.1 Grafični vmesniki
- A1.2 Git v programu Visual Studio
- A1.3 Git v Visual Studio Code
- A1.4 Git v IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git v Sublime Text
- A1.6 Git v Bashu
- A1.7 Git v Zsh
- A1.8 Git v Powershellu
- A1.9 Povzetek
-
A2. Dodatek B: Vdelava Gita v vašo aplikacijo
- A2.1 Git v ukazni vrstici
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Dodatek C: Ukazi Git
- A3.1 Nastavitev in konfiguracija
- A3.2 Pridobivanje in ustvarjanje projektov
- A3.3 Osnove posnetkov
- A3.4 Veje in združevanje
- A3.5 Deljenje in posodabljanje projektov
- A3.6 Pregled in primerjava
- A3.7 Razhroščevanje
- A3.8 Popravljanje
- A3.9 E-pošta
- A3.10 Zunanji sistemi
- A3.11 Administracija
- A3.12 Orodja za vododovodne sisteme
5.1 Distribuirani Git - Razdeljeni poteki dela
Sedaj, ko imate oddaljeni repozitorij Git nastavljen kot točko za vse razvijalce, da delijo svojo kodo in so vam poznani osnovni ukazi Git v lokalnem poteku dela, boste pogledali, kako uporabiti nekaj distribuiranih potekov dela, ki vam jih ponuja Git.
V tem poglavju, boste videli, kako delati z Gitom v distribuiranem okolju kot sodelavec in povezovalec. To pomeni, da se boste naučili, kako prispevati projektu kodo uspešno in narediti kakor enostavno za vas in vzdrževalca projekta je možno in tudi kako uspešno vzdrževati projekt s številnimi razvijalci, ki prispevajo.
Razdeljeni poteki dela
Z razliko od centraliziranih sistemov za kontrolo verzija (CVCS-ji), vam narava distribucije Gita omogoča, da ste veliko bolj fleksibilni v tem, kako razvijalci sodelujejo na projektih. V centraliziranih sistemih je vsak razvijalec vozlišče, ki bolj ali manj dela enako na centralnem središče. Vendar v Git-u vsak razvijalec je potencialno oboje vozlišče in središče - to je, vsak razvijalec lahko tako prispeva kodo k drugim repozitorijem in vzdržuje javen repozitorij na katerem ostali lahko osnujejo svoje delo in h katerem lahko prispevajo. To odpira širok spekter zmožnosti poteka dela za vaš projekt in/ali vašo ekipo, torej bomo pokrili nekaj pogostih paradigm, ki izkoriščajo to fleksibilnost. Šli bomo skozi prednosti in možne slabosti vsakega modela; lahko izberete kateregakoli za uporabo ali mešate in ujamete lastnosti iz vsakega.
Centraliziran potek dela
V centraliziranih sistemih je v splošnem en modelo sodelovanja - centralizirani potek dela. Centralno središče ali repozitorij lahko sprejema kodo in vsakdor sinhronizira svoje delo nanj. Število razvijalcev so vozlišča - uporabniki tega središča - in sinhronizirajo na to lokacijo.

To pomeni, da če dva razvijalca klonirata iz središča in oba naredita spremembe, prvi razvijalec, ki porine svoje spremembe nazaj gor, lahko to naredi brez problemov. Drugi razvijalec mora združiti delo prvega preden poriva spremembe gor, da ne prepiše sprememb prvega razvijalca. Ta koncept je tako resničen v Git-u kot tudi v Subversion-u (ali kateremkoli drugem CVCS-ju) in ta model deluje odlično v Git-u.
Če ste že udobni s centraliziranim potekom dela v vašem podjetju ali ekipi, lahko enostavno nadaljujete z uporabo tega poteka dela v Git-u. Enostavno nastavite en repozitorij in dajte vsakomur v vaši ekipi dostop porivanja; Git ne bo dovolil uporabnikov prepisati drug drugega. Recimo, da John in Jessica oba začneta delati istočasno. John konča svoje spremembe in jih porine na strežnik. Nato Jessica poskuša poriniti njene spremembe, vendar jih strežnik zavrne. Povedano ji je, da poskuša poriniti t.i. non-fast-forward spremembe in da tega ne bo mogla narediti dokler ne ujame in združi. Ta potek dela je atraktiven za veliko ljudi, ker je paradigma, s katero so mnogi seznanjeni in udobni.
To tudi ni omejeno na majhne ekipe. Z Git modelom razvejanja, je možno za stotine razvijalcev, da uspešno delajo na enem projektu skozi ducat vej simultano.
Potek dela povezovalnega upravitelja
Ker vam Git omogoča imeti več oddaljenih repozitorijev, je možno imeti potek dela, kjer ima vsak razvijalec pisalni dostop do svojega lastnega javnega repozitorija in bralni dostop do vseh ostalih. Ta scenarij pogosto vključuje kanonični repozitorij, ki predstavlja ``uradni'' projekt. Da prispevate temu projektu, ustvarite vaš lastni javni klon projekta in porinete vaše spremembe vanj. Nato lahko pošljete zahtevek vzdrževalcu glavnega projekta, da potegne vaše spremembe. Vzdrževalec lahko nato doda vaš repozitorij kot daljavo, testira vaše spremembe lokalno, jih združi v svojo vejo in porine nazaj v svoj repozitorij. Proces deluje sledeče (glejte Integration-manager workflow.):
-
Vzdrževalec projekta porine v svoj javni repozitorij.
-
Prispevalec klonira ta repozitorij in naredi spremembe.
-
Prispevalec porine v svojo lastno kopijo.
-
Prispevalec pošlje vzdrževalcu e-pošto, kjer ga prosi, da potegne spremembe.
-
Vzdrževalec doda repozitorij prispevalca kot daljavo in združi lokalno.
-
Vzdrževalec porine zdrzžene spremembe v glavni repozitorij.

To je zelo pogost potek dela z orodji s središčno-osnovo kot sta GitHub ali GitLab, kjer je enostavno "forkati" projekt in poriniti vaše spremembe v vaš fork, da jih vsakdo vidi. Ena glavnih prednosti tega pristopa je, da lahko nadaljujete delo in vzdrževalec glavnega repozitorija lahko potegne vaše spremembe kadarkoli. Prispevalcem ni treba čakati, da projekt vključi njihove spremembe - vsaka stran lahko dela po svojem lastnem ritmu.
Potek dela diktator in poročniki
To je različica poteka dela večih repozitorijev. V splošnem je uporabljen na velikih projektih s stotinami sodelavcev; eden znanih primerov je jedro Linux Različni upravitelji integracij so zadolženi za določene dele repozitorija; imenujejo se poročniki. Vsi poročniki imajo enega upravitelja integracije znanega kot dobrohotni diktator. Repozitorij dobrohotnega diktatorja služi kot referenčni repozitorij iz katerega morajo vsi sodelavci potegniti. Proces deluje takole (glejte Benevolent dictator workflow.):
-
Splošni razvijalci delajo na njihovih tematskih vejah in ponovno bazirajo svoje delo na glede na
master
. Vejamaster
je veja diktatorja. -
Poročniki združijo razvijalčeve tematske veje v svojo vejo
master
. -
Diktator združi poročnikove veje
master
v diktatorjevo vejomaster
. -
Diktator porine svojo
master
v referenčni repozitorij, da ostali razvijalci lahko ponovno bazirajo na njem.

Taka vrsta poteka dela ni pogosta, vendar je lahko uporabna v zelo velikih projektih ali v visoko hierarhičnih okoljih. Vodji projekta (diktatorju) omogoča delegirati večino dela in zbrati velike skupke kode na večih točkah preden jih integrira
Povzetek poteka dela
To so nekatere pogosto uporabljeni poteki dela, ki so možni v distribuiranih sistemih kot je Git, vendar lahko vidite, da so možne mnoge različice, ki ustrezajo vašem določenem realnem poteku dela. Sedaj ko lahko (upajmo) določite katera kombinacija poteka dela lahko deluje za vas, bomo pokrili nekaj določenih primerov kako doseči glavne vloge, ki naredijo različne poteke. V naslednji sekciji, se boste naučili o nekaterih pogostih vzorcih prispevanja projektu.