Git: Porovnání verzí
(Nejsou zobrazeny 3 mezilehlé verze od 2 dalších uživatelů.) | |||
Řádek 55: | Řádek 55: | ||
, ktorý vám vypíše aj komentáre k jednotlivým tagom, t.j. | , ktorý vám vypíše aj komentáre k jednotlivým tagom, t.j. | ||
− | $ git tag - | + | $ git tag -ln |
v0.12 MaNGOS 0.12 | v0.12 MaNGOS 0.12 | ||
v0.13-dev1 MaNGOS 0.13 dev1 -- moving from client 3.0.3 | v0.13-dev1 MaNGOS 0.13 dev1 -- moving from client 3.0.3 | ||
+ | v0.13-dev2 MaNGOS 0.13 dev1 -- moving from client 3.0.8a | ||
Ak sa chcete prepnúť do niektoreho z tagov, je vhodné si pre neho vytvoriť vlastnú lokálnu vetvu (branch). | Ak sa chcete prepnúť do niektoreho z tagov, je vhodné si pre neho vytvoriť vlastnú lokálnu vetvu (branch). | ||
Řádek 68: | Řádek 69: | ||
git checkout -b 303 v0.13-dev1 | git checkout -b 303 v0.13-dev1 | ||
+ | |||
+ | , ak by ste chceli poslednú aktuálnu veryiu pre patch 3.0.8a, použite | ||
+ | |||
+ | git checkout -b 308 v0.13-dev2 | ||
''Pozn.'' | ''Pozn.'' | ||
Řádek 167: | Řádek 172: | ||
git bisect | git bisect | ||
git format-patch | git format-patch | ||
+ | |||
+ | |||
+ | Doplnené 09.06.2009 | ||
+ | |||
+ | 1. výpis všetkých dostupných branch (lokálne aj remote) | ||
+ | git branch -a | ||
+ | 2. získanie najaktuálnejšej verzie zdrojových kódov pre 2.4.3 | ||
+ | git checkout -b 243 origin/mangos-0.12 | ||
+ | ''Pozn.'' | ||
+ | ''ak sa Vám po tomto checkoute nedarí dostať späť do master branch, použite'' | ||
+ | git checkout -f master | ||
+ | ''Týmto návratom sa momentálne stratí linuxová binárka ad. Dá sa to poriešiť takto:'' | ||
+ | ''1. v adresári extractor vytvoriť prázdny súbor ad'' | ||
+ | ''2. zapísať zmeny: git commit -a -m "pridanie ELF ad"'' | ||
+ | ''3. vrátiť sa pred náš commit: git reset --hard IDPredposlednehoCommitu'' | ||
+ | |||
+ | Doplnené 28.10.2009 | ||
+ | |||
+ | 1. Zdrojove súbory pre staršie verzie (podľa http://getmangos.com/community/showthread.php?t=9474) | ||
+ | http://github.com/freghar/mangos-svn/downloads - tgz súbory | ||
+ | alebo GITom: | ||
+ | ''git clone git://github.com/freghar/mangos-svn.git mangos-svn'' | ||
+ | (prebratie konkretnej verzie - tagu: ''git checkout -q c1.12.2'') | ||
+ | (výpis všetkých tagov: ''git tag'') | ||
== Externí odkazy == | == Externí odkazy == | ||
− | * [http://github.com/mangos/mangos/tree/master | + | * [http://github.com/mangos/mangos/tree/master MaNGOS GIT repository web view] |
* [http://git-scm.com/ GIT Main Site] | * [http://git-scm.com/ GIT Main Site] | ||
* [http://www.spheredev.org/wiki/Git_for_the_lazy Git for the lazy] | * [http://www.spheredev.org/wiki/Git_for_the_lazy Git for the lazy] | ||
[[Kategorie:Ostatní]] | [[Kategorie:Ostatní]] |
Aktuální verze z 28. 10. 2009, 22:31
GIT je nástroj na správu verzií. MaNGOS ho začal používať po SVN verzii 6767. Pre používateľa je trošku náročnejší, takže tu je zopár príkladov a tipov:
Ako si stiahnuť projekt MaNGOS (celé repository)
git clone git://github.com/mangos/mangos.git
alebo z náhradných liniek MaNGOSu
git clone git://repo.or.cz/getmangos.git git clone http://repo.or.cz/r/getmangos.git
Pozn.
1.Tento príkaz vytvorí v aktuálnom adresári podadresár getmangos resp. mangos a do neho uloží celé repository MaNGOSu. Preto, ak chcete ďalej pracovať s gitom, prejdite do adresára getmangos (cd getmangos).
2.Posledný odkaz je vhodné použiť, ak máte zakázaný GIT protokol.
3.Ak ste za proxy serverom, máte povolený http protokol a nedarí sa Vám cez neho pripojiť, skúste nastaviť premennú prostredia 'http_proxy' (napr. pre bash: 'export http_proxy=10.10.10.10:80') alebo môžete nastaviť konfiguračnú položku http.proxy cez príkaz 'git config --global http.proxy (napr . 'git config --global http.proxy 10.10.10.10:80')
Ak chcete zaktualizovať staršiu klonovanú verziu na aktuálnu, použite
git pull
Tento príkaz vykoná 'git fetch' + 'git merge', teda stiahne aktuálne zmeny a pokúsi sa ich aplikovať.
Ak chcete zistiť, v ktorej verzii(po ktorom commite) sa nachádzate, použite príkaz
git log
, ktorý Vám vypíše postupnosť zmien(commitov) - teda ako aktuálne verzia vznikala. A príkaz
git show
zobrazí konkrétne zmeny(commity), ktoré vytvorili aktuálnu verziu - je to vlastne zobrazený patch súbor.
Aktuálnu verziu projektu máte teda stiahnutú a chcete v nej robiť zmeny.
Niektorí užívatelia si pred zmenou projektu radi urobia jeho zálohu.
S GITom je to jednoduché:
git clone ./ ../zaloha
Tento príkaz urobí klon celého lokálneho repository, teda vytvorí kópiu z aktuálneho GIT repository do adresára 'zaloha' o úroveň vyššie.
Po stiahnutí aktuálnej verzie väčšinou aktuálna vetva(branch) obsahuje nejaké tagy (záložky vetiev), ku ktorým by Ste sa mohli chcieť z nejakého dôvodu vrátiť. Aké tagy má vaša verzia zistíme príkazom
git tag -n
, ktorý vám vypíše aj komentáre k jednotlivým tagom, t.j.
$ git tag -ln v0.12 MaNGOS 0.12 v0.13-dev1 MaNGOS 0.13 dev1 -- moving from client 3.0.3 v0.13-dev2 MaNGOS 0.13 dev1 -- moving from client 3.0.8a
Ak sa chcete prepnúť do niektoreho z tagov, je vhodné si pre neho vytvoriť vlastnú lokálnu vetvu (branch). To spravíte príkazom:
git checkout -b 243 v0.12
Týmto príkazom ste si vytvorili lokálnu vetvu s názvom 243 a je v nej verzia v0.12, teda posledná verzia pre patch 2.4.3. Ak by ste cheli poslednú aktuálnu verziu pre patch 3.0.3, použite
git checkout -b 303 v0.13-dev1
, ak by ste chceli poslednú aktuálnu veryiu pre patch 3.0.8a, použite
git checkout -b 308 v0.13-dev2
Pozn. Za prepínačom -b si zadávajte meno, ktoré sa Vám hodí najviac.
Ak nechcete použiť žiaden z tagov, môžete si vytvoriť vlastnú vetvu príkazom
git checkout -b mojavetva HEAD
Tento príkaz vytvorí novú vetvu s názvom 'mojavetva' s najaktuálnejšími zmenami.
Ak chcete zmazať vetvu, použite príkaz
git branch -D mojavetva
V ktorej vetve ste zistíte príkazom
git branch
Ak sa chcete prepnúť späť do najaktuálnejšej vetvy, použite
git checkout master
, alebo ak sa chcete prepnúť do inej vetvy použite
git checkout mojavetva
a pod. ...
Takže sa konečne nachádzate v lokálnej vetve, ktorú chcete zmeniť (napr. mojavetva). Povedzme, že zmeníte niektorý zo súborov sql v adresári SQL a pridáte nový súbor bag_slots.cpp do adresára src/game.
Aby git 'prijal' do vetvy nový súbor, je potrebné zadať príkaz
git add bag_slots.cpp
A aby git zaznamenal všetky vaše zmeny, je potrebné použiť príkaz 'commit', t.j.
git commit -a
Prepínač -a zabezpečí akceptovanie všetkých zmien v zmenených alebo zmazaných súboroch.
Či vám ostalo ešte niečo na commit-nutie (aké súbory ste menili), zistíte príkazom
git status
Pozn. Po zadaní príkazu 'git commit' Vás GIT vyzve na zadanie popisu vykonaných zmien otvorením súboru s popisom. Súbor nesmie obsahovať iba komentáre(teda riadky začínajúce znakom #) a nesmie byť prázdny, ináč GIT nový commit zamietne.
Ak sa Vám naše zmeny nepáčia, je možné commit zrušiť. Robí sa to príkazom
git reset --hard commitID
, kde commitID je 40 znakové číslo commitu, ku ktorému sa chcete vrátiť. Väčšinou stačí použiť prvých 10 znakov, t.j.
git reset --hard d583698225
Zmeny môžete vykonať aj nahratím patch súborov. Aplikovanie patch súborov je možné príkazom
git am patch.patch
Príkaz sa pokúsi aplikovať všetky zmeny zo súboru patch.patch na aktuálnu verziu projektu. Ak nájde konflikt, skončí z chybovou hláškou a konflikt je potrebné vyriešiť.
Pozn. Konflikty nám vypíše príkaz 'git diff'
Ak si chcete vypísať rozdiely kódu aktuálnej verzie a predošlej vo forme patch súboru, môžete použiť príkaz
git diff HEAD HEAD^
HEAD je označenie najaktuálnejšej verzie a znak ^ posúva verziu o jeden commit dozadu (na rodiča aktuálnej verzie), t.j. HEAD^^ prejde na verziu pre dvomi commitmi, atd. Dá sa to zapísať aj ako HEAD~2.
Pozn.
1.Index je označenie aktuálnej, rozrobenej verzie (vznikne cez add pred commitom), HEAD je posledný commit.
2.Môžete použiť aj príkaz 'git log -p' a pod.
Každý z použitých príkazov má aj ďalšie prepínače a parametre a dajú sa rôzne kombinovať,
napr. git log HEAD^^ vypíše log začínajúci predošlými dvomi commitmi, namiesto HEAD možno použiť commitID a pod.
Bližšie info nájdete v dobrom tutoriale alebo v manuálových stránkach. A ako hovoria v jednom z tutorialov, 'Branches are cheap and easy', takže nebojte sa experimentovať, vytvárať a meniť nové vetvy a pracovať s nimi.
Ešte pozri:
git grep git bisect git format-patch
Doplnené 09.06.2009
1. výpis všetkých dostupných branch (lokálne aj remote)
git branch -a
2. získanie najaktuálnejšej verzie zdrojových kódov pre 2.4.3
git checkout -b 243 origin/mangos-0.12
Pozn. ak sa Vám po tomto checkoute nedarí dostať späť do master branch, použite
git checkout -f master
Týmto návratom sa momentálne stratí linuxová binárka ad. Dá sa to poriešiť takto:
1. v adresári extractor vytvoriť prázdny súbor ad 2. zapísať zmeny: git commit -a -m "pridanie ELF ad" 3. vrátiť sa pred náš commit: git reset --hard IDPredposlednehoCommitu
Doplnené 28.10.2009
1. Zdrojove súbory pre staršie verzie (podľa http://getmangos.com/community/showthread.php?t=9474)
http://github.com/freghar/mangos-svn/downloads - tgz súbory
alebo GITom:
git clone git://github.com/freghar/mangos-svn.git mangos-svn (prebratie konkretnej verzie - tagu: git checkout -q c1.12.2) (výpis všetkých tagov: git tag)