Jesús Amieiro: Git para el día a día

61

Transcript of Jesús Amieiro: Git para el día a día

Page 1: Jesús Amieiro: Git para el día a día
Page 2: Jesús Amieiro: Git para el día a día
Page 4: Jesús Amieiro: Git para el día a día
Page 5: Jesús Amieiro: Git para el día a día

● Introducción● Ramas, fusión y conflictos● Repositorios remotos● Flujos de trabajo● Git flow

Contenido

Page 6: Jesús Amieiro: Git para el día a día

¿Qué es?

Page 7: Jesús Amieiro: Git para el día a día

Presupuesto_v2.doc

Cartel_v5.jpg

2010_05_17_web

Problemas

Page 8: Jesús Amieiro: Git para el día a día

VCS / SCM

Soluciones

Page 9: Jesús Amieiro: Git para el día a día

Tipos de SCM

Page 10: Jesús Amieiro: Git para el día a día

Versión 1

tiempo

Versión 1

Versión 2

Versión 1

Versión 2

Versión 3

Versión 1

Versión 2

Versión 3

Versión 4Equipo local

Page 11: Jesús Amieiro: Git para el día a día

Versión 1

Versión 2

Versión 3Equipo 1

Equipo 2

Equipo 3

Equipo 4

Servidorcentral

Page 12: Jesús Amieiro: Git para el día a día

Equipo 1

V 1

V 2

V 3

Equipo 2

V 1

V 2

V 3

Equipo 3

V 1

V 2

V 3

Servidor

V 1

V 2

V 3

Page 13: Jesús Amieiro: Git para el día a día

● Rápido y escalable● Copia completa● Desarrollo distribuido● Trabajo local● Alienta las ramas● Instantáneas

Git. Características

Page 14: Jesús Amieiro: Git para el día a día

● Múltiples protocolos● Robustez: SHA-1● Libre ● Gratuito

Git. Características (II)

Page 15: Jesús Amieiro: Git para el día a día

Versiones

Page 16: Jesús Amieiro: Git para el día a día

● Consola● GUI● IDE

Cliente

Page 17: Jesús Amieiro: Git para el día a día

● SaaS● GitHub● Bitbucket● GitLab

● Servidor● GitHub Enterprise● Bitbucket Server● GitLab● Gitolite

Servidor

Page 18: Jesús Amieiro: Git para el día a día

Conceptos básicos

Page 19: Jesús Amieiro: Git para el día a día

Repositorio

Page 20: Jesús Amieiro: Git para el día a día

Commit

Page 21: Jesús Amieiro: Git para el día a día

Zonas en GitDirectoriode trabajo

Zona de preparación Repositorio

Preparar archivos

Commit

Checkout

Page 22: Jesús Amieiro: Git para el día a día

Estados y flujo

Ignorado

Con seguimientoSin

seguimientoSin

modificación Modificado

Añadir archivo

Edición

Commit

Preparado

Eliminar archivo

Page 23: Jesús Amieiro: Git para el día a día

SHA-1

Commit 160 bitsFunciónSHA-1

Page 24: Jesús Amieiro: Git para el día a día

HEAD75528b9

Commit 1

75528b9

Commit 1

8daf16a

Commit 2

75528b9

Commit 1

8daf16a

Commit 2

a346348

Commit 3

Page 25: Jesús Amieiro: Git para el día a día

● git config● git config --global user.name “Jesús Amieiro”

● git init● git clone● git status● git dif● git log

Comandos básicos

Page 26: Jesús Amieiro: Git para el día a día

● git add● git add .

● git commit● git commit -m “Commit inicial”

Comandos básicos (II)

Page 27: Jesús Amieiro: Git para el día a día

Ramas

Page 28: Jesús Amieiro: Git para el día a día

Rama

75528b9

Commit 1

8daf16a

Commit 2

de396a3

Commit 5

a3ae45c

Commit 3

456af81

Commit 4

pruebas

master

HEAD

Page 29: Jesús Amieiro: Git para el día a día

● git branch● git branch [nombre-rama]● git checkout [nombre-rama]● git checkout -b [nombre-rama]● git branch -d [nombre-rama] ● git merge [nombre-rama]

