Biti će objašnjene slijedeće git naredbe:
- $git remote
- $git remote add [shortname] [url]
- $git fetch
- $git pull
- $git push
Detektiranje remote servera
Za određivanje adrese servera na koji šaljemo/uzimamo code koriste se naredbe:$git remote
Ovdje je 'origin' skraćeni naziv (alias) za stvarnu adresu servera npr.
Također se može koristiti i naredba sa verbose opcijom:
$git remote -v
Pri detekciji servera tj. adrese bitno je razlikovati 2 situacije.
Prva je ukoliko smo klonirali repositorij sa nekog servera onda će $git remote -v dati adresu tog servera.
Druga je ukoliko smo repository prvo kreirali lokano. Znači projektne fajlove stavili u working directory i sa $git init kreirali lokalni repositorij (.git direktorij). U tom slučaju naredba $git remote neće dati ništa. Što je i logično jer još nismo definirali server na koji ćemo hostati naš source code. Zato je u ovom slučaju prvo potrebno definirati hosting server.
Definiranje hosting servera
Kada kažemo hosting server mislimo na code hosting odnosno preciznije na git repository hosting. Da bi se definirao server koristi se naredba:$git remote add [shortname] [url]
npr. $git remote add mojRemote https://github.com/smikodanic/proba
Sada $git remote daje mojRemote.
Važno je napomenuti da ako ne definiramo server nećemo moći slati (push) niti primati (pull) code sa servera.
Ako želimo da se remotesu odmah pridruži i remote branch onda će naredba biti:
$git remote add -t master origin https://user:passwd@bitbucket.org/bitbucket_username/repository_name.git
gdje opcija -t definira remote granu
Slanje repositorija na server
Da bi repository poslali na server koristi se naredba:$git push
Naravno prije toga se mora definirati adresa servera sa $git remote add ukoliko lokalni repositorij nije bio kloniran.
POTPUNA NAREDBA: git push [remote-name] [branch-name]
gdje je remote-name adresa servera , a branch name naziv grane u koju ćemo staviti naš repositorij.
npr. $git push origin master
PUSH KONFLIKT
Sa push ne možemo izvršiti slanje code-a ukoliko je netko prije nas uvalio svoju izmjenjeni repository (zeleno). Npr. skinuli smo repositorij sa servera prije nekoliko dana te je u međuvremenu netko postavio svoj repository na server. Sada kad pokušavamo izvršiti slanje na server javlja grešku.
To znači da prvo moramo skinuti posljednju verziju repositorija sa pull, riješiti konflikte te tek nakon toga izvršiti slanje sa push.
Uzimanje repositorija sa servera
Za uzimanje koriste se dve naredbe:$git fetch - vrši update lokalnog repositorija preuzimajući repositorij sa servera
$git pull - uzima repository sa servera i mijenja izmjenjene fajlove u working direktoriju
Ustvari je $git pull = $git fetch + $git merge pa je bolje koristiti pull nego fetch.
VAŽNO
je primjetiti da lokalno postoje tri kopije projekta:
1. vlastiti repositorij sa commit historijem
2. working copy tj. directory gdje editiramo fajlove
3. cached copy tj. verzija koju skinemo sa servera sa $git fetch
PRIMJER
Ako na serveru u fajlu mojte.txt napravimo izmjenu, te nakon toga izvršimo lokalno $git fetch. Razliku između onoga što imamu u working direktoriju i onoga u staging area (indexu) vidjet ćemo pomoću:
$git diff origin/master gdje je
origin veza sa serverom tj. https://github.com/smikodanic/proba, a
master naziv grane.
Ako umjesto $git fetch upotrijebimo $git pull onda $git diff origin/master ne pokazuje ništa. To je zato jer pull automatski vrši i update working direktorija.
Više različitih remote-a
Ukoliko želimo naš code pohraniti na više servera potrebno je definirati više remote-a tj. lokacija za smještaj. Npr,$git remote add origin $https://github.com/smikodanic/proba
$git remote add bit $http://bitbucket.org/smikodanic/probno
To daje
Nakon toga možemo koristiti: $git push bit za BitBucket ili samo $git push za GitHub. Dakle 'origin' je oznaka za predefinirani remote.
Provjera remote-sa
Da bi se prikazale sve informacije o remote-su dovoljna je naredba:$git remote show origin
Pokazuje podatke o 'origin' remote-su.
Brisanje i preimenovanje remote-sa
$git remote rm bit - uklanja 'bit' remotes$git remote rename bit bitbucket - preimenuje 'bit' u 'bitbucket'
Mijenjanje URL-a remotesa
git remote set-url origin git://new.url.here - postavlja novi urlBitbucket
Prvo prebacivanje na Bitbucket izvodi se sa: