@GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow...

31

Transcript of @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow...

Page 1: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local
Page 2: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Page 3: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

Branching Model

@GlobalLogic_LA

Page 4: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

MotivosConceptosWorkflowCentralized WorkflowBranching WorkflowForking WorkflowMerging Requests--Practica

01020304050607 --0a

Temario

Page 5: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Motivos

Page 6: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Motivos

➢ Trabajo en equipo: Permitir trabajo distribuido en equipos potencialmente grandes.

➢ Disponibilidad de versiones: Capacidad de navegar el historial de cambios y recuperar cualquier versión.

➢ Historial de cambios: Trazabilidad, correlación y registro de cambios.

➢ Conexión con herramientas: Interoperabilidad con herramientas de gestión, calidad y métricas.

Page 7: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Conceptos

● Branch: línea de trabajo separada. incluye datos consistentes al motivo de la branch. cada cambio se agrupa en un commit cohesivo, que avanza el crecimiento del esquema de árbol.

Page 8: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Conceptos

● Tracking Branch: branch que sigue los cambios de otra branch. funciona como proxy permitiendo probar cambios sin impactar la branch original, o acceder a datos offline de manera local.

Page 9: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

❖ Local Branching: Los datos pueden ser versionados, brancheados, mergeados, taggeados y manipulados localmente, ofreciendo enormes ventajas al desarrollo.

❖ Workflows: soportar múltiples workflows adecuándose al estilo de trabajo y metodologías del equipo de desarrollo.

❖ GITHUB: Github revolucionó el desarrollo y es el nuevo estandard con casi 5M repos y 3M users.

@GlobalLogic_LA

Conceptos

Page 10: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Workflow

Page 11: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

WorkflowBranching se considera la piedra fundamental del desarrollo y junto con el merging son parte de la rutina diaria.

El workflow mantiene el avance de las features, bugs, hotfixes, releases, mientras se mantiene un entorno limpio y coherente tanto para los desarrolladores como para las herramientas, tales como CI, Unit Test, Static Analysis.

Page 12: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Branching Model Original

Branching model introducido por Vincent Driessen en el 2010.

- Objetivo es el trabajo distribuido.- Versiones en releases- Mantiene el historial mediante

mergeos sin fast-forward.

Page 13: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Centralized Workflow

Page 14: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Branching Workflow

Page 15: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

GitFlow Branching Workflow

Page 16: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Forking Workflow

Page 17: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Branch Workflow1. Pull from origin para actualizar la replica local

2. Branch a branch para generar la branch

3. Commit on branch trabajar sobre la branch, mantener

cohesión en los commits y un comentario útil.

4. Rebase frequently mantener actualizada la branch

5. Merge request al terminar

Page 18: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Branch Workflow5. Merge request

Page 19: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Merge Request Workflow

Page 20: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Workflow KPI

1. Short-lived branches

2. Minimize and simplify reverts

3. Match a release schedule

4. Workflow must be simple and enhance productivity

5. Allow for tools and human checkpoints

Page 21: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Protected Branch

Evita que los datos sean destruidos por descuido.Solo aceptan cambios de los owners del repositorio.Se pueden enviar commits por medio de merge requests.

Page 22: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

¿ Preguntas ?

ReferenciasGit: https://git-scm.com/Workflow: http://nvie.com/posts/a-successful-git-branching-model/Git Workflow: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflowGitFlow: http://nvie.com/posts/a-successful-git-branching-model/Git-Flow: https://github.com/petervanderdoes/gitflow-avhForking Workflow: https://www.atlassian.com/git/tutorials/comparing-workflows#forking-workflow

Page 23: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

PracticaThe more you practice, the master you get

@GlobalLogic_LA

Page 24: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Workflow de gitSu repositorio local consta de tres "árboles" mantenidos por git. el primero es su Directorio de trabajo (Working Dir) que contiene los archivos reales. El segundo es el índice (index) que actúa como un área de preparación y, finalmente, el HEAD que señala el último commit que ha realizado.

Page 25: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Crea un repositorioecho "# GIT_it_done" >> README.mdgit init

Add & Commitgit add README.mdgit commit -m "first commit"

Envío de cambiosgit remote add origin https://github.com/JonatanRaverta/GIT_it_done.gitgit push -u origin master

Page 26: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Desafío

● Crea un cuenta en github● Crea un repositorio que se llame práctica● Subi un archivo que se llame README.md que contenga el nombre del

curso ● No olvides poner un buen comentario en tu commit, los mas originales

recibirán premios

Page 27: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Checkout de un repositorio

echo "# GIT_it_done" >> README.mdgit clone https://github.com/JonatanRaverta/GIT_it_done.git

Page 28: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

BranchingLas ramas son utilizadas para desarrollar funcionalidades aisladas unas de otras. La rama master es la rama "por defecto" cuando creas un repositorio.

Crear una rama● git checkout -b feature_x

Vuelve a la rama principal● git checkout master

y borra la rama● git branch -d feature_x

Page 29: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Update & mergePara actualizar tu repositorio local al commit más nuevo● git pull

Para fusionar “merge” otra rama a tu rama activa (por ejemplo master)● git merge <branch>

en ambos casos git intentará fusionar automáticamente los cambios Y si no funciona? ● git add <filename>

Antes de hacer merge, puedes revisarlos ● git diff <source_branch> <target_branch>

Page 30: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

@GlobalLogic_LA

Reemplaza cambios localesEl extraño caso de hacer algo malReemplazar cambios locales● git checkout -- <filename>

Y… si todo sale mal

deshacer todos los cambios locales y commits● git fetch origin● git reset --hard origin/master

Page 31: @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow @GlobalLogic_LA Branch Workflow 1. Pull from origin para actualizar la replica local

¿Preguntas?

@GlobalLogic_LA

Ver streaming