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.
Tip
|
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 $ git checkout testing
$ git branch --no-merged master
topicA
featureB |
Caution
|
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.
Warning
|
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