SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
Git y personas
Trabajar en equipo con git
Jesús López de la Cruz
Tech Lead - QaShops (Vente Privee group)


@jeslopcru

jesuslc.com
¿Quién utiliza Git?
• ¿Qué es git?

• A tener en cuenta

• Estrategias de branching

• Lecciones aprendidas

• Reflexiones
¿De qué vamos a hablar?
¿Qué es git?
¿Qué es git?
Es un software de control de versiones
diseñado por Linus Torvalds, que te
ayuda a llevar el registro de los cambios
en el código fuente.
5 comandos básicos de git
• git checkout

• git commit

• git pull

• git merge

• git push
5 comandos básicos de git
y las bases para trabajar en equipo
• git checkout

• git commit

• git pull

• git merge

• git push
• Comunicación

• Confianza

• Simplicidad
¿Cómo incorporamos cambios al
repositorio?
Solicitar al equipo
que revise el código
antes de incorporarlo
Pull request
¿Cómo incorporamos cambios al
repositorio?
Solicitar al equipo
que revise el código
antes de incorporarlo
Pull request Pair programming
Programación por parejas,
dos personas trabajan en el
mismo desarrollo
vs
¿Cómo trabajamos con ramas?
• ¿Solo una rama?

• ¿Varias ramas?

• ¿Cómo afrontar los bugs en producción?
OBJETIVO
Aportar valor al negocio a través
del código minimizando el riesgo
Cómo elegir bien una
estrategia de ramas
Puzzle
Cómo elegir bien una
estrategia de ramas
EMPRESAPROYECTO
DESPLIEGUE
Puzzle
EQUIPO
El equipo
3 ó 10 personas

¿distribuido? 

¿Madurez?
El tipo de proyecto
¿aplicación web? 

¿android? ¿iOS?
La compañía
Historias de usuario

¿Validación/QA?

Agilidad en los procesos
El desarrollo
Tests

Integración continua

Entornos

Automatización
¿Cómo lo hacemos?
EMPRESAPROYECTO
DESPLIEGUE
EQUIPO
Estrategias de branching
Mainline branch
Simplicidad
Branch 

B
Branch 

C
Branch 

A
master
Mainline
branch
simplicidad
Cuidado con las ramas “largas” 

Si no hay tests es arriesgado
Flujo de trabajo simple

Listo para desplegar
Mainline
branch
simplicidad
Branch per
feature
Master nunca está roto
Branch per 

feature
Master nunca está roto
Branch 

F1
Branch 

F2
Integration
branch
master
Cuidado con las ramas “largas” 

Si hay un rollback se pierde todo el
valor entregado

Master nunca está “roto”

Tenemos una rama para comparar

Branch per 

feature
Master nunca está roto
Environment
based
Revisar antes de subir
Environment
based
Revisar antes de subir
Branch 

F1
Branch 

F2masterPREPROD
PROD
Environment
based
Revisar antes de subir
Branch 

F1
Branch 

F2masterPREPROD
PROD
Environment
based
Revisar antes de subir
Branch 

F1
Branch 

F2masterPREPROD
PROD
Cuidado con las ramas “largas” 

Si hay un rollback se pierde todo el
valor entregado

Automatizar el proceso de
despliegue
Master nunca está “roto”

Probar con distintas configuraciones

Environment
based
Revisar antes de subir
git flow
El que todo el mundo conoce
git flow
El que todo el
mundo conoce
Feature
Feature
Develop
Hotfix
Master
Release
Feature
Feature
Develop
Hotfix
Master
Release
git flow
El que todo el
mundo conoce
Feature
Feature
Develop
Hotfix
Master
Release
git flow
El que todo el
mundo conoce
Feature
Feature
Develop
Hotfix
Master
Release
git flow
El que todo el
mundo conoce
Cuidado con las ramas “largas” 

Si hay un rollback se pierde todo el
valor entregado

Complejo para equipos pequeños

Mucha documentación

Ramas ordenadas
git flow
El que todo el
mundo conoce
Trunk based
Las ramas son para los monos
Trunk based
Las ramas son
para los monos
master
Equipos distribuidos

Es necesario tener confianza: test,
automatización y profesionalidad
Simple

Estar al día de los cambios
Trunk based
Las ramas son
para los monos
Lecciones aprendidas
 KISS - Keep It Simple, Stupid!
Lecciones aprendidas
Flujo simple
Lecciones aprendidas
Flujo simple
No florituras Ramas pequeñas Feature toggles /

branch by abstraction
Lecciones aprendidas
Flujo simple

Comunicación, personas y confianza
Lecciones aprendidas
Flujo simple

Comunicación, personas y confianza
Diagrama de flujo
Historias de
usuario
Profesionalidad
Lecciones aprendidas
Flujo simple