Comandos ramas

Page 30: Jesús Amieiro: Git para el día a día

● Abortar la fusión● git merge --abort

● Resolver manualmente● Herramientas fusión

● Meld● P4merge● KDif3

Conflictos fusión

Page 31: Jesús Amieiro: Git para el día a día

$ git merge pruebas

Auto-merging archivo_a.txt

CONFLICT (content): Merge conflict in archivo_a.txt

Automatic merge failed; fix conflicts and then commit the result.

Conflictos fusión (II)

Page 32: Jesús Amieiro: Git para el día a día

$ cat archivo_a.txt

<<<<<<< HEAD

Experimento añadiendo una nueva línea al archivo_a.txt en la rama experimento

Añado una segunda línea al archivo_a.txt en la rama master

=======

Inserto una línea en el archivo_a.txt

>>>>>>> pruebas

Conflictos fusión (III)

Page 33: Jesús Amieiro: Git para el día a día

$ git add archivo_a.txt

$ git commit -m “Resuelto el conflicto en la línea 1 en el archivo_a.txt”

Conflictos fusión (IV)

Page 34: Jesús Amieiro: Git para el día a día

Repositorios remotos

Page 35: Jesús Amieiro: Git para el día a día

Equipo 1

V 1

V 2

V 3

Equipo 2

V 1

V 2

V 3

Equipo 3

V 1

V 2

V 3

Servidor

V 1

V 2

V 3

Page 36: Jesús Amieiro: Git para el día a día

● git remote● git remote add origin

[email protected]:amieiro/proyectocompartido.

git

● git remote -v ● origin [email protected]:amieiro/proyectocompartido.

(fetch)● origin [email protected]:amieiro/proyectocompartido.

(push)

Comandos repositorios

Page 37: Jesús Amieiro: Git para el día a día

● git fetch● git fetch ● git branch -a -v● git checkout dev● git merge origin/dev

Comandos repositorios (II)

Page 38: Jesús Amieiro: Git para el día a día

● git pull● git checkout master● git pull● git pull --all

Comandos repositorios (III)

Page 39: Jesús Amieiro: Git para el día a día

● git push● git push -u origin master● git push● git push --all● git push –tags

● pull push→● fetch vs pull

Comandos repositorios (IV)

Page 40: Jesús Amieiro: Git para el día a día

Flujos de trabajo habituales

Page 41: Jesús Amieiro: Git para el día a día
Page 42: Jesús Amieiro: Git para el día a día
Page 43: Jesús Amieiro: Git para el día a día
Page 44: Jesús Amieiro: Git para el día a día

Git flow

Page 45: Jesús Amieiro: Git para el día a día

● Repositorio organizado● Procedimientos más claros● Estructuras familiares entre

proyectos

Git flow

Page 46: Jesús Amieiro: Git para el día a día

● Rama de producción: master● Rama de desarrollo: develop● Rama de característica: feature/● Rama de publicación: release/● Rama de revisión: hotfix/

Git flow (II)

Page 47: Jesús Amieiro: Git para el día a día
Page 48: Jesús Amieiro: Git para el día a día
Page 49: Jesús Amieiro: Git para el día a día
Page 50: Jesús Amieiro: Git para el día a día
Page 51: Jesús Amieiro: Git para el día a día
Page 52: Jesús Amieiro: Git para el día a día
Page 53: Jesús Amieiro: Git para el día a día
Page 54: Jesús Amieiro: Git para el día a día
Page 55: Jesús Amieiro: Git para el día a día
Page 56: Jesús Amieiro: Git para el día a día
Page 57: Jesús Amieiro: Git para el día a día
Page 58: Jesús Amieiro: Git para el día a día

● https://github.com/nvie/gitflow/wiki/Command-Line-Arguments

● git flow init● git flow feature● git flow feature start <name>

[<base>]● git flow feature finish <name>

Git flow. Comandos

Page 59: Jesús Amieiro: Git para el día a día

● git flow feature publish <name>● git flow feature pull <remote>

<name>

Git flow. Comandos (II)

Page 60: Jesús Amieiro: Git para el día a día
Page 61: Jesús Amieiro: Git para el día a día

www.jesusamieiro.com

14/03/2016