GIT
Repositorio Distribuido
Mariano Kfuri
Agosto 2015
Agenda
¿Qué es Git?
Diferencia con SVN.
Estados y áreas.
Comandos básicos.
Pull request
Flows.
¿Qué es Git?
Sistema distribuido de control de versiones.
Operaciones son locales.
Cada commits es un SNAPSHOT.
El repositorio es un conjunto de SNAPSHOT
Cada SNAPSHOT es un repositorio completo
Tiene integridad de datos.
Cada SNAPSHOT se identifica con un
checksum
Control de versión mediante 3 áreas.
Working directory
Staging area
Git directory (repositorio)
Diferencias con SVN
Sistema Centralizado de control de
versiones.
Cada commits guarda la diferencias entre
cada revisión.
Permite editar archivos offline pero todas
las operaciones son online
Riesgo de perder datos en caso de falla del
server.
Diferencias con SVN
SVN
GIT
Estados y Áreas
Los 3 estados:
Committed
Modified
Stages
Las 3 áreas:
Git directory
Working directory
Staging area
Stash Área
Permite guardar los cambios realizados en working directory que uno no quiere
commitear.
Se puede pensar como un “holding area”.
Internamente es un branch
Cuando los cambios son guardados en “stash área” el working directory vuelve a la
revisión HEAD.
Comandos:
git stash save name: Guarda los cambios.
git stash list: Lista los cambios.
git stash apply name: Aplica los cambios guardados.
git stash pop: Aplica los cambios y los remueve de “stash área”.
Comandos Básicos: Setting...
git init
Crea un repositorio nuevo
Crea directorio .git que contiene toda la metadata del repositorio.
git clone
Copia un repositorio existente. La copia es completa.
El repositorio copiado es un entorno completamente aislado del original
Deja vinculado el repositorio local con el repositorio remoto “origin”
git config
Configura el repositorio tanto individual como global.
Comandos Básicos: Guardando...
git add
Agrega los cambios desde el working directory a staging area.
No modifica el repositorio
Se debe llamar cada vez que se modifica un archivo
git commit
Commits los cambios agregados al staging area.
El snapshot pasa a git directory.
git commit --amend
Permite alterar el último commit, tanto en comentarios como en
archivos del snapshot.
Comandos Básicos: Visualizando...
git status
Visualizar el estado del working directory y del staging area.
No muestra información sobre git directory.
git log
Muestra los snapshot commiteados dentro de git directory.
Permite buscar y filtrar cambios.
Sólo opera sobre git directory
Comandos Básicos: Revirtiendo...
git checkout
3 funciones. Checkout archivos, commits o branches
Checkout archivos permite recuperar la versión de un archivo.
Checkout commits permite recuperar un snapshot completo.
Checkout branch permite cambiar de un branch a otro.
git revert
Revierte un snapshot determinado.
No elimina el snapshot de git directory, sino que agrega otro con el cambio
generado.
Es seguro.
git reset
Elimina todos los snapshot de git directory hasta el commit deseado
git clean
Elimina los archivos no trackeados por git.
Comandos Básicos: Revirtiendo...
Revert vs Reset
Comandos Básicos: Colaborando...
git remote
Permite crear, ver y borrar conexiones con otros repositorios
git fetch
Importa los commits de un repositorio remoto al local.
No realiza cambios sobre el repositorio local.
git pull
Actualiza y mergea los cambios del repositorio remoto con el local.
Internamente es como hacer git fetch & git merge,
git push
Exporta los commits locales hacia el repositorio remoto.
Comandos básicos: Branching...
git branch
Permite crear, ver y eliminar branch.
git checkout
Permite cambiar de un branch a otro.
git merge
Permite importar los cambios realizados en un branch en otro.
Pull request
No es una herramienta de Git, sino que depende de los
proveedores. Github lo soporta.
Mecanismo para informar al equipo que un feature está
completo y para ser mergeado.
Abre un canal de comunicación, revisión y discusión
sobre la implementación.
Permite retener un merge.
Flow
Centralized Workflow
Feature Branch Workflow
Gitflow Workflow
Forking Workflow
Flow: Centralized Workflow
Misma estructura que usar SVN
Cada desarrollador tiene su repositorio
local.
Ideal para migrar Bumex
Flow: Feature Branch Workflow
Extiende de centralized.
Por cada desarrollo nuevo, se crea
un branch.
Siguiente paso para Bumex
Flow: Gitflow Workflow
Define un modelo estricto de
branches.
Garantiza que la versión del master
sea siempre igual a producción.
Bumex debe tender a este modelo.
Adoptarlo en los nuevos proyectos
Flow: Forking Workflow
Cada equipo tiene un server-side
repository
Se necesita de un rol que realice los
merge desde team server-side
repository al central.
Da mayor seguridad
El equipo de Brasil podría trabajar
bajo este esquema
Preguntas
Bibliografía
Documentación oficial Git. [https://git-scm.com/doc]
Tutoriales de Atlassian. [https://www.atlassian.com/git/tutorials]
Vincent Driessen blog. [http://nvie.com/posts/a-successful-git-branching-model]
Github helps [https://help.github.com]
Git interactivo [https://try.github.io]
Github training [https://training.github.com/kit/courses/github-for-everyone.html]
Introducción a git

Introducción a git

  • 1.
  • 2.
    Agenda ¿Qué es Git? Diferenciacon SVN. Estados y áreas. Comandos básicos. Pull request Flows.
  • 3.
    ¿Qué es Git? Sistemadistribuido de control de versiones. Operaciones son locales. Cada commits es un SNAPSHOT. El repositorio es un conjunto de SNAPSHOT Cada SNAPSHOT es un repositorio completo Tiene integridad de datos. Cada SNAPSHOT se identifica con un checksum Control de versión mediante 3 áreas. Working directory Staging area Git directory (repositorio)
  • 4.
    Diferencias con SVN SistemaCentralizado de control de versiones. Cada commits guarda la diferencias entre cada revisión. Permite editar archivos offline pero todas las operaciones son online Riesgo de perder datos en caso de falla del server.
  • 5.
  • 6.
    Estados y Áreas Los3 estados: Committed Modified Stages Las 3 áreas: Git directory Working directory Staging area
  • 7.
    Stash Área Permite guardarlos cambios realizados en working directory que uno no quiere commitear. Se puede pensar como un “holding area”. Internamente es un branch Cuando los cambios son guardados en “stash área” el working directory vuelve a la revisión HEAD. Comandos: git stash save name: Guarda los cambios. git stash list: Lista los cambios. git stash apply name: Aplica los cambios guardados. git stash pop: Aplica los cambios y los remueve de “stash área”.
  • 8.
    Comandos Básicos: Setting... gitinit Crea un repositorio nuevo Crea directorio .git que contiene toda la metadata del repositorio. git clone Copia un repositorio existente. La copia es completa. El repositorio copiado es un entorno completamente aislado del original Deja vinculado el repositorio local con el repositorio remoto “origin” git config Configura el repositorio tanto individual como global.
  • 9.
    Comandos Básicos: Guardando... gitadd Agrega los cambios desde el working directory a staging area. No modifica el repositorio Se debe llamar cada vez que se modifica un archivo git commit Commits los cambios agregados al staging area. El snapshot pasa a git directory. git commit --amend Permite alterar el último commit, tanto en comentarios como en archivos del snapshot.
  • 10.
    Comandos Básicos: Visualizando... gitstatus Visualizar el estado del working directory y del staging area. No muestra información sobre git directory. git log Muestra los snapshot commiteados dentro de git directory. Permite buscar y filtrar cambios. Sólo opera sobre git directory
  • 11.
    Comandos Básicos: Revirtiendo... gitcheckout 3 funciones. Checkout archivos, commits o branches Checkout archivos permite recuperar la versión de un archivo. Checkout commits permite recuperar un snapshot completo. Checkout branch permite cambiar de un branch a otro. git revert Revierte un snapshot determinado. No elimina el snapshot de git directory, sino que agrega otro con el cambio generado. Es seguro. git reset Elimina todos los snapshot de git directory hasta el commit deseado git clean Elimina los archivos no trackeados por git.
  • 12.
  • 13.
    Comandos Básicos: Colaborando... gitremote Permite crear, ver y borrar conexiones con otros repositorios git fetch Importa los commits de un repositorio remoto al local. No realiza cambios sobre el repositorio local. git pull Actualiza y mergea los cambios del repositorio remoto con el local. Internamente es como hacer git fetch & git merge, git push Exporta los commits locales hacia el repositorio remoto.
  • 14.
    Comandos básicos: Branching... gitbranch Permite crear, ver y eliminar branch. git checkout Permite cambiar de un branch a otro. git merge Permite importar los cambios realizados en un branch en otro.
  • 15.
    Pull request No esuna herramienta de Git, sino que depende de los proveedores. Github lo soporta. Mecanismo para informar al equipo que un feature está completo y para ser mergeado. Abre un canal de comunicación, revisión y discusión sobre la implementación. Permite retener un merge.
  • 16.
    Flow Centralized Workflow Feature BranchWorkflow Gitflow Workflow Forking Workflow
  • 17.
    Flow: Centralized Workflow Mismaestructura que usar SVN Cada desarrollador tiene su repositorio local. Ideal para migrar Bumex
  • 18.
    Flow: Feature BranchWorkflow Extiende de centralized. Por cada desarrollo nuevo, se crea un branch. Siguiente paso para Bumex
  • 19.
    Flow: Gitflow Workflow Defineun modelo estricto de branches. Garantiza que la versión del master sea siempre igual a producción. Bumex debe tender a este modelo. Adoptarlo en los nuevos proyectos
  • 20.
    Flow: Forking Workflow Cadaequipo tiene un server-side repository Se necesita de un rol que realice los merge desde team server-side repository al central. Da mayor seguridad El equipo de Brasil podría trabajar bajo este esquema
  • 21.
  • 22.
    Bibliografía Documentación oficial Git.[https://git-scm.com/doc] Tutoriales de Atlassian. [https://www.atlassian.com/git/tutorials] Vincent Driessen blog. [http://nvie.com/posts/a-successful-git-branching-model] Github helps [https://help.github.com] Git interactivo [https://try.github.io] Github training [https://training.github.com/kit/courses/github-for-everyone.html]