@GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow...
Transcript of @GlobalLogic LA · 2018. 1. 8. · GitFlow Branching Workflow @GlobalLogic_LA Forking Workflow...
@GlobalLogic_LA
Branching Model
@GlobalLogic_LA
@GlobalLogic_LA
MotivosConceptosWorkflowCentralized WorkflowBranching WorkflowForking WorkflowMerging Requests--Practica
01020304050607 --0a
Temario
@GlobalLogic_LA
Motivos
@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.
@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.
@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.
❖ 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
@GlobalLogic_LA
Workflow
@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.
@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.
@GlobalLogic_LA
Centralized Workflow
@GlobalLogic_LA
Branching Workflow
@GlobalLogic_LA
GitFlow Branching Workflow
@GlobalLogic_LA
Forking Workflow
@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
@GlobalLogic_LA
Branch Workflow5. Merge request
@GlobalLogic_LA
Merge Request Workflow
@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
@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.
@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
PracticaThe more you practice, the master you get
@GlobalLogic_LA
@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.
@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
@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
@GlobalLogic_LA
Checkout de un repositorio
echo "# GIT_it_done" >> README.mdgit clone https://github.com/JonatanRaverta/GIT_it_done.git
@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
@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>
@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
¿Preguntas?
@GlobalLogic_LA
Ver streaming