Вы находитесь на странице: 1из 53

Xavier Sala Pujolar

Institut Cendrassos
CFGS Desenvolupament d'aplicacions Web
M8 - Desplegament d'aplicacions web
Git
UF4 Control de versions i
documentaci
Desenvolupament d'Aplicacions Web

Alguns problemes dels sistemes centralitzats


sn:

Cal estar 'online' per crear branques o


veure les diferncies

Els pedaos es poden desactualitzar


rpidament
La gent que treballa
amb porttils tendeix
a estar temps sense
connexi
Desenvolupament d'Aplicacions Web
Control de versions distributs

La idea fonamental d'aquests sistemes s:


Tothom t una cpia del
repositori
Distributs
Es poden eniar i
rebre canis de
qualseol repositori
Desenvolupament d'Aplicacions Web
Es pot simular un punt central

!o "i "a un repositori central per# es pot


$simular% fcilment
En realitat no sn
centrals perqu
podem descarregar
de qualsevol dels
altres&&&
Desenvolupament d'Aplicacions Web
Versions

'() no guarda els canvis sin que fa un


$spaps"ot% de tot
Ai*# no s el
ms "abitual
en els +C,
Versi 1
Versi 2
Versi
Versi !
Els fit*ers
sense canvis es
guarden com
enllaos
Desenvolupament d'Aplicacions Web
Operacions locals

Al tenir un repositori la ma-oria de les


operacions sn locals
.en/s 0s de la
*ar*a i per tant
ms velocitat
Desenvolupament d'Aplicacions Web
nte!ritat

)ot el que passa genera una signatura ,1A23


que servir per comprovar2ne la integritat
commit
ca8!a"d##8$%ec""#&&'&!((%!(!")(a)'%"')&)
commit
(8*bb'bcb"(8e$e8&*$d&b!&'!#8ecbe"'("e%e%
commit
a$$be#("a'#"*)&(!#e%*"'ab#))ad((de!!()e"
Desenvolupament d'Aplicacions Web
"en#ill

'it funciona d'una forma semblant que els


sistemes ms populars:
$ git add superprograma.java
Es #a serir el mateix
executable per tot
+ tra,s dels
parmetres diem qu-
olem #er
Desenvolupament d'Aplicacions Web
ncorpora a$uda%%%

Es pot obtenir a-uda fent servir "elp&&&


$ git help commit
&elp
Desenvolupament d'Aplicacions Web
'ersonalit#aci

La primera cosa que cal fer en '() s definir la


identitat de l'usuari
$ git config --global user.name "Frederic"
$ git config --global user.email frede@aqui.com
.'enia sempre en tots
els commits que es
#acin
Es pot fer sense global
per tenir usuaris
diferents per pro-ecte
Desenvolupament d'Aplicacions Web
Con(i!

El parmetre 'config' es fa servir per


personalitzar el funcionament de '()
$ git config --global core.editor joe
L'editor que es #ar serir
quan #aci #alta que
escriim un missatge
$ git config --list
Desenvolupament d'Aplicacions Web
Crear un repositori

)ot comena quan un client importa un pro-ecte


al repositori
"#P$S%&$"%
$ git init
Crea un directori /git en
la carpeta on estem
Desenvolupament d'Aplicacions Web
Clone

4na forma alternativa de crear un repositori s


copiar2ne algun d'e*istent
"#P$S%&$"%
$ git clone git://server/titit.git
"#P$S%&$"%
S#"V#"
Desenvolupament d'Aplicacions Web
Estats d)un (it*er

Els fit*ers d'un usuari poden estar en 5 estats


'o
modi(icat
)odi(icat
* punt
d'enviar al
repositori
W$"+SP*C#
add
commit
c,ec-out
'o controlat ...
add
"#P$S%&$"% rm
Desenvolupament d'Aplicacions Web
status

El parmetre status mostra en quin estat es


troben els fit*ers del directori
$ git status
# On branch master
# Changes to be committed:
#
# new file: foobar.txt
#
# Changes not staged for commit:
#
# modified: foo.txt
#
# ntrac!ed files:
#
# bar.txt
6ranca
7reparats per
enviar
modificats per#
que no
s'enviaran
!o control8lats
Desenvolupament d'Aplicacions Web
di((

7odem veure qu "em canviat amb di((


$ git diff
'o
modi(icat
)odi(icat
$ git diff --staged
Desenvolupament d'Aplicacions Web
+o!

7odem veure els comentaris entre les diferents


versions amb lo! i histor,
$ git log
-p
--stat
--prett,
--!raph
0, moltes opcions ///
$ git log
Desenvolupament d'Aplicacions Web
!norar (it*ers

Es poden tenir fit*ers en el directori i que '()


no els tingui en compte definint2los a
%!iti!nore
.a/e(ile
0%class
Temp1
Es poden #er serir
wildcards per de#inir
grups de #itxers
0ot el de dins del
directori
Desenvolupament d'Aplicacions Web
Commit

'() genera identificadors 0nics en cada commit


a partir de:
commit b9:;e<b=<3aba;:fa9>;95e?ca;>b:ee3b
Aut"or: *avier @fsalaAosB*tec&catC
Aate: Ded Ect 3; ;=:5::3> >;3< 2;3;;
.odificada la funci de suma
1o empaqueta tot amb
#ent un c2ec3sum
L'autor4 la data i el missatge
Desenvolupament d'Aplicacions Web
Descartar els canvis

Es poden recuperar fit*ers que estiguin en tres


estats diferents
"#P$S%&$"%
git checkout -- file
S&*G%'G *"#*
)odi(icat
'o
modi(icat
git reset !"# file
git checkout a$%% file
&reure d'sta/ed
Versi concreta
Des(er els canvis
Desenvolupament d'Aplicacions Web
2eset

4na forma de desfer un commit s eliminar2lo


completament amb reset
Fer un reset en treball
en equip t molts
perills
git reset !"#&'
"#S#&
Desenvolupament d'Aplicacions Web
2evert

Gevert fa un nou commit que desf els canvis


fets posteriorment
git revert a'$(%f()'e$(
"#V#"&
Desenvolupament d'Aplicacions Web
.odi(icar una actualit#aci

'() permet afegir coses al darrer commit fent


servir --ammend
git commit --amend
"#P$S%&$"%
git commit
5ersi a!'#&*
6alta un #itxer7
Desenvolupament d'Aplicacions Web
Eti3uetar

Es poden etiquetar determinats moments


$importants% del pro-ecte&

Amb etiquetes anotades:

E etiquetes lleugeres
$ git tag -a v*.) -m +,rimera versi-.
v1
$ git commit -m +/anvis en el codi.
$ git tag v*.)*
V1.01
Desenvolupament d'Aplicacions Web
Desenvolupament d'Aplicacions Web
2emots

El repositori local es pot lligar amb repositoris


remots
$ git remote
Origin
8rigin
6rea3
Desenvolupament d'Aplicacions Web
2emots

Es poden tenir tants $remots% com calgui&&&


$ git remote add freak git://g.com/a
8rigin
6rea3
Desenvolupament d'Aplicacions Web
Treballar amb els remots

Es pot enviar i rebre contingut dels repositoris


remots
$ git pull 0rigin master
8rigin
6rea3
push
pull
(etch
4no unei*5
Desenvolupament d'Aplicacions Web
Desenvolupament d'Aplicacions Web
6ranchin!

En qualsevol pro-ecte sempre "i "a moments en


que es vol diferir de la lHnia principal sense
interferir2"i&&&
master
'() fomenta la
creaci de
branches
El treball amb
branques s rpid
Desenvolupament d'Aplicacions Web
Crear una branca

4na branca s un punter a un determinat


commit
$ git branch prova
1#*D
P"$V*
)*S&#"
1EAA s un
punter a la
branca amb la
que treballem
actualment
Desenvolupament d'Aplicacions Web
Crear una branca

,i es fan commits en la branca original el


punter de la branca no es mou
$ git commit -m +1.
1#*D
P"$V*
)*S&#"
Desenvolupament d'Aplicacions Web
Crear una branca

En qualsevol moment es pot passar a editar la


branca
$ git checkout prova
1#*D
P"$V*
)*S&#"
Desenvolupament d'Aplicacions Web
Crear una branca

Les modificacions posteriors es faran en la


branca i no en el master
$ git commit -m +modificat.
1#*D
P"$V*
)*S&#"
Desenvolupament d'Aplicacions Web
Crear una branca

Es pot passar d'una branca a una altra


fcilment&&&
$ git checkout master
1#*D
P"$V*
)*S&#"
!oms mou el
punter 1EAA
Desenvolupament d'Aplicacions Web
6ran3ues

Es poden veure fcilment les branques d'un


pro-ecte i on est el 1EAA&&&
1#*D
P"$V*
)*S&#"
P"$V*2
1$&F%X
$ git branch
"otfix
# $aster
%rova
%rova&
Desenvolupament d'Aplicacions Web
mer!e

Es poden barre-ar branques entre elles amb


merge
1#*D
P"$V*
)*S&#"
P"$V*2
1$&F%X
$ git checkout master
$ git merge hotfi1
Desenvolupament d'Aplicacions Web
mer!e

Es poden barre-ar branques entre elles amb


merge
1#*D
P"$V*
)*S&#"
P"$V*2
1$&F%X
$ git checkout master
$ git merge hotfi1
$ git branch -d hotfi1
Desenvolupament d'Aplicacions Web
mer!e

Es pot eliminar una branca si -a no fa falta&&&


P"$V*
P"$V*2
1$&F%X
$ git branch -d hotfi1
1#*D
)*S&#"
Desenvolupament d'Aplicacions Web
mer!e

La barre-a de branques que "agin divergit es


crea un nou commit amb les diferncies
1#*D
P"$V*
)*S&#"
P"$V*2
$ git merge prova
Desenvolupament d'Aplicacions Web
Con(lictes

Es poden produir conflictes al barre-ar branques


que "an divergit
$ git merge prova
"uto-merging a.java
/02F34/5 6content7: 8erge conflict in a.java
"utomatic merge failed9 fi1 conflicts and
then commit the result.
Desenvolupament d'Aplicacions Web
2esoluci de con(lictes

Els conflictes es poden resoldre fent servir una


eina grfica de diferncies
$ git mergetool
5his message is displa:ed because ;merge.tool;
is not configured.
See '/it mer/etool 22tool2,elp' or '/it ,elp con(i/' (or more details.
'/it mer/etool' 3ill no3 attempt to use one o( t,e (ollo3in/ tools4
tortoisemer/e emer/e vimdi((
'o -no3n mer/e tool is available.
Es poden fer servir diverses eines com
opendiff Idiff< tIdiff **diff tortoisemerge
gvimdiff diffuse ecmerge p5merge ara*is
vimdiff emerge
Desenvolupament d'Aplicacions Web
2esoluci de con(lictes

Es definei* quina eina es far servir&&&


$ git config --global merge.tool p(merge
$ git config --global mergetool.p(merge.path
"/:/,rogram Files/,erforce/p(merge.e1e"
Es definei* l'eina i
com s'"a de
cridar&&&
Desenvolupament d'Aplicacions Web
Eina de resoluci
$ git mergetool
8erging:
<!"#8!.md
2ormal merge conflict for ;<!"#8!.md;:
=local>: modified file
=remote>: modified file
it return to start merge resolution tool 6p(merge7:

La resoluci de conflictes sempre es far fent


servir l'eina que "em configurat
Desenvolupament d'Aplicacions Web
Eina de resoluci
Desenvolupament d'Aplicacions Web
Treball local

Les ramificacions i fusions es fan en el propi


repositori&
$ri/in
P5to
,ot(i6
bu/(i6
test
,'"i fa referncia
com a 7/toJ"otfi*
Les branques no es
sincronitzen
automticament
Desenvolupament d'Aplicacions Web
Treball local

Es fa referncia a les branques amb el nom del


repositori i la branca
$ri/in
P5to
,ot(i6
bu/(i6
test
7/toJ"otfi*
EriginJbugfi*
Desenvolupament d'Aplicacions Web
Treball local

,'"an de pu-ar e*plHcitament les branques als


servidors remots
$ri/in
P5to
,ot(i6
bu/(i6
test
,ot(i6
$ git push 0rigin hotfi1
Desenvolupament d'Aplicacions Web
Treball local

7er recuperar2ne una c#pia editable s'"a de fer


servir -b per crear una branca local
$ri/in
P5to
,ot(i6
bu/(i6
test
$ git checkout -b hotfi1 origin/hotfi1
,ot(i6
Desenvolupament d'Aplicacions Web
&oo/s

Els "ooIs oferei*en la possibilitat d'e*ecutar


programes quan passi alguna cosa important
commit
1oo-
Post
update
Desenvolupament d'Aplicacions Web
&oo/s

Els scripts es guarden en el directori hoo/s del


repositori

Es poden fer scripts en diferents llenguatges:


bas"K 7erlK 7/t"onK Gub/&&& i se'ls "i pot fer
qualsevol cosa
$ ls .git/hooks
Appl'patch(msg post(commit post(update
pre(commit update commit(msg
post(receive pre(appl'patch pre(rebase
Desenvolupament d'Aplicacions Web
&oo/s

Es "abitual actualitzar el programari d'una Leb


al actualitzar el repositori
Desenvolupament d'Aplicacions Web
7T 6oo/

1i "a moltes ms opcions que podeu veure en


el llibre lliure sobre '()
2ttp9::git-scm/com:boo3
+ersi en angls
2ttp9::git-scm/com:boo3:#r
+ersi en francs
+ersi en catal MparcialN
2ttp9::git-scm/com:boo3:ca
+ersi en castell MparcialN
2ttp9::git-scm/com:boo3:es

Вам также может понравиться