Upload
mariano-kfuri
View
289
Download
0
Embed Size (px)
Citation preview
GITRepositorio Distribuido
Mariano Kfuri Agosto 2015
Agenda¿Qué es Git?Diferencia con SVN.Estados y áreas.Comandos básicos.Pull requestFlows.
¿Qué es Git?Sistema distribuido de control de
versiones.Operaciones son locales.Cada commits es un SNAPSHOT. El repositorio es un conjunto de
SNAPSHOTCada SNAPSHOT es un repositorio
completoTiene integridad de datos.
Cada SNAPSHOT se identifica con un checksum
Control de versión mediante 3 áreas.Working directoryStaging areaGit directory (repositorio)
Diferencias con SVNSistema Centralizado de control de
versiones.Cada commits guarda la diferencias
entre cada revisión.Permite editar archivos offline pero
todas las operaciones son onlineRiesgo de perder datos en caso de
falla del server.
Diferencias con SVN
SVN
GIT
Estados y ÁreasLos 3 estados:
CommittedModifiedStages
Las 3 áreas:Git directoryWorking directoryStaging area
Stash ÁreaPermite guardar los cambios realizados en working directory que uno no
quiere commitear.Se puede pensar como un “holding area”.Internamente es un branchCuando 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 nuevoCrea directorio .git que contiene toda la metadata del repositorio.
git cloneCopia un repositorio existente. La copia es completa.El repositorio copiado es un entorno completamente aislado del
originalDeja vinculado el repositorio local con el repositorio remoto “origin”
git configConfigura el repositorio tanto individual como global.
Comandos Básicos: Guardando...
git addAgrega los cambios desde el working directory a staging area.No modifica el repositorioSe debe llamar cada vez que se modifica un archivo
git commitCommits los cambios agregados al staging area.El snapshot pasa a git directory.
git commit --amendPermite alterar el último commit, tanto en comentarios como
en archivos del snapshot.
Comandos Básicos: Visualizando...
git statusVisualizar el estado del working directory y del staging area.No muestra información sobre git directory.
git logMuestra los snapshot commiteados dentro de git directory.Permite buscar y filtrar cambios.Sólo opera sobre git directory
Comandos Básicos: Revirtiendo...
git checkout3 funciones. Checkout archivos, commits o branchesCheckout 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 revertRevierte un snapshot determinado.No elimina el snapshot de git directory, sino que agrega otro con el
cambio generado.Es seguro.
git resetElimina todos los snapshot de git directory hasta el commit deseado
git cleanElimina los archivos no trackeados por git.
Comandos Básicos: Revirtiendo...
Revert vs Reset
Comandos Básicos: Colaborando...
git remotePermite crear, ver y borrar conexiones con otros repositorios
git fetchImporta los commits de un repositorio remoto al local.No realiza cambios sobre el repositorio local.
git pullActualiza y mergea los cambios del repositorio remoto con el
local.Internamente es como hacer git fetch & git merge,
git pushExporta los commits locales hacia el repositorio remoto.
Comandos básicos: Branching...
git branchPermite crear, ver y eliminar branch.
git checkoutPermite cambiar de un branch a otro.
git mergePermite importar los cambios realizados en un branch en otro.
Pull requestNo 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.
FlowCentralized WorkflowFeature Branch WorkflowGitflow 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 WorkflowDefine 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íaDocumentació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]