SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
CFGS Desenvolupament d'aplicacions Web

M8 - Desplegament d'aplicacions web
UF4 Control de versions i
documentació

Git

Xavier Sala Pujolar
Institut Cendrassos
●

Alguns problemes dels sistemes centralitzats
són:
–

Cal estar 'online' per crear branques o
veure les diferències
La gent que treballa
amb portàtils tendeix
a estar temps sense
connexió

–

Els pedaços es poden desactualitzar
ràpidament
Desenvolupament d'Aplicacions Web
Control de versions distribuïts
●

La idea fonamental d'aquests sistemes és:

Tothom té una còpia del
repositori
Es poden enviar i
rebre canvis de
qualsevol repositori

Distribuïts

Desenvolupament d'Aplicacions Web
Es pot simular un punt central
●

No hi ha un repositori central però es pot
“simular” fàcilment

En realitat no són
centrals perquè
podem descarregar
de qualsevol dels
altres...
Desenvolupament d'Aplicacions Web
Versions
●

GIT no guarda els canvis sinó que fa un
“spapshot” de tot
Versió 1

Això no és el
més habitual
en els VCS

Versió 2

Versió 3

Versió 4

Els fitxers
sense canvis es
guarden com
enllaços
Desenvolupament d'Aplicacions Web
Operacions locals
●

Al tenir un repositori la majoria de les
operacions són locals
Menys ús de la
xarxa i per tant
més velocitat

Desenvolupament d'Aplicacions Web
Integritat
●

Tot el que passa genera una signatura SHA-1
que servirà per comprovar-ne la integritat
commit
ca82a6dff817ec66f44342007202690a93763949
commit
085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
commit
a11bef06a3f659402fe7563abf99ad00de2209e6

Desenvolupament d'Aplicacions Web
Senzill
●

Git funciona d'una forma semblant que els
sistemes més populars:

$ git

add

superprograma.java

A través dels
paràmetres diem què
volem fer
Es fa servir el mateix
executable per tot

Desenvolupament d'Aplicacions Web
Incorpora ajuda...
●

Es pot obtenir ajuda fent servir help...

Help

$ git help commit

Desenvolupament d'Aplicacions Web
Personalització
●

La primera cosa que cal fer en GIT és definir la
identitat de l'usuari

$ git config --global user.name "Frederic"
$ git config --global user.email frede@aqui.com

Es pot fer sense global
per tenir usuaris
diferents per projecte

S'envia sempre en tots
els commits que es
facin

Desenvolupament d'Aplicacions Web
Config
●

El paràmetre 'config' es fa servir per
personalitzar el funcionament de GIT

$ git config --global core.editor joe

L'editor que es farà servir
quan faci falta que
escrivim un missatge

$ git config --list

Desenvolupament d'Aplicacions Web
Crear un repositori
●

Tot comença quan un client importa un projecte
al repositori

REPOSITORI

Crea un directori .git en
la carpeta on estem

$ git init
Desenvolupament d'Aplicacions Web
Clone
●

Una forma alternativa de crear un repositori és
copiar-ne algun d'existent
REPOSITORI

REPOSITORI

SERVER

$ git clone

git://server/titit.git
Desenvolupament d'Aplicacions Web
Estats d'un fitxer
●

Els fitxers d'un usuari poden estar en 4 estats
checkout
add
rm

REPOSITORI

No
modificat
Modificat

add

No controlat ...

A punt
d'enviar al
repositori

commit

WORKSPACE
Desenvolupament d'Aplicacions Web
status
●

El paràmetre status mostra en quin estat es
troben els fitxers del directori
$ git status

Branca

# On branch master
# Changes to be committed:
#
# new file: foobar.txt
#

Preparats per
enviar

# Changes not staged for commit:
#
# modified: foo.txt
#

modificats però
que no
s'enviaran

# Untracked files:
#
# bar.txt

No control·lats
Desenvolupament d'Aplicacions Web
diff
●

Podem veure què hem canviat amb diff

$ git diff
No
modificat

Modificat