Comunicación, personas y confianza

Testing y automatización
Lecciones aprendidas
Flujo simple

Comunicación, personas y confianza

Testing y automatización
Tests Scripts Hooks
Lecciones aprendidas
Flujo simple

Comunicación, personas y confianza

Testing y automatización

Deploy / Rollback
Reflexiones
Para pensar
Reflexiones
• ¿Hay confianza en el equipo?: tests, proponer cambios,
historias de usuario,…
Reflexiones
• ¿Hay confianza en el equipo?: tests, proponer cambios,
desplegar,…

• ¿Hay code reviews?¿pair programming?¿Las code reviews
se encolan?¿code review a alguien sentado a 2 sillas de
distancia?
Reflexiones
• ¿Hay confianza en el equipo?: tests, proponer cambios,
desplegar,…

• ¿Hay code reviews?¿pair programming?¿Las code reviews
se encolan?¿code review a alguien sentado a 2 sillas de
distancia?

• ¿Hay competiciones por no ser el último en hacer merge y
así tener pocos conflictos?
Referencias
• http://www.javacodegeeks.com/2015/11/git-branching 

• https://gist.github.com/jbenet/ee6c9ac48068889b0912

• http://dymitruk.com/blog/2012/02/05/branch-per-feature/

• http://www.nomachetejuggling.com/2017/04/09/a-different-branching-
strategy

• https://nvie.com/posts/a-successful-git-branching-model/

• https://trunkbaseddevelopment.com/

• https://about.gitlab.com/2016/07/27/the-11-rules-of-gitlab-flow/

• https://martinfowler.com/bliki/BranchByAbstraction.html
Gracias
Jesús López de la Cruz
jesuslc.com
Twitter: @jeslopcru
Email: jeslopcru@gmail.com
Git y personas: trabajar en equipo con git

Más contenido relacionado

La actualidad más candente

DevOps Lifecycle | Edureka
DevOps Lifecycle | EdurekaDevOps Lifecycle | Edureka
DevOps Lifecycle | EdurekaEdureka!
 
Kubernetes CRI containerd integration by Lantao Liu (Google)
Kubernetes CRI containerd integration by Lantao Liu (Google)Kubernetes CRI containerd integration by Lantao Liu (Google)
Kubernetes CRI containerd integration by Lantao Liu (Google)Docker, Inc.
 
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...Akihiro Suda
 
Introduction to Nexus Repository Manager.pdf
Introduction to Nexus Repository Manager.pdfIntroduction to Nexus Repository Manager.pdf
Introduction to Nexus Repository Manager.pdfKnoldus Inc.
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsLee Hanxue
 
k8s practice 2023.pptx
k8s practice 2023.pptxk8s practice 2023.pptx
k8s practice 2023.pptxwonyong hwang
 
NGINX ADC: Basics and Best Practices – EMEA
NGINX ADC: Basics and Best Practices – EMEANGINX ADC: Basics and Best Practices – EMEA
NGINX ADC: Basics and Best Practices – EMEANGINX, Inc.
 
Version control
Version controlVersion control
Version controlvisual28
 
Instalacion y uso basico de Kubernetes.
Instalacion y uso basico de Kubernetes.Instalacion y uso basico de Kubernetes.
Instalacion y uso basico de Kubernetes.Moisés Elías Araya
 
Docker networking Tutorial 101
Docker networking Tutorial 101Docker networking Tutorial 101
Docker networking Tutorial 101LorisPack Project
 
01 - Introduction to Version Control
01 - Introduction to Version Control01 - Introduction to Version Control
01 - Introduction to Version ControlSergii Shmarkatiuk
 
Platform Engineering
Platform EngineeringPlatform Engineering
Platform EngineeringOpsta
 
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...Edureka!
 
DoK Talks #91- Leveraging Druid Operator to manage Apache Druid on Kubernetes
DoK Talks #91- Leveraging Druid Operator to manage Apache Druid on KubernetesDoK Talks #91- Leveraging Druid Operator to manage Apache Druid on Kubernetes
DoK Talks #91- Leveraging Druid Operator to manage Apache Druid on KubernetesDoKC
 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at FrosconKris Buytaert
 

La actualidad más candente (20)

DevOps Lifecycle | Edureka
DevOps Lifecycle | EdurekaDevOps Lifecycle | Edureka
DevOps Lifecycle | Edureka
 
Kubernetes CRI containerd integration by Lantao Liu (Google)
Kubernetes CRI containerd integration by Lantao Liu (Google)Kubernetes CRI containerd integration by Lantao Liu (Google)
Kubernetes CRI containerd integration by Lantao Liu (Google)
 
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
[Paris Container Day 2021] nerdctl: yet another Docker & Docker Compose imple...
 
