Tananyag‎ > ‎Git‎ > ‎

Git branch

Főleg többszemélyes projektek esetén előfordul, hogy a program több, egymással párhuzamos szálon "fejlődik". Ezt a commitoknál megismert szekvenciális ábrán nem lehet megcsinálni, mivel mindig meg kell várni az előző commit létrejöttét, és csak utána lehet ráépíteni. Ezért (is)
 használunk branch-eket (ágakat), mert lehetőséget ad a kód párhuzamos kezelésére.

Az ábrán 3 branchet látunk. A ”master” branch (mindig ez a „fő” branch) kék színű, a „gui” zöld, a „gui-jpanel” piros.

Gyártsunk történetet az ábra mögé!

János, lelkes hobbi programozó kitalálta, hogy egy fraktálrajzoló programot ír barátjával, Sámuellel. Elhatározták, hogy Gitet használnak kódjuk kezelésére. Ezért létrehoztak a felhőben egy Git Repositoryt, amit mindketten elérnek.

János, mivel az ötlet tőle származik, nekilátott a kódolásnak. Megírta a projekt magját, a „fraktálgyártó” rekurziót. Ezután commitolt, majd feltöltötte a felhőbe. (Commit 0) De hamar rájött, hogy a program elszáll negatív paraméter esetén, ez pedig kényelmetlen lenne a felhasználók számára. Ezért kijavította a hiányosságát, és feltöltött egy hibajavító commitot (Commit 1).

Ezen a ponton kapcsolódott be Sámuel, aki elvállalta a grafikus felület létrehozását. Létrehozott egy új, „gui” nevű branchet, hogy tudjon barátjával párhuzamosan dolgozni, egy másik kódrészleten. Otthon felépítette a JFrame-et, belerakott gombokat. Feltöltött egy commitot a gui branchre. Munkáját folytatta, de közben János mondta, hogy szívesen megcsinálná a JPanel-es rajzolgatós részt. Ezért Sámuel 3-as számú commitjából létrehozott egy új branchet, a gui-jpanel nevűt. Miután elkészült, ezt a branchet Sámuel egyesítette (merge-elte) a gui branch-csel (7-es commit). János közben létrehozta a 2-es és 4-es commitot, javított a fraktálszámításon.

Sámuel úgy gondolta, hogy most már ideje belevinni a grafikus felületbe a fraktálszámítást, ezért János munkáját merge-elte a saját branchébe (Commit 8). Ezután János tovább bővítette a program funkcióit, létrehozott a master és a gui-jpanel branchen is commitolt egy-egy újabbat (9, 10. commit). A projekt folytatása során az új módosításokat a gui-jpanel branchről érdemes merge-elni a gui branchbe, majd ezt a master branchre, hogy minden funkció egyesülhessen, a program egészében működhessen. Miután már nem használnak egy branch-et, letörlik (pl már késznek tekintik a JPanelt), ez azt okozza, hogy eltűnik a téglalap.

Mit jelentenek a téglalapok?

  • Színes téglalapok:
    • Branchek végeit jelzik, az új commitok ide fognak kerülni.
    • Minden commithoz el lehet jutni színes téglalapokból nyilak mentén, ezért, ha letörlünk egy branch-et (eltüntetjük a színes téglalapját), akkor bizonyos commitok elérhetetlenné válhatnak, ezeket a rendszer automatikusan letörli. Ezért csak pont azután érdemes branchet törölni, miután merge-elve lett egy másikba.
  • Fekete téglalap (HEAD):
    • A legutolsó commitra mutat, itt „tart” most a saját Gitünk (tehát ez a HEAD mondjuk Sámuel szemszögéből állt itt).
    • A következő commitunk ez után fog megjelenni
    • Ha branch-et váltunk, ezt a mutatót változtatjuk