$ git diff --staged

Desenvolupament d'Aplicacions Web
Log
●

Podem veure els comentaris entre les diferents
versions amb log i history
$ git log

-p

Té moltes opcions ...

--graph

--pretty
--stat

$ git log

Desenvolupament d'Aplicacions Web
Ignorar fitxers
●

Es poden tenir fitxers en el directori i que GIT
no els tingui en compte definint-los a
.gitignore
Es poden fer servir
wildcards per definir
grups de fitxers

Makefile
*.class
Temp/

Tot el de dins del
directori
Desenvolupament d'Aplicacions Web
Commit
●

GIT genera identificadors únics en cada commit
a partir de:
L'autor, la data i el missatge

commit b650e3b831aba05fa62064e7ca02b5ee1b
Author: xavier <fsalaDos@xtec.cat>
Date: Wed Oct 10 08:45:12 2013 -0100
Modificada la funció de suma
Ho empaqueta tot amb
fent un checksum
Desenvolupament d'Aplicacions Web
Descartar els canvis
●

Es poden recuperar fitxers que estiguin en tres
estats diferents
Versió concreta

REPOSITORI

Treure d'staged
No
modificat

git checkout a355 file

Desfer els canvis
Modificat

git checkout -- file

STAGING AREA

git reset HEAD file
Desenvolupament d'Aplicacions Web
Reset
●

Una forma de desfer un commit és eliminar-lo
completament amb reset
git reset HEAD~2

RESET

Fer un reset en treball
en equip té molts
perills

Desenvolupament d'Aplicacions Web
Revert
●

Revert fa un nou commit que desfà els canvis
fets posteriorment
git revert a2345f402e34

REVERT

Desenvolupament d'Aplicacions Web
Modificar una actualització
●

GIT permet afegir coses al darrer commit fent
servir --ammend
REPOSITORI

git commit

Versió a23f45
Falta un fitxer!

git commit --amend
Desenvolupament d'Aplicacions Web
Etiquetar
●

●

Es poden etiquetar determinats moments
“importants” del projecte.
V1.01

Amb etiquetes anotades:
v1

$ git tag -a v1.0 -m “Primera versió”
●

O etiquetes lleugeres
$ git commit -m “Canvis en el codi”
$ git tag v1.01

Desenvolupament d'Aplicacions Web
Desenvolupament d'Aplicacions Web
Remots
●

El repositori local es pot lligar amb repositoris
remots
Freak

$ git remote
Origin

Origin

Desenvolupament d'Aplicacions Web
Remots
●

Es poden tenir tants “remots” com calgui...

Freak

$ git remote add freak git://g.com/a

Origin

Desenvolupament d'Aplicacions Web
Treballar amb els remots
●

Es pot enviar i rebre contingut dels repositoris
remots
push

Freak

pull
fetch

(no uneix)

$ git pull Origin master

Origin

Desenvolupament d'Aplicacions Web
Desenvolupament d'Aplicacions Web
Branching
●

En qualsevol projecte sempre hi ha moments en
que es vol diferir de la línia principal sense
interferir-hi...
El treball amb
branques és ràpid

master

GIT fomenta la
creació de
branches
Desenvolupament d'Aplicacions Web
Crear una branca
●

Una branca és un punter a un determinat
commit
HEAD

PROVA
$ git branch prova

MASTER

HEAD és un
punter a la
branca amb la
que treballem
actualment

Desenvolupament d'Aplicacions Web
Crear una branca
●

Si es fan commits en la branca original el
punter de la branca no es mou
HEAD

MASTER

PROVA
$ git commit -m “x”

Desenvolupament d'Aplicacions Web
Crear una branca
●

En qualsevol moment es pot passar a editar la
branca
MASTER

PROVA

HEAD

$ git checkout prova

Desenvolupament d'Aplicacions Web
Crear una branca
●

Les modificacions posteriors es faran en la
branca i no en el master
$ git commit -m “modificat”

HEAD

MASTER

PROVA

Desenvolupament d'Aplicacions Web
Crear una branca
●