Docker 101
Docker 101Docker 101
Docker 101
 
Introduction to Nexus Repository Manager.pdf
Introduction to Nexus Repository Manager.pdfIntroduction to Nexus Repository Manager.pdf
Introduction to Nexus Repository Manager.pdf
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
 
k8s practice 2023.pptx
k8s practice 2023.pptxk8s practice 2023.pptx
k8s practice 2023.pptx
 
NGINX ADC: Basics and Best Practices – EMEA
NGINX ADC: Basics and Best Practices – EMEANGINX ADC: Basics and Best Practices – EMEA
NGINX ADC: Basics and Best Practices – EMEA
 
Version control
Version controlVersion control
Version control
 
Instalacion y uso basico de Kubernetes.
Instalacion y uso basico de Kubernetes.Instalacion y uso basico de Kubernetes.
Instalacion y uso basico de Kubernetes.
 
Docker
DockerDocker
Docker
 
Kubernetes security
Kubernetes securityKubernetes security
Kubernetes security
 
Docker networking Tutorial 101
Docker networking Tutorial 101Docker networking Tutorial 101
Docker networking Tutorial 101
 
devops
devops devops
devops
 
01 - Introduction to Version Control
01 - Introduction to Version Control01 - Introduction to Version Control
01 - Introduction to Version Control
 
Platform Engineering
Platform EngineeringPlatform Engineering
Platform Engineering
 
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
 
Meetup 23 - 03 - Application Delivery on K8S with GitOps
Meetup 23 - 03 - Application Delivery on K8S with GitOpsMeetup 23 - 03 - Application Delivery on K8S with GitOps
Meetup 23 - 03 - Application Delivery on K8S with GitOps
 
DoK Talks #91- Leveraging Druid Operator to manage Apache Druid on Kubernetes
DoK Talks #91- Leveraging Druid Operator to manage Apache Druid on KubernetesDoK Talks #91- Leveraging Druid Operator to manage Apache Druid on Kubernetes
DoK Talks #91- Leveraging Druid Operator to manage Apache Druid on Kubernetes
 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at Froscon
 

Similar a Estrategias branching: trabajando con git y personas

Git with Scrum en español
Git with Scrum en españolGit with Scrum en español
Git with Scrum en españolRamón Glez
 
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADTodo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADDIEGOALBERTOENRIQUEZ4
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando GitHugo Gilmar Erazo
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantesnscoder_mad
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a GitManuel Ceron
 
Más allá de Git add/commit/push
Más allá de Git add/commit/pushMás allá de Git add/commit/push
Más allá de Git add/commit/pushAlexis Lopez
 
Introducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitIntroducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitDrPantera
 
Git with gifs
Git with gifsGit with gifs
Git with gifsbetabeers
 
Control de versiones con Git
Control de versiones con GitControl de versiones con Git
Control de versiones con GitAdolfo Fitoria
 
Git y Github basico.pptx
Git y Github basico.pptxGit y Github basico.pptx
Git y Github basico.pptxssuser36d4d3
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a gitKeopx
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque prácticoPatxi Gortázar
 

Similar a Estrategias branching: trabajando con git y personas (20)

Git y github
Git y githubGit y github
Git y github
 
Git with Scrum en español
Git with Scrum en españolGit with Scrum en español
Git with Scrum en español
 
Git y github básico
Git y github básicoGit y github básico
Git y github básico
 
Git res baz ec - final
Git   res baz ec - finalGit   res baz ec - final
Git res baz ec - final
 
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADTodo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
 
¿Que es git?
¿Que es git?¿Que es git?
¿Que es git?
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando Git
 
Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantes
 
Git git hub
Git git hubGit git hub
Git git hub
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Más allá de Git add/commit/push
Más allá de Git add/commit/pushMás allá de Git add/commit/push
Más allá de Git add/commit/push
 
Un modelo exitoso para git
Un modelo exitoso para gitUn modelo exitoso para git
Un modelo exitoso para git
 
Introducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitIntroducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y git
 
Git with gifs
Git with gifsGit with gifs
Git with gifs
 
Git Flow y GitOps
Git Flow y GitOpsGit Flow y GitOps
Git Flow y GitOps
 
Control de versiones con Git
Control de versiones con GitControl de versiones con Git
Control de versiones con Git
 
Git y Github basico.pptx
Git y Github basico.pptxGit y Github basico.pptx
Git y Github basico.pptx
 
Tallerintroducciongit
TallerintroducciongitTallerintroducciongit
Tallerintroducciongit
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 
Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
 

Último

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 

Último (12)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 

Estrategias branching: trabajando con git y personas