Actualizado el 4 de Septiembre del 2019 (Publicado el 16 de Julio del 2019)
1.350 visualizaciones desde el 16 de Julio del 2019
346,9 KB
24 paginas
Creado hace 11a (30/10/2013)
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
Taller de Git
Clase 2 - Branches y Workflows
Fernando López
LINTI
Facultad de Informática
Universidad Nacional de la Plata
30 de Octubre de 2013
Fernando López
Taller de Git
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
Indice
1 Repaso
Secciones de Git
Ciclo de vida
Status
2 Branches
Introducción
Conceptualmente
Comandos básicos
Branches y remotos
3 Workflows
Introducción
GitHub workflow
GitFlow
4 Licencia
Fernando López
Taller de Git
Links
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
• http://lihuen.linti.unlp.edu.ar/index.php?title=
Workflow_Git/SVN
• http://lihuen.linti.unlp.edu.ar/index.php?title=Git
Fernando López
Taller de Git
Secciones de Git
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
Fernando López
Taller de Git
workingdirectorystagingareagit directory(repository)checkout the projectstage filescommitLocal OperationsCiclo de vida de los estados de los archivos
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
git add → pasa de untracked o de modified a staged.
Fernando López
Taller de Git
modifiedFile Status Lifecyclestagedunmodifieduntrackedadd the fileremove the fileedit the filestage the filecommitCiclo de vida de los estados de los archivos
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
git unstage → pasa de staged a untracked o modified.
Fernando López
Taller de Git
modifiedFile Status Lifecyclestagedunmodifieduntrackedadd the fileremove the fileedit the filestage the filecommitCiclo de vida de los estados de los archivos
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
git commit → pasa de staged a unmodified.
Fernando López
Taller de Git
modifiedFile Status Lifecyclestagedunmodifieduntrackedadd the fileremove the fileedit the filestage the filecommitCiclo de vida de los estados de los archivos
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
Los archivos unmodified son los únicos correctamente
“commited”.
Fernando López
Taller de Git
modifiedFile Status Lifecyclestagedunmodifieduntrackedadd the fileremove the fileedit the filestage the filecommitCiclo de vida de los estados de los archivos
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
Recordar que git push solamente enviará al servidor las
versiones que estén “commited”.
Fernando López
Taller de Git
modifiedFile Status Lifecyclestagedunmodifieduntrackedadd the fileremove the fileedit the filestage the filecommitTaller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
Ejemplos de status
Local:
• Untracked files
• Changes not staged for commit
• Changes to be commited
Con remotos:
• Your branch is ahead of ‘origin/master’ by 1 commit.
→ push
• Your branch is behind ‘origin/master’ by 1 commit...
→ pull
• Your branch and ‘origin/master’ have diverged, and have
1 and 1 different commit(s) each, respectively. → pull
y después push
Fernando López
Taller de Git
Branches
o ramas
• En el proyecto octocats nuestro árbol tenía una sola
rama: master .
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
Fernando López
Taller de Git
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
Branches
Infierno de merges
• Técnicamente en octocat_viewer también hay un solo
branch: master .
• Pero hay distintas variantes del mismo:
• Todas esas variantes son distintas versiones de master
• Es díficil ver que cambio cada desarrollador y la historia
está llena de merges.
Fernando López
Taller de Git
Branches
ahora sí
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
• git branch <nombre> → Crear un branch.
• git checkout <nombre> → Cambia a un branch.
• git diff <nombre> → Diferencia entre el branch actual
y el indicado.
• git merge <nombre> → Incorpora los cambios del
branch indicado en el actual.
• Selección de revisión → muchos comandos reciben cómo
argumento un “tree-ish”.
• Tree-ish → branch, tag, hash de commit, etc...
Tree-ishes:
http://git-scm.com/book/en/Git-Tools-Revision-Selection
Fernando López
Taller de Git
Branches
remotos
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
• Para ver todos los branches:
git branch -a
• Para subir un branch a un remoto:
git push <remoto> <branch>
• Para borrar un branch localmente:
git branch -d <branch>
• Para borrar un branch en el servidor:
git branch <remoto> :<branch>
Para investigar:
• git push --tags
• git push --all
• git push --mirror
Fernando López
Taller de Git
Introducción
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
http://lihuen.info.unlp.edu.ar/index.php?title=Workflow_Git/SVN
• Metodologías de trabajo.
• Distintas variantes:
• GitHub workflow.
• Gitflow.
• ¿Otras?
• Conceptos comunes:
• master tiene que ser instalable.
• Dividir el trabajo en features.
• Un branch por cada feature.
• Hacer merge lo más pronto posible para evitar conflictos.
Fernando López
Taller de Git
GitHub workflow
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
• Simple.
• Feature branches.
• Commits y push a los feature branches todo el tiempo.
• Pull request para integrar con el proyecto.
• Quién acepta el pull request debe revisar el código.
• Ideal para productos con entrega continua.
• No es práctico sin testing automático ni peer review.
Fernando López
Taller de Git
GitFlow
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
• Ligeramente más complejo.
• Branch develop .
• En master solamente commits con tags.
• Feature branches.
• Integración con develop .
• Preparar release: release-1.0 (solo bugfixes).
• Versión liberada mergear release-1.0 en master y
crear el tag 1.0 .
• Ideal para productos orientados a release.
Fernando López
Taller de Git
GitFlow simplificado
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
Consideremos en lo que queda de la clase la siguiente variante
de GitFlow:
• Se modifica master solamente para crear un tag.
• Se desarrolla en los feature branches.
• Los feature branches se integran con develop
frecuentemente.
• develop se integra con master al estabilizarse.
Fernando López
Taller de Git
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comandos
básicos
Branches y
remotos
Workflows
Introducción
GitHub
workflow
GitFlow
Licencia
Mantener los branches actualizados
• Bajo cualquier workflow.
• Supongamos el siguiente caso:
+-+--+ (feature-nuevo-formato)
/
D F
+--+---+----+----+ (develop)
A
B
C
E
G
• Usar rebase:
c h e c k o u t
r e b a s e d e v e l o p
r e b a s e −−c o n t i n u e
g i t
g i t
g i t add a r c h i v o −c o n f l i c t o
g i t
f e a t u r e −formato−nuevo
• Entonces el grafo se transforma en:
+-+--+ (feature-nuevo-formato)
/ D' F'
+--+---+----+----+ (develop)
A
B
C
E
G
Fernando López
Taller de Git
Integrando cambios a develop
• Hacerlo periódicamente.
• develop no tiene que ser perfecto pero si funciona mejor.
• Dado el caso anterior:
+-+--+ (feature-nuevo-formato)
/
D' F'
-+----+ (develop)
E
G
c h e c k o u t d e v e l o p
g i t
g i t merge f e a t u r e −nuevo−formato
•• El grafo queda:
-+----+---+--+ (develop, feature-nuevo-formato)
E
D' F'
G
Taller de Git
Fernando
López
Repaso
Secciones de
Git
Ciclo de vida
Status
Branches
Introducción
Conceptualmente
Comentarios de: Taller de Git - Clase 2 - Branches y Workflows (0)
No hay comentarios