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
3. Veje Git
4. Git na strežniku
5. Porazdeljeni Git
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
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