diff --git a/docs/workshop/3_branch.md b/docs/workshop/3_branch.md index b34f296ecde9b4598bc802fdef51eb461998f920..a955d0bea3455e2845c632d3c2bff4ef5d4b1e9b 100644 --- a/docs/workshop/3_branch.md +++ b/docs/workshop/3_branch.md @@ -249,4 +249,230 @@ $ git log --graph --oneline --all * 80560db jegyzeteim ignorĂĄlĂĄsa ``` -[ElĹzĹ](workshop/2_basics) | [KĂśvetkezĹ](remote/1_basics) +#### MergelĂŠs + +Az egyik legfontosabb dolog az ĂĄgak lĂŠtrehozĂĄsa utĂĄn, hogy +betudjuk olvasztani az ĂĄgunk valahova. +Az lenne a feladat, hogy a `master`-re beillesszĂźk az +`atnevezes` ĂĄgon vĂŠgzett mĂłdosĂtĂĄsaink. +Ehhez a `git merge <branch neve>` parancsot hasznĂĄlhatjuk. +A lĂŠnyege, hogy ez a parancs azt az ĂĄgat amit kivĂĄlasztottunk +megprĂłbĂĄlja beolvasztani oda ahol ĂŠpp a `HEAD` mutatĂłnk van. + +GyerĂźnk is ĂĄt a `master` ĂĄgra. + +``` +$ git checkout master +Switched to branch 'master' +``` + +EzutĂĄn pedig mergeljĂźk ĂĄt a `master`-re az `atnevezes` ĂĄgat. + +``` +git merge atnevezes +``` + +Ekkor meg fog nyĂlni a szĂśvegszerkesztĹnk, ugyanis egy +Ăşj mentĂŠspontot fogunk kĂŠszĂteni a `master ĂĄgunkra`. +A feladott merge Ăźzeneten nem kell mĂłdosĂtanĂźnk, teljesen +jĂł Ăşgy. + +A merge lefut ĂŠs lĂĄthatjuk mi is tĂśrtĂŠnt: + +``` +$ git merge atnevezes +Removing hordo +Merge made by the 'recursive' strategy. + gyumolcskosar => gyumolcskosar.txt | 0 + hordo => hordo.txt | 0 + 2 files changed, 0 insertions(+), 0 deletions(-) + rename gyumolcskosar => gyumolcskosar.txt (100%) + rename hordo => hordo.txt (100%) +``` + +Most egy Ăşjabb `git log`-al ezt lĂĄthatjuk: + +``` +* 366140d (HEAD -> master) Merge branch 'atnevezes' +|\ +| * 9dcfc79 (atnevezes) Adtam kiterjesztĂŠst a hordĂłnak +| * 7de1c94 HozzĂĄadtam a txt kiterjesztĂŠst a gyĂźmĂślcskosar fĂĄjlhoz +* | 15719cf Tettem a kosaramba szĹlĹt +|/ +* 80560db jegyzeteim ignorĂĄlĂĄsa +* 30bf35d Hoztunk egy hordĂłt +``` + +Ez a bizonyos `merge commit` egyszerre mutat a kĂŠt ĂĄg +tartalmĂĄra. + +#### Merge conlict + +Mi van akkor ha ketten egyszerre ugyanazt vĂĄltoztatjuk? +Ăgy dĂśntĂśttĂźnk, hogy pĂĄlinkĂĄt szeretnĂŠnk fĹzni jĂłzsival, +szĂłval a hordĂłba teszĂźnk ĂzlĂŠs szerint valami +gyĂźmĂślcsĂśt. +GyerĂźnk ĂĄt a sajĂĄt ĂĄgunkra, de egy paranccsal. +Ezt a `-b` kapcsolĂłval tudjuk +elĂŠrni a `git checkout` mellett. + +``` +$ git checkout -b lacko +``` + +Most egy Ăşjabb `git branch` kiadĂĄsĂĄval mĂĄr lĂĄthatĂł, hogy +3 ĂĄggal rendelkezĂźnk. + +``` + atnevezes +* lacko + master +``` + +TegyĂźnk bele a `hordo.txt`-be egy nekĂźnk tetszĹ gyĂźmĂślcsĂśt. + +```gyumolcs.txt +korte +``` + +Ezt mentsĂźk is el, de most picit csaljunk ĂŠs ne rakjuk +`staged`-be, hanem azonnal mentsĂźk el `-a` kapcsolĂłt hasznĂĄlva. + +``` +$ git commit -a -m "Raktam a hordĂłba kĂśrtĂŠt" +``` + +Ăgy dĂśntĂśttĂźnk a szomszĂŠd JĂłzsi, hogy ugyanebbe a hordĂłba +kĂśrtĂŠt szeretne rakni. MenjĂźnk ĂĄt a master ĂĄgra ĂŠs +tegyĂźk meg ott. + +Azt mondta a szomszĂŠd, hogy szilvĂĄt szeretne beletenni, szĂłval: + +```hordo.txt +szilva +``` + +Ezt is mentsĂźk el. + +``` +$ git commit -a -m "Raktam szilvĂĄt a hordĂłba" +``` + +Most ha megnĂŠzzĂźk a grĂĄfunkat Ăşjra, akkor lĂĄthatjuk is, +hogy mi a helyzet: + +``` +$ git log --graph --oneline --all + +* 41f1c05 (HEAD -> master) Raktam szilvĂĄt a hordĂłba +| * 6d6d1ac (lacko) Raktam a hordĂłba kĂśrtĂŠt +|/ +* 366140d Merge branch 'atnevezes' +|\ +| * 9dcfc79 (atnevezes) Adtam kiterjesztĂŠst a hordĂłnak +| * 7de1c94 HozzĂĄadtam a txt kiterjesztĂŠst a gyĂźmĂślcskosar fĂĄjlhoz +* | 15719cf Tettem a kosaramba szĹlĹt +|/ +* 80560db jegyzeteim ignorĂĄlĂĄsa +* 30bf35d Hoztunk egy hordĂłt +... +``` + +Na ĂŠs akkor most mergeljĂźnk be a master-re a mĂłdosĂtĂĄsaink. + +``` +$ git merge lacko +Auto-merging hordo.txt +CONFLICT (content): Merge conflict in hordo.txt +Automatic merge failed; fix conflicts and then commit the result. +``` + +Oh! Merge conlict keletkezett. +Nem kell megijedni, nem a vilĂĄg vĂŠge ĂŠs a git segĂt ahol tud. + +Az a helyzet, hogy egyszerre ugyanazt a sort mĂłdosĂtottuk ĂŠs a git nem tudta +eldĂśnteni mit tegyen. Megtartsa az egyiket vagy mindkettĹt? MĂŠgis mi legyen? + +Ezeket a kĂŠrdĂŠseket nekĂźnk kell megvĂĄlaszolnunk. + +ElĹszĂśr nĂŠzzĂźk meg, mit a stĂĄtusz. + +``` +$ git status +On branch master +You have unmerged paths. + (fix conflicts and run "git commit") + (use "git merge --abort" to abort the merge) + +Unmerged paths: + (use "git add <file>..." to mark resolution) + both modified: hordo.txt + +no changes added to commit (use "git add" and/or "git commit -a") +``` + +Az van, hogy ilyenkor a git beĂrja a fĂĄjlunkba mind a kĂŠt branch vĂĄltozĂĄsait +ĂŠs utĂĄna azt vĂĄrja tĹlĂźnk, hogy ĂĄtalakĂtsuk a fĂĄjlt, majd pedig azt elmentsĂźk. +SzĂłval nem kell megijedni, csak ĂĄtĂrjuk mi kell nekĂźnk ĂŠs mentĂźnk egyet. + +NĂŠzzĂźk meg mi van a fĂĄjlunkban. + +```hordo.txt +<<<<<<< HEAD +szilva +======= +korte +>>>>>> lacko +``` + +Mit is jelent ez? KettĂŠ szedte az bejĂśvĹ adatokat a git arra ahovĂĄ mergeltĂźnk +(`HEAD`) ĂŠs amit mergeltĂźnk (`lacko`). KĂśztĂźk pedig egy sor "======="-t lĂĄthatunk. +Itt mĂĄr csak ĂĄtĂrjuk a fĂĄjlt ahogy szeretnĂŠnk, hogy kinĂŠzzen. + +```hordo.txt +korte +``` + +NĂŠzzĂźk meg mi a stĂĄtusz ezutĂĄn: + +``` +git status +On branch master +You have unmerged paths. + (fix conflicts and run "git commit") + (use "git merge --abort" to abort the merge) + +Unmerged paths: + (use "git add <file>..." to mark resolution) + both modified: hordo.txt + +no changes added to commit (use "git add" and/or "git commit -a") +``` + +TovĂĄbbra is azt Ărja, amit az imĂŠnt. AmĂg nem commitoljuk a mĂłdosĂtĂĄsunk, +addig ezt is fogja. HĂĄt akkor mentsĂźnk. + +``` +git commit -a -m "lacko branch mergelve ĂŠs konflikt megoldva" +``` + +NĂŠzzĂźk meg hogy nĂŠz ki a grĂĄfunk ezutĂĄn. + +``` +* 7341274 (HEAD -> master) lacko branch mergelve ĂŠs konflikt megoldva +|\ +| * 6d6d1ac (lacko) Raktam a hordĂłba kĂśrtĂŠt +* | 41f1c05 Raktam szilvĂĄt a hordĂłba +|/ +* 366140d Merge branch 'atnevezes' +... +``` + +TehĂĄt most a merge commitunk egyben a konfliktusok megoldĂĄsĂĄt is tartalmazza. +Nem elkĂŠpesztĹ? InnentĹl mĂĄr csak egyĂźtt kell dolgozni, margeknĂŠl a konfliktusokat +megoldani. + +Semmi extra effortot nem fog igĂŠnyelni egy hasonlĂł elvĂŠgzĂŠse. + +[ElĹzĹ](workshop/2_basics?id=alapok) | +[KĂśvetkezĹ](remote/1_basics)