Distribuirani sustav za upravljanje verzijama Git
Upravljanje verzijama podrazumijeva baratanje promjenama nad nekim skupom datoteka pamćenjem povijesti promjena. Spremište povijesti promjena nazivamo repozitorijem (engl. repository). Obzirom na strukturu repozitorija, razlikujemo dva pristupa:
- centralizirani pristup, kod kojeg samo osnovni poslužitelj ima repozitorij, a klijenti imaju ono što od poslužitelja zatraže; ovaj pristup koriste CVS, Subversion i drugi
- distribuirani pristup, kod kojeg svaki klijent ima repozitorij i time nestaje razlika između poslužitelja i klijenta; ovaj pristup koriste Git, Mercurial i drugi
Git je vrlo moćan i vrlo popularan alat za upravljanje verzijama koji koristi decentralizirani (distribuirani) pristup. Ime Git ima vrlo duboko i višeslojno značenje:
Quoting Linus: "I'm an egotistical bastard, and I name all my projects after myself. First 'Linux', now 'Git'".
('git' is British slang for "pig headed, think they are always correct, argumentative").
Alternatively, in Linus' own words as the inventor of Git: "git" can mean anything, depending on your mood:
- Random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or may not be relevant.
- Stupid. Contemptible and despicable. Simple. Take your pick from the dictionary of slang.
- "Global information tracker": you're in a good mood, and it actually works for you. Angels sing and light suddenly fills the room.
- "Goddamn idiotic truckload of sh*t": when it breaks
Git svoju popularnost može uvelike zahvaliti servisima kao što su GitHub i Atlassian Bitbucket koji korisnicima omogućuju postavljanje repozitorija sa izvornim kodom na web. Putem tih servisa olakšana je suradnja, a uključuju i brojne druge značajke poznate sa društvenih mreža.
Više o Gitu može se saznati na službenim stranicama. Specijalno, službena dokumentacija uključuje man stranice alata, knjigu Pro Git, video materijale i poveznice na tutoriale, knjige i video materijale. Brojni tutoriali su dostupni, a neki od najboljih su upravo GitHubov Getting started i Atlassianov Git Tutorials and Training.
Osnovna konfiguracija
Globalna konfiguracija
Globalna konfiguracija odnosi se na sve repozitorije i operira na datoteci .gitconfig
unutar kućnog direktorija korisnika.
-
ime, prezime i mail adresa
git config --global user.name "Ime Prezime"
git config --global user.email user@mail.com
-
ostalo, ali ne i manje važno
git config --global color.ui true
-- uključivanje korištenja boja u prikazugit config --global core.editor "emacs"
-- uređivač teksta koji se koristi postaje Emacsgit config --global merge.tool "kdiff3"
-- alat za rad sa spajanjima grana koji se koristi postaje KDiff3
Lokalna konfiguracija
Lokalna konfiguracija odnosi se samo na trenutni repozitorij i operira na datoteci .git/config
unutar repozitorija.
ToDo
Ovdje treba ubaciti uputu kako promijeniti origin.
Sučelje naredbenog retka i grafička sučelja
Pregled naredbi alata Git
git version
-- informacije o verziji gitagit help
-- ispis liste najčešće korištenih naredbi s pripadajućim opisomgit add
-- dodavanje sadržaja datoteke u indexgit branch
-- ispis, stvarnaje ili brisanje granegit checkout
-- provjera brancha do radnog stablagit clean
-- brisanje nepraćenih datoteka iz radnog stablagit clone
-- kloniranje repozitorija u novi direktorijgit commit
-- snimanje promjena u repozitorijugit describe
-- prikaz zadnje oznake dohvatljive iz commitagit diff
-- prikaz promjena između commitovagit fetch
-- dohvaćanje objekata iz drugog repozitorijagit init
-- stvaranje praznog git repozitorija ili reinicijalizacija postojećeggit merge
-- spajanje dvije ili više povijesti razvojagit pull
-- dohvaćanje i spajanje sa drugim repozitorijom ili lokalnom granomgit push
-- osvježavanje udaljenog repozitorijagit revert
-- povratak starog commitagit status
-- prikaz statusa radnog stablagit tag
-- stvaranje, ispis ili brisanje oznake objekta potpisanog sa GPG
Grafička sučelja alata Git
- gitk (službeni GUI, koristi Tk)
- Tig (koristi ncurses, priladan za remote rad)
- gitg (koristi GTK+, za samostalno proučavanje)
- giggle (koristi GTK+, za samostalno proučavanje)
- QGit (koristi Qt, za samostalno proučavanje)
- git-cola (koristi Qt, za samostalno proučavanje)
Vraćanje promjena
ToDo
Ovaj dio treba napisati u cijelosti.
Rad s oznakama
ToDo
Ovaj dio treba napisati u cijelosti.
Grananje i spajanje
ToDo
Ovaj dio treba napisati u cijelosti.
Rješavanje konflikata kod spajanja
ToDo
Ovaj dio treba napisati u cijelosti.
Napredna konfiguracija
ToDo
Ovaj dio treba napisati u cijelosti prema dijelu u knjizi Pro Git
Atributi
ToDo
Ovaj dio treba napisati u cijelosti prema dijelu u knjizi Pro Git.
Zakačke
ToDo
Ovaj dio treba napisati u cijelosti prema dijelu u knjizi Pro Git.
Ostali sustavi za upravljanje verzijama
CVS
Concurrent Versions System (kraće CVS, naredba cvs
) je jedan od najstarijih danas korištenih sustava za upravljanje verzijama.
Apache Subversion
Apache Subversion (kraće SVN, naredba svn
) je popularan centralizirani sustav za upravljanje verzijama.
checkout
-- preuzima radnu kopiju repozitorijaupdate
-- postavlja postojeću radnu kopiju na određenu reviziju
Mercurial
Mercurial je, kao i Git, popularan decentralizirani sustav za upravljanje verzijama.
clone
-- preuzima repozitorijpull
-- preuzima skupove promjena iz udaljenog repozitorija u lokalni repzitorijupdate
-- postavlja postojeću radnu kopiju na određenu reviziju iz lokalnog repozitorija
Zadatak
- Mercurial može klonirati i lokalne i udaljene repozitorije na isti način.
- S poveznice
https://hg.python.org/cpython/
ili iz/home/vedran/repositories/
izvršite kloniranje repozitorijacpython
. - Postavite repozitorij na reviziju
f3d96d28a86e
. Objasnite razliku efekta naredbipull
iupdate
u ovoj situaciji.
Author: Vedran Miletić