Git Workflowtrabajando en equipo
Objetivos
● Aprender buenas practicas de Git.● Crear un ambiente de trabajo exitoso en
equipo.● Mitigar, identificar y solucionar problemas
que surjan en estos ambientes.
Sobre mi
● Ingeniero en Sistemas (UNAPEC)
● Msc. Electronic Commerce (University of Westminster)
● 1ra promoción Técnico en Multimedia (ITLA)
● 15 años de experiencia en el área web
René [email protected]@rene_olivo
Git Zen
Master es intocable*
Haz Commit regularmente
● Hacer commit por cambios, no por tiempo.
● Escribir un comentario relevante (short summary)
Dale cariño a git log
Dale cariño a git log
.gitignore
● Claves e información sensitiva.● Archivos auto-generados y de usuarios.● Compontentes externos
Prohibido usar rebase, squash, --amend
● Desordena los commits● Se pierde el sentido de progresión● Afecta el uso de herramientas como git
bisect
BA C
Rebase
Trabajando en Equipo
Repositorio centralizado
Repositorio local
> git init --bare repo-principal
> git clone repo-principal repo-trabajo
Repositorios Remotos
Github Bitbucket VPS
Interface Web
https://www.gitlab.com/
Workflows
Github FlowGit Flow
Git Flow
Github flow
Repo
git init --bare repo
Repo
git clone //servidor/repo repo-andrea
Andrea
Repo
git statusgit add .git commit -m "commit inicial"
Andrea
back-end
front-end
ea3f127[head] master
Repo
git pull origin mastergit push origin master
Andrea
[head] master ea3f127
[head] master ea3f127
Repo
git branch dev/back-endgit checkout dev/back-end
Andrea
master ea3f127
[head] master ea3f127
[head] dev/back-end
Repo
git statusgit add .git commit -m "add back-end models"
Andrea
master ea3f127
[head] master ea3f127
[head] dev/back-end
back-end
front-end
● models
31c4f22
Repo
git statusgit add .git commit -m "add back-end views"
Andrea
master ea3f127
[head] master ea3f127
[head] dev/back-end
back-end
front-end
● models● views
31c4f22
b63ac84
Repo
git statusgit add .git commit -m "add back-end controllers"
Andrea
master ea3f127
[head] master ea3f127
[head] dev/back-end
back-end
front-end
● models● views● controllers
31c4f22
b63ac84
749df5d
Repo
git checkout mastergit merge dev/back-end
Andrea
ea3f127
[head] master ea3f127
[head] dev/back-endmaster
31c4f22
b63ac84
749df5d
Repo
Andrea
ea3f127
[head] master ea3f127
[head] dev/back-endmaster
31c4f22
b63ac84
749df5d
Bartolo
[head] dev/front-endmaster
ea3f127
353fd21
764ab41
fde35ac
Repo
git pull origin mastergit push origin master
Andrea
ea3f127
[head] master ea3f127
[head] dev/back-endmaster
31c4f22
b63ac84
749df5d
Bartolo
[head] dev/front-endmaster
ea3f127
353fd21
764ab41
fde35ac
[head] dev/back-endmaster
31c4f22
b63ac84
749df5d
Repo
Andrea
ea3f127
[head] master ea3f127
[head] dev/back-endmaster
31c4f22
b63ac84
749df5d
Bartolo
dev/front-end
ea3f127
353fd21
764ab41
fde35ac
[head] dev/back-endmaster
31c4f22
b63ac84
749df5d
31c4f22
b63ac84
0b14a66
749df5d
[head] master
dev/front-end
Resolución de Conflictos
Problemas con Recursos Compartidos
Bases de Datos y Archivos
Recurso Centralizado
Andrea Bartolo Carolina
Repo
Recurso
Recurso Descentralizado
Andrea Bartolo Carolina
Repo
Recurso Recurso Recurso
Recurso Versionado
Andrea
V1
Bartolo Carolina
V2
Repo
Recurso Versionado por Git
Andrea Bartolo Carolina
Repo
Recurso Recurso Recurso
v1-uninstall.sqlv1-install.sql
v3-uninstall.sqlv3-install.sql
repositorio recurso
v2-uninstall.sqlv2-install.sql
Merge Conflict
Como evitar Merge Conflicts
● Evitar trabajar en el mismo archivo● Separar concernimientos● En caso de que sea necesario trabajar en el
mismo archivo coloquen placeholders (evitar)
kdiff3
Git Bisect
Git Bisect
git bisect startgit bisect good dev/front-end-menugit bisect bad master
Git Bisect
Bisecting: 2 revisions left to test after this (roughly 2 steps)
Git Bisect
git bisect good
Bisecting: 0 revisions left to test after this (roughly 1 step)
Git Bisect
git bisect bad< ... sha ... > is the first bad commit
Gracias