jesus@jesusamieiro · PDF fileIntroducción Ramas, fusión y conflictos...

61

Transcript of jesus@jesusamieiro · PDF fileIntroducción Ramas, fusión y conflictos...

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

Contenido

¿Qué es?

Presupuesto_v2.doc

Cartel_v5.jpg

2010_05_17_web

Problemas

VCS / SCM

Soluciones

Tipos de SCM

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

Versión 1

Versión 2

Versión 3Equipo 1

Equipo 2

Equipo 3

Equipo 4

Servidorcentral

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

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

Git. Características

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

Git. Características (II)

Versiones

● Consola● GUI● IDE

Cliente

● SaaS● GitHub● Bitbucket● GitLab

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

Servidor

Conceptos básicos

Repositorio

Commit

Zonas en GitDirectoriode trabajo

Zona de preparación Repositorio

Preparar archivos

Commit

Checkout

Estados y flujo

Ignorado

Con seguimientoSin

seguimientoSin

modificación Modificado

Añadir archivo

Edición

Commit

Preparado

Eliminar archivo

SHA-1

Commit 160 bitsFunciónSHA-1

HEAD75528b9

Commit 1

75528b9

Commit 1

8daf16a

Commit 2

75528b9

Commit 1

8daf16a

Commit 2

a346348

Commit 3

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

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

Comandos básicos

● git add● git add .

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

Comandos básicos (II)

Ramas

Rama

75528b9

Commit 1

8daf16a

Commit 2

de396a3

Commit 5

a3ae45c

Commit 3

456af81

Commit 4

pruebas

master

HEAD

● 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

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

● Resolver manualmente● Herramientas fusión

● Meld● P4merge● KDif3

Conflictos fusión

$ 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)

$ 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)

$ 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)

Repositorios remotos

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

● 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

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

Comandos repositorios (II)

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

Comandos repositorios (III)

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

● pull push→● fetch vs pull

Comandos repositorios (IV)

Flujos de trabajo habituales

Git flow

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

proyectos

Git flow

● 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)

● 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

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

<name>

Git flow. Comandos (II)

www.jesusamieiro.com

14/03/2016