-
1. Začetek
- 1.1 O nadzoru različic
- 1.2 Kratka zgodovina Gita
- 1.3 Kaj je Git?
- 1.4 Ukazna vrstica
- 1.5 Namestitev Gita
- 1.6 Prva nastavitev 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 Aliasi Git
- 2.8 Povzetek
-
3. Veje Git
- 3.1 Veje na kratko
- 3.2 Osnove vej in združevanja
- 3.3 Upravljanje vej
- 3.4 Poteki dela z vejami
- 3.5 Oddaljene veje
- 3.6 Ponovno baziranje
- 3.7 Povzetek
-
4. Git na strežniku
- 4.1 Protokoli
- 4.2 Pridobitev Gita na strežniku
- 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 Možnosti gostovanja pri tretjih ponudnikih
- 4.10 Povzetek
-
5. Porazdeljeni Git
- 5.1 Porazdeljeni poteki dela
- 5.2 Prispevek k projektu
- 5.3 Vzdrževanje projekta
- 5.4 Povzetek
-
6. GitHub
-
7. Orodja Git
- 7.1 Izbira revizije
- 7.2 Interaktivno pripravljanje
- 7.3 Shranjevanje na varno (angl. stashing) in čiščenje
- 7.4 Podpisovanje vašega dela
- 7.5 Iskanje
- 7.6 Prepisovanje zgodovine
- 7.7 Demistifikacija ponastavitve
- 7.8 Napredno združevanje
- 7.9 Rerere
- 7.10 Razhroščevanje z Gitom
- 7.11 Podmoduli
- 7.12 Povezovanje v pakete
- 7.13 Zamenjava
- 7.14 Shramba poverilnic
- 7.15 Povzetek
-
8. Prilagoditev Gita
- 8.1 Konfiguracija Git
- 8.2 Atributi Git
- 8.3 Kljuke Git
- 8.4 Primer pravilnika, ki ga uveljavlja Git
- 8.5 Povzetek
-
9. Git in ostali sistemi
- 9.1 Git kot odjemalec
- 9.2 Migracija na Git
- 9.3 Povzetek
-
10. Notranjost Gita
- 10.1 Napeljava in keramika
- 10.2 Objekti Git
- 10.3 Reference Git
- 10.4 Packfiles (datoteke zmanjšanih podatkov)
- 10.5 Refspec
- 10.6 Protokoli prenosa
- 10.7 Vzdrževanje in obnovitev podatkov
- 10.8 Spremenljivke okolja
- 10.9 Povzetek
-
A1. Dodatek A: Git v drugih okoljih
- A1.1 Grafični vmesniki
- A1.2 Git v 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 sisteme napeljave
3.4 Veje Git - Poteki dela z vejami
Poteki dela z vejami
Sedaj, ko imate osnove vej in združevanja, kaj z njimi lahko ali bi z njimi morali narediti? V tem razdelku bomo pokrili nekaj pogostih potekov dela, kar ta lahkotna razvejanja omogočijo, da se lahko odločite, ali bi jih želeli vkomponirati v vaš lastni razvojni cikel.
Dolgotrajne veje
Ker Git uporablja enostavno tri-načinsko združevanje, je združevanje iz ene veje v drugo večkrat skozi daljše časovno obdobje v splošnem enostavno. To pomeni, da imate nekaj vej, ki so vedno odprte in jih uporabljate za različne faze svojega razvojnega cikla; pogostokrat lahko združite iz nekaj njih v druge.
Mnogi Git razvijalci imajo potek dela, ki zajema tak pristop, kot je imeti samo kodo, ki je v celoti stabilna v njihovi veji master
— verjetno samo koda, ki je bila ali pa bo izdana.
Imajo drugo vzporedno vejo imenovano develop
ali next
, iz katere delajo ali pa jo uporabljajo za testiranje stabilnosti — ni nujno vedno stabilna, vendar kadarkoli doseže stabilno stanje, se jo lahko združi v master
.
Uporabljena je za poteg tematskih vej (kratkotrajne veje, kot je vaša prejšnja veja iss53
), ko so pripravljene, da se zagotovi, da prestanejo vse teste in ne povzročajo napak.
V resnici govorimo o kazalcih, ki se premikajo navzgor po poti potrjevanj, ki jih delate. Stabilne veje so nižje na poti v vaši zgodovini potrditev in najnovejše veje so bolj na vrhu zgodovine.
![Linearni pogled progresivno stabilnega razvejanja](png/lr-branches-1.png)
V splošnem je o njih enostavnejše razmišljati kot o delovnih silosih, kjer skupki potrditev napredujejo k bolj stabilnim silosom, ko so v celoti testirani.
![Pogled »silosa« progresivno stabilnega razvejanja](png/lr-branches-2.png)
Tako delo lahko nadaljujete na mnogih nivojih stabilnosti.
Nekateri večji projekti imajo tudi vejo proposed
ali pu
(angl. proposed updates), ki ima integrirane veje, ki še niso pripravljene, da grejo v vejo next
ali master
.
Ideja je, da so vaše veje na različnih nivojih stabilnosti; ko dosežejo stabilnejši nivo, so združene v vejo nad njimi.
Ni treba imeti več dolgotrajnih vej, vendar je to pogostokrat koristno, posebej ko imate opravka z zelo velikimi in kompleksnimi projekti.
Tematske veje
Tematske veje na drugi strani so uporabne v projektih kakršnihkoli velikosti. Tematska veja je kratkotrajna veja, ki ste jo izdelali in jo uporabljate za posamezno določeno lastnost ali povezano delo. To je nekaj, česar verjetno še nikoli niste počeli z VCS prej, ker je v splošnem predrago izdelovati in združevati veje. Vendar v Gitu je pogosto izdelati, delati na, združiti in izbrisati veje nekajkrat na dan.
To ste videli v zadnjem razdelku pri ustvarjanju vej iss53
in hotfix
.
Na njih ste naredili nekaj potrditev in jih takoj izbrisali po združitvi v glavno vejo.
Ta tehnika vam omogoča kontekstni preklop hitro in v celoti — ker je vaše delo razdeljeno v nekaj silosov, kjer morajo biti vse spremembe v tej veji povezane z določeno temo, je enostavnejše videti, kaj se je zgodilo med pregledom kode in podobno.
Tam lahko sledite spremembam nekaj minut, dni, ali mesecev in jih združite, ko ste pripravljeni ne glede na vrstni red, v katerem ste jih ustvarili ali delali na njih.
Premislite o primeru, ko delate na nekem delu (na master
), razvejate za težavo (iss91
), delate ne njej nekaj časa, razvejate drugo vejo, da poskusite drug način upravljanja z isto stvarjo (iss91v2
), se vrnete na vašo vejo master
in delate tam nekaj časa in nato razvejate, da naredite nekaj dela, za katero niste prepričani, če je dobra ideja (veja dumbidea
).
Vaša zgodovina potrditev bo videti nekako takole:
![Več tematskih vej](png/topic-branches-1.png)
Sedaj recimo, da se odločite, da imate raje drugo rešitev za svojo težavo (iss91v2
); svojim sodelavcem ste pokazali vejo dumbidea
in izkaže se, da je genialna.
Originalno vejo iss91
lahko vržete stran (izgubite potrditvi C5
in C6
) in jo združite v drugi dve.
Vaša zgodovina je potem videti takole:
![Zgodovina po združitvi `dumbidea` in `iss91v2`](png/topic-branches-2.png)
dumbidea
in iss91v2
V večje podrobnosti o različnih možnih potekih dela za vaš Git projekt bomo šli v poglavju Porazdeljeni Git, tako da preden se odločite, katero shemo razvejanja bo vaš naslednji projekt uporabljal, se prepričajte, da ste prebrali to poglavje.
Pomembno si je zapomniti, da ko delate vse to, so te veje v celoti lokalne. Ko razvejujete in združujete, je vse narejeno samo v vašem repozitoriju Git — ne dogaja se nikakršna komunikacija s strežnikom.