Írta: tom1964h
Branchek létrehozása és kezelése
A távoli és a helyi repóknak több “szobájuk”, azaz helyiségük is lehet. A master a tárolónak a fő produkciós részlege; emellett létezhetnek fejlesztő műhelyek párhuzamosan is: ezek további branch-ek.
A központi repó eleve tartalmazhat többféle branch-et. Te helyileg számos különböző branch-et létrehozhatsz, amelyek mind a master másolatai. Itt kipróbálhatod a fejlesztéseidet, amit majd beolvasztanak a master-be. A lényeg az, hogy a központi repó megfelelő branch-ébe kerüljenek fel a fejlesztéseid.
Egy munkahelyen általában|nagy többségben|jellemzően a következők fajta branch-ek létezhetnek:
- a master a master branch, ez a produkciós branch (ezt látják később a felhasználók) - ebben találhatók meg a főbb verziók
- van development branch, dev environment - ez fejlesztői branch, ide pakolják fel a fejlesztők a dolgaikat; ha mindent rendben találnak, átrakják az engedélyezett commit-okat a master branch-be
- külön tester brach a tesztelőknek
- speciális brach-ok a cég elkülönített részlegeinek
- branch-ok a hibajavításhoz
- lokális branch-variációk: saját gépen létrehozhatok önálló branch-eket; k
Branch hiererchia:
- alapból a master van a hierarchia csúcsán
- válthatunk szabadon a branchek között vagy létrehozhatunk újat
- a HEAD mutatja ezt meg
git branch
Egy új branch-et igen könnyen létrehozhatunk. Terminálban lépjünk át a korábban leklónozott GitTest repóba. Kiderítjük hogy nevezik most és létrehozunk egy fejlesztői branch-ot (ez történetesen kitöröl majd mindent, ezért “clean-up” lesz a neve, de ez ne zavarjon, ugyanilyan erővel létre is hozhatunk új állományokat):
git branch
tájékoztat, melyik branch-ben vagyunk épp, hol állunk épp; ha utána egy nevet írunk akkor létrehoz egy új branch-ot, azzal a névvel (ami egy teljes másolat lesz)git branch clean_up
létrehoztunk egy új repót, clean_up névvel
git checkout
Ha létrehoztuk az új branch-et, akkor szeretnénk dolgozni is benne:
git checkout clean_up
ezzel átváltunk a clean_up branch-begit branch
ezzel ellenőrizhetjük hol vagyunk:* clean_up
master
- ha most kiadjuk az
ls
parancsot, akkor láthatjuk, hogy az eredeti master branch teljes másolatában vagyunk épp, hiszen mind a három TXT file megvan a working direktory-ban - ha törlünk ebben a branch-ben, akkor ezek a törlések az adott branch-on belül érvényesülnek - egy branchon belül mindent megtehetek, ez a saját játszóterem (sandbox)
git rm
A demónak megfelelően töröljünk mi is ebben a clean_up branch-ben, majd tegyük stage-re és commit-oljuk is el:
git rm *.txt
törli a megjelölt file-t vagy file-okat (játszanak a wildcard karakterek) - ezzel fizikailag is törlünk, a git tájékoztat minket miket töröltünk, plusz stage-re is rakja a módosításokatgit status
látható a törölt elemek listája a színpadon, “deleted:” sorokkal jelölvegit commit -m "Remove all the texts"
ezzel a paranccsal a verziókövetés (a repó) is értesül a törlésről
git checkout master
ha kontrollképpen átváltunk a masterre, ott azls
parancs hatására látható, hogy nincsenek törölve a master branch-ban az állományok
git merge
Ha a master-ben is át szeretnénk vezetni a változtatásainkat (pl. ott is törölni szeretnénk), akkor a clean_up branch-emet összefésülhetem a master branch-csel:
git merge clean-up
a master branchen állva meg kell jelölni, mit fésülök össze ezzel :: most már a masterben is törölve lesznek az állományok :: bővebben lásd Git Branching - Basic Branching and Merginggit log
a git folyamatosan naplózza a változtatásokat
delete a branch
Ha törölni szeretnénk egy branch-et, akkor a -d kapcsoló segíthet (ha már minden commit-ját belefésültem a master branch-be):
git branch -d clean_up
Ezek után ne felejtsünk el egy git push parancsot kiadni, hogy a módosításokról a központi repó is értesüljön.
git workflow
Az egyik jó anyag kezdésnek a GitHub workflow bemutatása az Understanding the GitHub flow - menjünk végig a diákon!
További ajánlatok:
- egy haladóbb és magyarázó anyag a témában a What is a Git workflow?
- visszatérve a Git etikettre fontos megemlíteni a workflow etikett-et és sok más fontos kérdést (branch vs.fork, rebase vs.merge, commit stílusok és a message-ek, stb) a Git Workflow Etiquette anyagban
Interaktiv Git gyakorlat
A Learn Git Branching oldalon interaktív módon, játékosan (angol nyelven) gyakorolhatjuk a Git használatát. Az alapokat nagyon hamar meghaladja.
forrás learngitbranching.js.org