Učimo vas kako izraditi web stranicu i programirati
 



Git DVCS

Remote rad

Ova lekcija objašnjava remote rad tj. rad sa udaljenim serverom. To su Git Repository Hosting serveri kao npr. Github, Bitbucket, Unfuddle, Assembla, Beanstalk, ...
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
git remote command
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
git remote verbose

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.
Git push conflict
To znači da prvo moramo skinuti posljednju verziju repositorija sa pull, riješiti konflikte te tek nakon toga izvršiti slanje sa push.
git conflict in repository

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.
git diff origin/master after fetch

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.
git diff origin/master after pull

git transport commands

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
git many remotes
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
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 url

Bitbucket

Prvo prebacivanje na Bitbucket izvodi se sa:



| Uvjeti Korištenja | Zaštita Privatnosti | Kontakt |