Grananje je ključni aspekt Git-a. Ono predstavlja način kako možete raditi na određenoj funkcionalnosti ili delu softvera bez potencijalnog kvarenja osnovnog koda.
Kao programer, imate mogućnost da pravite značajne izmene u izvornom kodu i sami odlučite šta ćete sa tim promenama. Možete ih integrisati u projekat ili ih potpuno odbaciti.
Ako ste već koristili Git, verovatno ste primetili da postoji više načina za kreiranje grana. Za buduće programere, koji se još nisu susreli sa Git-om, važno je napomenuti da će vam poznavanje alata za kontrolu verzija uštedeti dosta vremena i učiniti programersko iskustvo produktivnijim.
Ovaj tekst je osmišljen kako bi vam pomogao da bez problema kreirate Git grane kao deo vašeg razvojnog procesa. Na kraju ćete ovladati veštinama koje će vam koristiti u održavanju GitHub repozitorijuma.
Napomena: Ako ste novi u programiranju, proverite kako da podesite svoj GitHub nalog pre nego što nastavite. Ako ste to već uradili, možete odmah preći na uputstva. Ipak, kratko podsećanje može biti korisno da utvrdite svoje znanje.
Šta su Git grane?
Izvor: atlassian.com
Grana u Git-u je verzija vašeg repozitorijuma koja se razlikuje od glavnog projekta. To je kao da se odvajate od glavne linije razvoja i radite nezavisno, bez uticaja na originalnu verziju.
Mnogi sistemi za kontrolu verzija (VCS) koriste ovu tehniku, koja podrazumeva pravljenje kopije izvornog koda. Kod većih projekata, kopiranje izvornog koda može potrajati. Ipak, ovo je odlična prilika da eksperimentišete sa izmenama koda.
Git-ov model grananja je ključna prednost i izdvaja ga od ostalih alata u VCS zajednici. Git je jednostavan za korišćenje, a operacije sa granama su gotovo trenutne, kao i prebacivanje između njih. Ako savladate Git model grananja, otključavate moćne funkcije i alate koji mogu da unaprede vaše veštine razvoja. Dakle, šta su zapravo grane?
Zašto su vam potrebne Git grane?
Git grane igraju ključnu ulogu u sistemu kontrole verzija. Evo nekoliko razloga zašto su vam one potrebne:
✅ Paralelni razvoj – Savremeni softver je složen i često više programera radi na istom projektu. Grane omogućavaju različitim programerima da rade na različitim funkcionalnostima, ili da ispravljaju greške, bez međusobnih kolizija. Svaka grana predstavlja put ka novom razvoju. Možete lako prelaziti između grana dok radite na određenim zadacima.
✅ Saradnja – Git grane omogućavaju saradnju sa drugim programerima na istom kodu. Možete kreirati nove grane, unositi izmene i slati ih u deljeni repozitorijum, gde drugi mogu pregledati vaš doprinos pre spajanja sa glavnom granom.
✅ Eksperimentisanje – Git grane možete koristiti za testiranje novih funkcija, pre spajanja sa glavnom granom. To je šansa da isprobate nove pristupe rešavanju problema. Ako novi pristup funkcioniše, možete ga integrisati u glavni kod.
✅ Upravljanje izdanjima – Grane možete koristiti za upravljanje različitim izdanjima softvera. Svaka grana može biti povezana sa određenim izdanjem projekta. Ovo vam omogućava da ispravljate greške i vršite izmene bez uticaja na glavnu liniju razvoja.
✅ Verzije – Grane možete koristiti za praćenje različitih verzija softvera. Svaka grana može predstavljati novu verziju. Najbolje je koristiti grane za svako izdanje softvera kako biste lakše pratili promene.
Početak rada sa Git-om – kratko podsećanje
Sada kada razumete „zašto“, vreme je da pređemo na „kako“.
Pretpostavljamo da ste već podesili svoj GitHub nalog. Ako niste, uradite to pre nego što nastavite. Ovaj deo je praktičan.
Komanda `git checkout` u Git-u se koristi za prebacivanje između različitih verzija vašeg projekta. U nekim programerskim krugovima, izraz „checkout“ se odnosi na izvršavanje ove komande. Ona se primenjuje na grane, datoteke i izmene (commit-e).
Prebacivanje na granu
Možete koristiti komandu `git branch` za kreiranje grana, a za kretanje između njih koristite `git checkout`. Kada pređete na određenu granu, datoteke u vašem radnom direktorijumu se ažuriraju da odgovaraju verziji koja je tamo sačuvana.
Drugim rečima, vi govorite Git-u da sve vaše izmene snima u grani (menjajući razvojni tok). Korišćenje grana za nove funkcionalnosti je napredak u odnosu na stari Subversion (SVN) način rada i olakšava rad sa kodom u svim situacijama koje smo naveli u delu „Zašto su vam potrebne Git grane“.
Komandu `git checkout` ne treba mešati sa `git clone`. Prva služi za prebacivanje između verzija koda, dok druga služi za preuzimanje koda iz udaljenog repozitorijuma.
Korišćenje postojećih grana
Ako repozitorijum na kome radite ima postojeće grane, možete ih videti u komandnoj liniji pomoću naredbe `git branch`.
Dostupne grane će biti prikazane, a zelena boja označava granu na kojoj trenutno radite, pod pretpostavkom da koristite Windows operativni sistem i Visual Studio Code. Za prebacivanje između grana koristite `git checkout ime_grane`. Izraz ‘ime_grane’ predstavlja ime vaše grane, a možete pratiti bilo koji sistem imenovanja.
Kreiranje Git grana
Pretpostavimo da ste usred razvoja softvera i želite da dodate novu funkcionalnost. Najbolji način da pristupite tome je da kreirate novu granu pomoću `git branch`.
U praksi, to izgleda ovako u komandnoj liniji:
git branch ime_grane
Ovo znači da ste napravili granu odvojeno od glavne grane (master/main). Ime vaše nove grane je ‘ime_grane’.
Da biste prešli na novu granu, koristite `git checkout`, kao što je prikazano ispod:
git checkout ime_grane
Ako ste programer koji voli da štedi vreme, možete kreirati granu i odmah se prebaciti na nju pomoću `git checkout` sa opcijom `-b`, praćeno imenom vaše grane. To je ekvivalentno prethodna dva koraka, pogledajte:
git checkout -b ime_grane
Parametar `-b` govori Git-u da prvo kreira granu, a zatim da se prebaci na nju. Hajde da vidimo druge načine za kreiranje Git grana.
Istražimo još tehnika koje možete koristiti za kreiranje grana, u zavisnosti od vaših potreba:
#1. Kreiranje grane od trenutne grane
Ako želite da kreirate novu granu na osnovu trenutne, koristite sledeće:
git checkout -b <ime_grane>
Ova metoda vas automatski prebacuje na novu granu. Vaš terminal bi trebalo da prikaže poruku – prebačeno na novu granu ‘ime_grane’.
Ako ste novi programer, bitno je da znate da zagrade `<>` u komandi ne treba unositi u komandnu liniju. One služe za demonstraciju i objašnjenje.
#2. Kreiranje grane od druge grane
Možete kreirati novu granu na osnovu postojeće, tako što ćete navesti njeno ime kao početnu tačku. Evo naredbe:
git branch <nova_grana> <osnovna_grana>
U praksi, to bi izgledalo ovako:
git branch nova-grana ime_grane
Dakle, ‘nova-grana’ je ime naše nove grane, a ‘ime_grane’ je osnova (bazna) grana.
#3. Kreiranje grane od izmene
Ako želite da novu granu zasnivate na određenoj izmeni (commit-u), a ne na grani, morate navesti heš izmene kao početnu tačku. Da biste pronašli heš izmene, pokrenite `git log`.
Heš izmene je dugačak niz znakova koji počinje sa ‘commit’. Sa hešom, možete kreirati granu pomoću komande:
git branch <ime_grane> <commit-hash>
Zatim možete preći na novu granu pomoću `git checkout`.
#4. Kreiranje grane od oznake
Da biste kreirali granu od određene oznake (tag), prvo pronađite ime te oznake. Pokrenite `git tag` da biste videli sve dostupne oznake u vašem repozitorijumu.
Kada pronađete ime oznake, pokrenite `git branch
#5. Kreiranje grane pomoću „odvojenog HEAD“ stanja
Možete koristiti „odvojeno HEAD“ stanje za kreiranje novih grana koje počinju od određenog izmena, bez prelaska na tu granu odmah. Ova tehnika je korisna kada želite da eksperimentišete sa novim promenama bez uticaja na granu na kojoj radite. Najpre pronađite heš izmene pomoću `git log`.
Sa hešom izmene, pokrenite: `git checkout
#6. Kreiranje grane od udaljene grane
Prvo kreirajte lokalnu granu koristeći `git checkout -b
Granu šaljete na udaljeno pomoću: `git push origin
#7. Kreiranje grane u udaljenom repozitorijumu
Da biste kreirali granu u udaljenom repozitorijumu, preuzmite najnovije izmene pomoću `git fetch`. Nakon što dobijete ažuriranja, možete kreirati novu granu i poslati izmene na sledeći način:
git push -u <udaljeni_repo> <ime_nove_grane>
U praksi, koristite ‘origin’ (kao u primeru kreiranja grane od udaljene grane). Ovo štedi vreme i smanjuje mogućnost greške pri unosu imena udaljenih repozitorijuma.
GitHub online interfejs
Svi zadaci obavljeni u komandnoj liniji mogu se uraditi i preko interfejsa na veb sajtu. Da biste kreirali novu granu, idite na stranicu vašeg repozitorijuma i proverite gornji levi ugao, gde obično stoji ime glavne grane (master/main).
Klikom na to ime, pojaviće se lista dostupnih grana i polje za tekst u kojem možete uneti ime nove grane.
Unesite ime nove grane u tekstualno polje. Interfejs na veb sajtu je automatizovan i omogućava kreiranje grana od određenih elemenata, kao što su oznake, grane i izmene. Ako ste novi u grananju, GitHub-ova dokumentacija vam može biti od velike pomoći.
Završne reči
Sada kada ste naučili nekoliko tehnika za kreiranje Git grana, možete ih koristiti u vašem razvojnom procesu, uz jednostavan Git tok rada.
Najbolji način grananja će zavisiti od vašeg tima, kriterijuma toka rada i situacija. Na primer, ako primate doprinose od saradnika, oni mogu da kreiraju grane i doprinose sa svojim izmenama.
Videli ste kako Git grananje pruža moćan mehanizam za efikasniji rad na softverskim projektima. Iako postoje druge Git opcije, ovaj tekst vam je pokazao kako da koristite Git grane u komandnoj liniji, kako biste se osećali sigurnije u radu sa Git-om.
Pošto ste ovladali kreiranjem grana, možda ćete biti zainteresovani da pogledate naš vodič za brisanje Git grana.