Es pot passar d'una branca a una altra
fàcilment...
$ git checkout master

MASTER
HEAD

PROVA

Només mou el
punter HEAD

Desenvolupament d'Aplicacions Web
Branques
●

Es poden veure fàcilment les branques d'un
projecte i on està el HEAD...
HOTFIX
HEAD
MASTER
PROVA
$ git branch
Hotfix
* Master
Prova
Prova2

PROVA2

Desenvolupament d'Aplicacions Web
merge
●

Es poden barrejar branques entre elles amb
merge
HOTFIX
HEAD
MASTER
PROVA

$ git checkout master
$ git merge hotfix

PROVA2

Desenvolupament d'Aplicacions Web
merge
●

Es poden barrejar branques entre elles amb
merge
HOTFIX

HEAD

MASTER
PROVA
$ git checkout master
$ git merge hotfix

PROVA2

$ git branch -d hotfix
Desenvolupament d'Aplicacions Web
merge
●

Es pot eliminar una branca si ja no fa falta...
HOTFIX

HEAD

MASTER
PROVA

$ git branch -d hotfix

PROVA2

Desenvolupament d'Aplicacions Web
merge
●

La barreja de branques que hagin divergit es
crea un nou commit amb les diferències
HEAD

MASTER

PROVA

$ git merge prova

PROVA2

Desenvolupament d'Aplicacions Web
Conflictes
●

Es poden produir conflictes al barrejar branques
que han divergit
$ git merge prova
Auto-merging a.java
CONFLICT (content): Merge conflict in a.java
Automatic merge failed; fix conflicts and
then commit the result.

Desenvolupament d'Aplicacions Web
Resolució de conflictes
●

Els conflictes es poden resoldre fent servir una
eina gràfica de diferències
$ git mergetool
This message is displayed because 'merge.tool'
is not configured.
See 'git mergetool --tool-help' or 'git help config' for more details.
'git mergetool' will now attempt to use one of the following tools:
tortoisemerge emerge vimdiff
No known merge tool is available.

Es poden fer servir diverses eines com
opendiff kdiff3 tkdiff xxdiff tortoisemerge
gvimdiff diffuse ecmerge p4merge araxis
vimdiff emerge

Desenvolupament d'Aplicacions Web
Resolució de conflictes
●

Es defineix quina eina es farà servir...

$ git config --global merge.tool p4merge
$ git config --global mergetool.p4merge.path
"C:/Program Files/Perforce/p4merge.exe"

Es defineix l'eina i
com s'ha de
cridar...

Desenvolupament d'Aplicacions Web
Eina de resolució
●

La resolució de conflictes sempre es farà fent
servir l'eina que hem configurat

$ git mergetool
Merging:
README.md
Normal merge conflict for 'README.md':
{local}: modified file
{remote}: modified file
Hit return to start merge resolution tool (p4merge):

Desenvolupament d'Aplicacions Web
Eina de resolució

Desenvolupament d'Aplicacions Web
Treball local
●

Les ramificacions i fusions es fan en el propi
repositori.

Pyto

Origin
test

hotfix
bugfix

Les branques no es
S'hi fa referència
comsincronitzen
a Pyto/hotfix
automàticament
Desenvolupament d'Aplicacions Web
Treball local
●

Es fa referència a les branques amb el nom del
repositori i la branca

Pyto

Origin
test

hotfix
bugfix

Pyto/hotfix
Origin/bugfix
Desenvolupament d'Aplicacions Web
Treball local
●

S'han de pujar explícitament les branques als
servidors remots

Pyto

Origin

test
hotfix

hotfix
bugfix
$ git push Origin hotfix
Desenvolupament d'Aplicacions Web
Treball local
●

Per recuperar-ne una còpia editable s'ha de fer
servir -b per crear una branca local

Pyto

Origin

test
hotfix

hotfix
bugfix
$ git checkout -b hotfix origin/hotfix
Desenvolupament d'Aplicacions Web
Hooks
●

