Učimo vas kako izraditi web stranicu i programirati
 



Git DVCS

Lokalni rad

Naredna lekcija objašnjava rad sa repositorijem na lokalnom računalu, te će biti objašnjene slijedeće git naredbe:
  • $git add
  • $git reset
  • $git rm
  • $git mv
  • $git status
  • $git diff
  • $git commit
  • $git commit -a -m
  • $git commit --amend --no-edit
U Git-u postoji working directory i repository. Working directory je direktorij tj. direktoriji filesistema gdje su smješteni fajlovi projekta. Repository je smješten unutar .git direktorija. Git Working Directory and Repository

Osnovni princip rada

Osnovni princip rada Git sistema prikazan je na slici dolje. Svaki snapshout working direktorija sprema se u repository. Međufaza između working direktorija i repositorija je staging area. Staging area služi kao privremeno mjesto na koje dodajemo fajlove sa $git add fileName kako bi se moglo izvršiti upoređivanje. Oni fajlovi koji nisu dodani sa $git add nazivaju se untracked te ih Git ne prati da li je u njima izvršena nekakva izmjena. Svi fajlovi koji su prebačeni u Staging Area nazivaju se tracked fajlovi. Git index - staging area Dakle sa $git add dodajemo fajlove u Staging Area kako bi se pratile izmjene unutar njih, a sa $git rm --cached i $git reset se izbacuju iz Staging Area.

Provjera statusa

U kakvom stanju je Staging Area provjeravamo sa $git status. Daje informacije o branchu, o commitu, o novim fajlovima koji su dodani u staging area i koji će biti dodani u commit. Također upoređuje fajlove u working direktoriju sa onima u staging area te ako postoji razlika onda ispisuje i tu informaciju.
Git status

Također postoji i $git diff koji pokazuje koje su konkretno razlike između fajla u working direktoriju i staging area. Ukoliko se dva fajla razlikuju onda moramo taj fajl dodati u staging area sa $git add.
Git Diff

Dodavanje fajlova u Staging Area

Fajlovi se u Staging Area dodaju sa $git add fileName .
Postoje razne kombinacije ove naredbe:

$git add --all - dodaje sve fajlove projekta
$git add dir1/*.php - dodaje sve .php fajlove u dir1 direktoriju
$git add dir1 - dodaje sve fajlove u dir1 direktoriju i njegovim poddirektorijima

VAŽNO: Ukoliko sa $git diff primjetimo da je fajl u working direktoriju izmjenjen moramo ga ponovo sa $git add dosati u Staging Area. Ako to ne učinimo onda se prilikom $git commit izmjena neće vidjeti u Repositoriju.

Ignoriranje fajlova

Fajlovi koji se ne bi trebali naći u Staging Area pa tako niti u repositoriju mogu se navesti u .gitignore fajlu. To su obično nekakvi temporary ili log fajlovi koji nisu bitni za source code. Ovaj fajl može se staviti u bilo koji direktorij Working Direktorija, a može biti i više .gitignore fajlova. No najbolje je staviti jedan .gitignore fajl u root projekta. Važno je uočiti da se .gitignore ne stavlja unutar .git direktorija.
gitignore position
.gitignore
# a comment - this is ignored
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the root TODO file, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .txt files in the doc/ directory
doc/**/*.txt


Pregled izmjena

Kako bi vidjeli razliku između fajla u working direktoriju i onog u staging area potrbno je izvršiti komandu

$git diff - daje sve razlike
$git diff --staged - prikazuje što će ući u commit tj. repository

Uklanjanje fajlova iz working dir. i staging area

$git rm fileName - uklanja fajl iz working direktorija i iz staging area
Ukoliko uklonimo fajl u working direktoriju (npr. u Windows Exploreru) onda će $git status pokazati.
Git deleted Nakon toga potrebno je izvršiti $git add --update kako bi se izvršio update Staging Area.

Uklanjanje fajlova samo iz staging area

Ukoliko ne želimo da neki fajlovi budu tracked, a ipak da ostanu u working direktoriju koristit ćemo:
$git rm --cached fileName ili
$git reset fileName (stariji oblik naredbe)

$git rm --cached -r . uklanja sve fajlove iz Staging Area.
još se može koristiti $git reset *

Premještanje fajlova

Premještanje i preimenovanje fajlova se obavlja sa:
$git mv FileName

Commit

Pomoću naredbe $git commit sve ono što je u Staging Area prebacuje se u Repository. Ako upotrijebimo -m flag možemo odmah dodati message, npr:
$git commit -m 'Izmjena napravljena'

Ako upotrijebimo samo $git commit onda se otvara Vim Editor u kojem je potrebno unijeti poruku. Iz Vim Editora se izlazi sa ESC pa :wq (write and quit tj. save and quit)
Git commit output

Preskakanje Staging Area

Ako želimo da se fajl direktno prebaci iz Working Direktorija u Repository, tj. da se preskoči Staging Area upotrijebit će se
$git commit -a -m 'Moj Komit'

Commit sa popravkom (amend)

Ukoliko smo primjetili da u commitu nije sve napravljeno kako treba t.j. da npr. u određenom fajlu je greška koju treba popraviti, a da taj popravak ne treba ići u novi commit to možemo uraditi sa "--amend". Naime sa ovom opcijom se neće napraviti novi commit nego će izmjene biti stopljene u prethodni commit.
$ git commit --amend --no-edit --no-edit znači da će se uzeti message od prethodnog commita

Schema rada sa fajlovima


git


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