ponedeljek, 18. marec 2013

Git 'vejenje' (git branching)

Ker je za delo (tudi samostojno delo!) branching tako zelo uporabna metoda sem se odločil , da spišem tale kratek potek dela.


Teorija gre tako:
Programer se loti nekega spreminjanja kode za katerega pa ne ve, če bo sploh uporaben. Recimo, da hočete v vaš program dodati možnost izvoza podatkov v Libre Office.
Zato namesto da pišete v MASTER repo raje naredi novo vejo (branch), ki jo poimenuje po spremembi, ki jo želiote izvesti. Torej nekako tako:

Git checkout -b libreOffice

-b je za branch

V ukazni lupini boste zaznali spremembo:
namesto npr:
Hoornet@prostitute /c/Delo/MyWorkDir (master)

Bo sedaj 
Hoornet@prostitute /c/Delo/MyWorkDir (libreOffice)

Git vam tako sporoča na kateri veji se trenutno nahajate. Preskok je u šubu. Pri kreaciji nove veje to pomeni, da imate še vedno na voljo vso kodo od prej a lahko sedaj bolj ziheraško spreminjate kodo, saj manipulerate drugo vejo. V kateremkoli trenutku se lahko vrnete na prejšnje satanje.
Ko ste končali s 'pod-projektom' se odločite ali boste prelili spremembe v master ali ne. V primeru da je šlo vse ok delujte tako:

Najprej skočite nazaj na master z 
Git checkout  master

V trenutku boste nazaj v stanju pred vsemi spremmbami (t.j. v zadnjem stanju pred skokom v novo vejo). Sedaj lahko v master (t.j. v vejo v kateri se trenutno nahajate) zmixate prej ustvarjeno vejo z:
Git merge libreOffice

S tem ukazom ste vse spremembe, ki ste jih ustvarili v novi veji z imenom libreOffice zlili skupaj v default vejo (master).
Če hočete lahko sedaj pobrišete odrabljeno vejo z 
Git branch -d libreOffice
Lahko pa jo seveda pustite pri meru za eventualno vrnitev?! Eh! niti ne :) Rape its ass out