Els hooks ofereixen la possibilitat d'executar
programes quan passi alguna cosa important

commit

Hook
Post
update

Desenvolupament d'Aplicacions Web
Hooks
●

Els scripts es guarden en el directori hooks del
repositori
$ ls .git/hooks
Applypatch-msg post-commit post-update
pre-commit update commit-msg
post-receive pre-applypatch pre-rebase

●

Es poden fer scripts en diferents llenguatges:
bash, Perl, Python, Ruby... i se'ls hi pot fer
qualsevol cosa

Desenvolupament d'Aplicacions Web
Hooks
●

Es habitual actualitzar el programari d'una web
al actualitzar el repositori

Desenvolupament d'Aplicacions Web
GIT Book
●

Hi ha moltes més opcions que podeu veure en
el llibre lliure sobre GIT
Versió en anglès
http://git-scm.com/book
Versió en francès
http://git-scm.com/book/fr
Versió en català (parcial)
http://git-scm.com/book/ca
Versió en castellà (parcial)
http://git-scm.com/book/es

Desenvolupament d'Aplicacions Web

Más contenido relacionado

Similar a Git

Dai 9 - Ruby on Rails
Dai 9 - Ruby on RailsDai 9 - Ruby on Rails
Dai 9 - Ruby on RailsCarles Mateu
 
Introducció al Git
Introducció al GitIntroducció al Git
Introducció al GitYmbra
 
Themes i plugins personalitzar i potenciar wordpress
Themes i plugins  personalitzar i potenciar wordpressThemes i plugins  personalitzar i potenciar wordpress
Themes i plugins personalitzar i potenciar wordpressJoan R. Serra
 
Desmitificant l'HTML5
Desmitificant l'HTML5Desmitificant l'HTML5
Desmitificant l'HTML5Ymbra
 
Com funciona el git (guifi)
Com funciona el git (guifi)Com funciona el git (guifi)
Com funciona el git (guifi)gilforcada
 
ELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per YmbraELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per YmbraYmbra
 
Ruiz maría programari
Ruiz maría programariRuiz maría programari
Ruiz maría programariMariaRuizLara
 
Strezea mario programari
Strezea mario programariStrezea mario programari
Strezea mario programarimari0S
 
Introducció a Phing php - digitals girona setembre 2014
Introducció a Phing php - digitals girona setembre 2014Introducció a Phing php - digitals girona setembre 2014
Introducció a Phing php - digitals girona setembre 2014Àlex Corretgé
 
programaridewindows.docx
programaridewindows.docxprogramaridewindows.docx
programaridewindows.docxXdennisX
 
Pr3 ex2 oral_latino_navarrocarolina
Pr3 ex2 oral_latino_navarrocarolinaPr3 ex2 oral_latino_navarrocarolina
Pr3 ex2 oral_latino_navarrocarolinaCarolina Latino
 
Disseny de l’entorn de desenvolupament J2EE del Servei de Recursos Informàtic...
Disseny de l’entorn de desenvolupament J2EE del Servei de Recursos Informàtic...Disseny de l’entorn de desenvolupament J2EE del Servei de Recursos Informàtic...
Disseny de l’entorn de desenvolupament J2EE del Servei de Recursos Informàtic...Tomàs Reverter
 

Similar a Git (20)

Dai 9 - Ruby on Rails
Dai 9 - Ruby on RailsDai 9 - Ruby on Rails
Dai 9 - Ruby on Rails
 
Introducció al Git
Introducció al GitIntroducció al Git
Introducció al Git
 
Introducció a Git
Introducció a GitIntroducció a Git
Introducció a Git
 
Themes i plugins personalitzar i potenciar wordpress
Themes i plugins  personalitzar i potenciar wordpressThemes i plugins  personalitzar i potenciar wordpress
Themes i plugins personalitzar i potenciar wordpress
 
Desmitificant l'HTML5
Desmitificant l'HTML5Desmitificant l'HTML5
Desmitificant l'HTML5
 
Com funciona el git (guifi)
Com funciona el git (guifi)Com funciona el git (guifi)
Com funciona el git (guifi)
 
