jesus@jesusamieiro.com
● 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 4
Equipo local
Versión 1
Versión 2
Versión 3Equipo 1
Equipo 2
Equipo 3
Equipo 4
Servidor
central
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 Git
Directorio
de trabajo
Zona de
preparación
Repositorio
Preparar archivos
Commit
Checkout
Estados y flujo
Ignorado
Con seguimiento
Sin
seguimiento
Sin
modificación
Modificado
Añadir archivo
Edición
Commit
Preparado
Eliminar archivo
SHA-1
Commit 160 bits
Función
SHA-1
HEAD
75528b9
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
git@bitbucket.org:amieiro/proyectocompartido.
git
● git remote -v
● origin git@bitbucket.org:amieiro/proyectocompartido.
(fetch)
● origin git@bitbucket.org: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

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