-
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.3 Veje Git - Upravljanje vej
Upravljanje vej
Sedaj, ko ste izdelali, združili in izbrisali nekaj vej, poglejmo nekaj orodij za upravljanje vej, ki bodo v pomoč, ko boste začeli uporabljati veje ves čas.
Ukaz git branch
naredi več kot samo, da ustvari in izbriše veje.
Če ga poženete brez argumentov, dobite enostaven seznam svojih trenutnih vej:
$ git branch
iss53
* master
testing
Bodite pozorni na znak *
, ki je predpona veje master
: označuje vejo, ki ste jo trenutno izvlekli (veja, kamor kaže HEAD
).
To pomeni, da če na tej točki naredite potrditev, se bo veja master
premaknila naprej z vašim novim delom.
Da pogledate zadnjo potrditev na vsaki veji, lahko poženete git branch -v
:
$ git branch -v
iss53 93b412c Fix javascript issue
* master 7a98805 Merge branch 'iss53'
testing 782fd34 Add scott to the author list in the readme
Uporabni možnosti --merged
in --no-merged
lahko filtrirata ta seznam na veje, ki ste jih že ali še niste združili v vejo, na kateri trenutno delate.
Da pogledate, katere veje so že združene v vejo, na kateri ste, lahko poženete git branch --merged
:
$ git branch --merged
iss53
* master
Ker ste iss53
že prej združili, jo vidite na svojem seznamu.
Veje na tem seznamu brez *
spredaj se v splošnem lahko izbriše z git branch -d
; njihovo delo ste že vkomponirali v drugo vejo, torej ne boste ničesar izgubili.
Da pogledate vse veje, ki vsebujejo delo, ki ga še niste združili, lahko poženete git branch --no-merged
:
$ git branch --no-merged
testing
To pokaže vašo drugo vejo.
Ker vsebuje delo, ki še ni bilo združeno, poskus brisanja z git branch -d
ne bo uspešen:
$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
Če zares želite izbrisati vejo in izgubiti to delo, lahko brisanje prisilite z -D
, kot nakazuje koristno sporočilo.
Namig
|
Možnosti, opisani zgoraj, Vedno lahko podate dodaten argument, da povprašate o stanju združitve glede na neko drugo vejo, ne da bi najprej izvlekli to drugo vejo, kot na primer, kaj ni združeno v vejo
|
Spreminjanje imena veje
Pozor
|
Ne preimenujte vej, ki so še vedno v uporabi pri drugih sodelavcih. Ne preimenujte vej, kot so master/main/mainline, ne da bi prebrali odsek Spreminjanje imena veje master. |
Predpostavimo, da imate vejo, ki se imenuje bad-branch-name
in jo želite spremeniti v corrected-branch-name
, pri čemer bi radi ohranili celotno zgodovino.
Poleg tega želite ime veje spremeniti tudi na oddaljenem strežniku (GitHub, GitLab, ali drugem strežniku).
Kako to storiti?
Lokalno preimenujte vejo z ukazom git branch --move
:
$ git branch --move bad-branch-name corrected-branch-name
To nadomesti vašo vejo bad-branch-name
s corrected-branch-name
, vendar je ta sprememba trenutno le lokalna.
Da bi drugi videli popravljeno vejo na oddaljenem strežniku, jo morate potisniti:
$ git push --set-upstream origin corrected-branch-name
Sedaj si bomo na kratko ogledali, kje smo:
$ git branch --all
* corrected-branch-name
main
remotes/origin/bad-branch-name
remotes/origin/corrected-branch-name
remotes/origin/main
Opazite, da ste na veji corrected-branch-name
in da je na voljo na oddaljenem strežniku.
Vendar pa je veja s slabim imenom še vedno prisotna tam, ampak jo pa lahko izbrišete z izvedbo naslednjega ukaza:
$ git push origin --delete bad-branch-name
Tako je slabo ime veje v celoti nadomeščeno s popravljenim imenom veje.
Spreminjanje imena veje master
Opozorilo
|
Spreminjanje imena veje, kot je master/main/mainline/default, bo pokvarilo integracije, storitve, pomožne programe in skripte za gradnjo in izdajo, katere uporablja vaš repozitorij. Preden to storite, se posvetujte s svojimi sodelavci. Prav tako poskrbite, da temeljito preiščete svoj repozitorij in posodobite vse sklice na staro ime veje v svoji kodi in skriptih. |
Preimenujte vašo lokalno vejo master
v main
s sledečim ukazom:
$ git branch --move master main
Sedaj lokalna veja master
ne obstaja več, ker je bila preimenovana v vejo main
.
Da sporočite drugim, da vidijo novo vejo main
, jo morate potisniti na daljavo.
To naredi preimenovano vejo na voljo na daljavi.
$ git push --set-upstream origin main
Sedaj imamo naslednje stanje:
$ git branch --all
* main
remotes/origin/HEAD -> origin/master
remotes/origin/main
remotes/origin/master
Vaša lokalna veja master
je izginila, saj jo je zamenjala veja main
.
Veja main
je prisotna na oddaljenem strežniku.
Vendar pa je stara veja master
še vedno prisotna na oddaljenem strežniku.
Drugi sodelavci bodo nadaljevali z uporabo veje master
kot osnovo za svoje delo, dokler ne izvedete nadaljnjih sprememb.
Zdaj imate pred seboj še nekaj nalog, ki jih morate opraviti, da dokončate prehod:
-
Vsi projekti, ki temeljijo na tem, bodo morali posodobiti svojo kodo in/ali konfiguracijo.
-
Posodobite konfiguracijske datoteke za pogone testov.
-
Prilagodite skripte za gradnjo in izdajo.
-
Preusmerite nastavitve na gostitelju svojega repozitorija za stvari, kot so privzeta veja repozitorija, pravila združevanja in druge stvari, ki se prilegajo imenom vej.
-
Posodobite sklice na staro vejo v dokumentaciji.
-
Zaprite ali združite vse zahtevke potegov, ki se nanašajo na staro vejo.
Ko boste opravili vse te naloge in boste prepričani, da veja main
deluje enako kot veja master
, lahko izbrišete vejo master
:
$ git push origin --delete master