J2EE
J2EEJ2EE
J2EE
 
ELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per YmbraELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
 
Full stack R
Full stack RFull stack R
Full stack R
 
Ruiz maría programari
Ruiz maría programariRuiz maría programari
Ruiz maría programari
 
Strezea mario programari
Strezea mario programariStrezea mario programari
Strezea mario programari
 
Introducció a Phing php - digitals girona setembre 2014
Introducció a Phing php - digitals girona setembre 2014Introducció a Phing php - digitals girona setembre 2014
Introducció a Phing php - digitals girona setembre 2014
 
Programari Lliure UOC
Programari Lliure UOCProgramari Lliure UOC
Programari Lliure UOC
 
programaridewindows.docx
programaridewindows.docxprogramaridewindows.docx
programaridewindows.docx
 
Programari
ProgramariProgramari
Programari
 
Programari
ProgramariProgramari
Programari
 
Pr3 ex2 oral_latino_navarrocarolina
Pr3 ex2 oral_latino_navarrocarolinaPr3 ex2 oral_latino_navarrocarolina
Pr3 ex2 oral_latino_navarrocarolina
 
Disseny de l’entorn de desenvolupament J2EE del Servei de Recursos Informàtic...
Disseny de l’entorn de desenvolupament J2EE del Servei de Recursos Informàtic...Disseny de l’entorn de desenvolupament J2EE del Servei de Recursos Informàtic...
Disseny de l’entorn de desenvolupament J2EE del Servei de Recursos Informàtic...
 
Programari
ProgramariProgramari
Programari
 
web 2.0
web 2.0web 2.0
web 2.0
 

Más de Xavier Sala Pujolar (18)

Fer App mòbils amb tecnologia web
Fer App mòbils amb tecnologia webFer App mòbils amb tecnologia web
Fer App mòbils amb tecnologia web
 
Selenium web driver in Java
Selenium web driver in JavaSelenium web driver in Java
Selenium web driver in Java
 
Introducció a Docker
Introducció a DockerIntroducció a Docker
Introducció a Docker
 
Validació de Documents XML amb XSD
Validació de Documents XML amb XSDValidació de Documents XML amb XSD
Validació de Documents XML amb XSD
 
Criptografia
CriptografiaCriptografia
Criptografia
 
RIP
RIPRIP
RIP
 
OSPF
OSPFOSPF
OSPF
 
Openldap
OpenldapOpenldap
Openldap
 
Llei de Serveis de la Societat de la Informació (LSSI)
Llei de Serveis de la Societat de la Informació (LSSI)Llei de Serveis de la Societat de la Informació (LSSI)
Llei de Serveis de la Societat de la Informació (LSSI)
 
Llei de Protecció de dades de caràcter personal (LOPD)
Llei de Protecció de dades de caràcter personal (LOPD)Llei de Protecció de dades de caràcter personal (LOPD)
Llei de Protecció de dades de caràcter personal (LOPD)
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Virtualització (2 part)
Virtualització (2 part)Virtualització (2 part)
Virtualització (2 part)
 
Virtualització
VirtualitzacióVirtualització
Virtualització
 
Enginyeria social
Enginyeria socialEnginyeria social
Enginyeria social
 
Css en XML
Css en XMLCss en XML
Css en XML
 
Creació de documents xml
Creació de documents xmlCreació de documents xml
Creació de documents xml
 
Introducció a xml
Introducció a xmlIntroducció a xml
Introducció a xml
 
Programació de sockets amb C++
Programació de sockets amb C++Programació de sockets amb C++
Programació de sockets amb C++
 

Git

  • 1. CFGS Desenvolupament d'aplicacions Web M8 - Desplegament d'aplicacions web UF4 Control de versions i documentació Git Xavier Sala Pujolar Institut Cendrassos
  • 2. ● Alguns problemes dels sistemes centralitzats són: – Cal estar 'online' per crear branques o veure les diferències La gent que treballa amb portàtils tendeix a estar temps sense connexió – Els pedaços es poden desactualitzar ràpidament Desenvolupament d'Aplicacions Web
  • 3. Control de versions distribuïts ● La idea fonamental d'aquests sistemes és: Tothom té una còpia del repositori Es poden enviar i rebre canvis de qualsevol repositori Distribuïts Desenvolupament d'Aplicacions Web
  • 4. Es pot simular un punt central ● No hi ha un repositori central però es pot “simular” fàcilment En realitat no són centrals perquè podem descarregar de qualsevol dels altres... Desenvolupament d'Aplicacions Web
  • 5. Versions ● GIT no guarda els canvis sinó que fa un “spapshot” de tot Versió 1 Això no és el més habitual en els VCS Versió 2 Versió 3 Versió 4 Els fitxers sense canvis es guarden com enllaços Desenvolupament d'Aplicacions Web
  • 6. Operacions locals ● Al tenir un repositori la majoria de les operacions són locals Menys ús de la xarxa i per tant més velocitat Desenvolupament d'Aplicacions Web
  • 7. Integritat ● Tot el que passa genera una signatura SHA-1 que servirà per comprovar-ne la integritat commit ca82a6dff817ec66f44342007202690a93763949 commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 commit a11bef06a3f659402fe7563abf99ad00de2209e6 Desenvolupament d'Aplicacions Web
  • 8. Senzill ● Git funciona d'una forma semblant que els sistemes més populars: $ git add superprograma.java A través dels paràmetres diem què volem fer Es fa servir el mateix executable per tot Desenvolupament d'Aplicacions Web
  • 9. Incorpora ajuda... ● Es pot obtenir ajuda fent servir help... Help $ git help commit Desenvolupament d'Aplicacions Web
  • 10. Personalització ● La primera cosa que cal fer en GIT és definir la identitat de l'usuari $ git config --global user.name "Frederic" $ git config --global user.email frede@aqui.com Es pot fer sense global per tenir usuaris diferents per projecte S'envia sempre en tots els commits que es facin Desenvolupament d'Aplicacions Web
  • 11. Config ● El paràmetre 'config' es fa servir per personalitzar el funcionament de GIT $ git config --global core.editor joe L'editor que es farà servir quan faci falta que escrivim un missatge $ git config --list Desenvolupament d'Aplicacions Web
  • 12. Crear un repositori ● Tot comença quan un client importa un projecte al repositori REPOSITORI Crea un directori .git en la carpeta on estem $ git init Desenvolupament d'Aplicacions Web
  • 13. Clone ● Una forma alternativa de crear un repositori és copiar-ne algun d'existent REPOSITORI REPOSITORI SERVER $ git clone git://server/titit.git Desenvolupament d'Aplicacions Web
  • 14. Estats d'un fitxer ● Els fitxers d'un usuari poden estar en 4 estats checkout add rm REPOSITORI No modificat Modificat add No controlat ... A punt d'enviar al repositori commit WORKSPACE Desenvolupament d'Aplicacions Web
  • 15. status ● El paràmetre status mostra en quin estat es troben els fitxers del directori $ git status Branca # On branch master # Changes to be committed: # # new file: foobar.txt # Preparats per enviar # Changes not staged for commit: # # modified: foo.txt # modificats però que no s'enviaran # Untracked files: # # bar.txt No control·lats Desenvolupament d'Aplicacions Web
  • 16. diff ● Podem veure què hem canviat amb diff $ git diff No modificat Modificat $ git diff --staged Desenvolupament d'Aplicacions Web
  • 17. Log ● Podem veure els comentaris entre les diferents versions amb log i history $ git log -p Té moltes opcions ... --graph --pretty --stat $ git log Desenvolupament d'Aplicacions Web
  • 18. Ignorar fitxers ● Es poden tenir fitxers en el directori i que GIT no els tingui en compte definint-los a .gitignore Es poden fer servir wildcards per definir grups de fitxers Makefile *.class Temp/ Tot el de dins del directori Desenvolupament d'Aplicacions Web
  • 19. Commit ● GIT genera identificadors únics en cada commit a partir de: L'autor, la data i el missatge commit b650e3b831aba05fa62064e7ca02b5ee1b Author: xavier <fsalaDos@xtec.cat> Date: Wed Oct 10 08:45:12 2013 -0100 Modificada la funció de suma Ho empaqueta tot amb fent un checksum Desenvolupament d'Aplicacions Web
  • 20. Descartar els canvis ● Es poden recuperar fitxers que estiguin en tres estats diferents Versió concreta REPOSITORI Treure d'staged No modificat git checkout a355 file Desfer els canvis Modificat git checkout -- file STAGING AREA git reset HEAD file Desenvolupament d'Aplicacions Web
  • 21. Reset ● Una forma de desfer un commit és eliminar-lo completament amb reset git reset HEAD~2 RESET Fer un reset en treball en equip té molts perills Desenvolupament d'Aplicacions Web
  • 22. Revert ● Revert fa un nou commit que desfà els canvis fets posteriorment git revert a2345f402e34 REVERT Desenvolupament d'Aplicacions Web
  • 23. Modificar una actualització ● GIT permet afegir coses al darrer commit fent servir --ammend REPOSITORI git commit Versió a23f45 Falta un fitxer! git commit --amend Desenvolupament d'Aplicacions Web
  • 24. Etiquetar ● ● Es poden etiquetar determinats moments “importants” del projecte. V1.01 Amb etiquetes anotades: v1 $ git tag -a v1.0 -m “Primera versió” ● O etiquetes lleugeres $ git commit -m “Canvis en el codi” $ git tag v1.01 Desenvolupament d'Aplicacions Web
  • 26. Remots ● El repositori local es pot lligar amb repositoris remots Freak $ git remote Origin Origin Desenvolupament d'Aplicacions Web
  • 27. Remots ● Es poden tenir tants “remots” com calgui... Freak $ git remote add freak git://g.com/a Origin Desenvolupament d'Aplicacions Web
  • 28. Treballar amb els remots ● Es pot enviar i rebre contingut dels repositoris remots push Freak pull fetch (no uneix) $ git pull Origin master Origin Desenvolupament d'Aplicacions Web
  • 30. Branching ● En qualsevol projecte sempre hi ha moments en que es vol diferir de la línia principal sense interferir-hi... El treball amb branques és ràpid master GIT fomenta la creació de branches Desenvolupament d'Aplicacions Web
  • 31. Crear una branca ● Una branca és un punter a un determinat commit HEAD PROVA $ git branch prova MASTER HEAD és un punter a la branca amb la que treballem actualment Desenvolupament d'Aplicacions Web
  • 32. Crear una branca ● Si es fan commits en la branca original el punter de la branca no es mou HEAD MASTER PROVA $ git commit -m “x” Desenvolupament d'Aplicacions Web
  • 33. Crear una branca ● En qualsevol moment es pot passar a editar la branca MASTER PROVA HEAD $ git checkout prova Desenvolupament d'Aplicacions Web
  • 34. Crear una branca ● Les modificacions posteriors es faran en la branca i no en el master $ git commit -m “modificat” HEAD MASTER PROVA Desenvolupament d'Aplicacions Web
  • 35. Crear una branca ● Es pot passar d'una branca a una altra fàcilment... $ git checkout master MASTER HEAD PROVA Només mou el punter HEAD Desenvolupament d'Aplicacions Web
  • 36. Branques ● Es poden veure fàcilment les branques d'un projecte i on està el HEAD... HOTFIX HEAD MASTER PROVA $ git branch Hotfix * Master Prova Prova2 PROVA2 Desenvolupament d'Aplicacions Web
  • 37. merge ● Es poden barrejar branques entre elles amb merge HOTFIX HEAD MASTER PROVA $ git checkout master $ git merge hotfix PROVA2 Desenvolupament d'Aplicacions Web
  • 38. merge ● Es poden barrejar branques entre elles amb merge HOTFIX HEAD MASTER PROVA $ git checkout master $ git merge hotfix PROVA2 $ git branch -d hotfix Desenvolupament d'Aplicacions Web
  • 39. merge ● Es pot eliminar una branca si ja no fa falta... HOTFIX HEAD MASTER PROVA $ git branch -d hotfix PROVA2 Desenvolupament d'Aplicacions Web
  • 40. merge ● La barreja de branques que hagin divergit es crea un nou commit amb les diferències HEAD MASTER PROVA $ git merge prova PROVA2 Desenvolupament d'Aplicacions Web
  • 41. Conflictes ● Es poden produir conflictes al barrejar branques que han divergit $ git merge prova Auto-merging a.java CONFLICT (content): Merge conflict in a.java Automatic merge failed; fix conflicts and then commit the result. Desenvolupament d'Aplicacions Web
  • 42. Resolució de conflictes ● Els conflictes es poden resoldre fent servir una eina gràfica de diferències $ git mergetool This message is displayed because 'merge.tool' is not configured. See 'git mergetool --tool-help' or 'git help config' for more details. 'git mergetool' will now attempt to use one of the following tools: tortoisemerge emerge vimdiff No known merge tool is available. Es poden fer servir diverses eines com opendiff kdiff3 tkdiff xxdiff tortoisemerge gvimdiff diffuse ecmerge p4merge araxis vimdiff emerge Desenvolupament d'Aplicacions Web
  • 43. Resolució de conflictes ● Es defineix quina eina es farà servir... $ git config --global merge.tool p4merge $ git config --global mergetool.p4merge.path "C:/Program Files/Perforce/p4merge.exe" Es defineix l'eina i com s'ha de cridar... Desenvolupament d'Aplicacions Web
  • 44. Eina de resolució ● La resolució de conflictes sempre es farà fent servir l'eina que hem configurat $ git mergetool Merging: README.md Normal merge conflict for 'README.md': {local}: modified file {remote}: modified file Hit return to start merge resolution tool (p4merge): Desenvolupament d'Aplicacions Web
  • 46. Treball local ● Les ramificacions i fusions es fan en el propi repositori. Pyto Origin test hotfix bugfix Les branques no es S'hi fa referència comsincronitzen a Pyto/hotfix automàticament Desenvolupament d'Aplicacions Web
  • 47. Treball local ● Es fa referència a les branques amb el nom del repositori i la branca Pyto Origin test hotfix bugfix Pyto/hotfix Origin/bugfix Desenvolupament d'Aplicacions Web
  • 48. Treball local ● S'han de pujar explícitament les branques als servidors remots Pyto Origin test hotfix hotfix bugfix $ git push Origin hotfix Desenvolupament d'Aplicacions Web
  • 49. Treball local ● Per recuperar-ne una còpia editable s'ha de fer servir -b per crear una branca local Pyto Origin test hotfix hotfix bugfix $ git checkout -b hotfix origin/hotfix Desenvolupament d'Aplicacions Web
  • 50. Hooks ● Els hooks ofereixen la possibilitat d'executar programes quan passi alguna cosa important commit Hook Post update Desenvolupament d'Aplicacions Web
  • 51. Hooks ● Els scripts es guarden en el directori hooks del repositori $ ls .git/hooks Applypatch-msg post-commit post-update pre-commit update commit-msg post-receive pre-applypatch pre-rebase ● Es poden fer scripts en diferents llenguatges: bash, Perl, Python, Ruby... i se'ls hi pot fer qualsevol cosa Desenvolupament d'Aplicacions Web
  • 52. Hooks ● Es habitual actualitzar el programari d'una web al actualitzar el repositori Desenvolupament d'Aplicacions Web
  • 53. GIT Book ● Hi ha moltes més opcions que podeu veure en el llibre lliure sobre GIT Versió en anglès http://git-scm.com/book Versió en francès http://git-scm.com/book/fr Versió en català (parcial) http://git-scm.com/book/ca Versió en castellà (parcial) http://git-scm.com/book/es Desenvolupament d'Aplicacions Web