Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Agenda
Qu es Git? Pequea analoga Comandos bsicos Ejemplo prctico Resumen Flujo interno de Git Github / Bitbucket Recomendaciones
Qu es Git?
Sistema distribudo de control de versiones Software libre y de codigo abierto Cada clon es un repositorio completo Crear branch's y fusionarlos con un merge es cosa de 1 minuto Cada commit registrado es una revisin Creado por Linus Torvalds
Pequea analoga
Solo si no estas familiarizado con versionadores. Guardar cambios en Git, es como cuando jugabas partidas en algn juego, para luego retomarlas desde ese punto. Pero esto no quiere decir que se use como backup de cdigo, Git es mucho mas que eso.
Comandos bsicos
Clonar un repositorio $ git clone git@ip_del_server:nombre_repo.git Agregar un archivo $ git add archivo.txt Guardar el archivo $ git commit -a -m comentario Traer los cambios $ git pull origin nombre_rama
Comandos bsicos
Enviar cambios al servidor $ git push origin nombre_rama Cambiar de branch $ git checkout nombre_rama Ver en que branch estamos $ git branch Hacer merge $ git merge nombre_rama
Ejemplo prctico
Se requiere de una pc, y seguir paso a paso. Veremos temas como uso de: branch's, merge, commit, status, log, etc. Al final hay un resumen de cada punto tocado. Se mostrar como crear un repositorio central con git.
Ejemplo prctico
Crear carpeta vaca myproject, e iniciamos $ git init Crear archivo1.txt y archivo2.txt y agregarlos $ git add . Guardando la primera revisin $ git commit -m Iniciando proyecto Crear archivo3.txt y archivo4.txt, ver estado $ git status
Ejemplo prctico
Agregando los nuevos archivos $ git add archivo2.txt archivo3.txt Guardamos una nueva revisin $ git commit -m Segunda revisin Ver el historial detallado $ git log --stat Crear una nueva rama $ git checkout -b nueva_rama
Ejemplo prctico
Crear carpeta demo y dentro archivo5.txt, y agregarlos $ git add demo/ Guardar cambios $ git commit -m Tercera revisin Regresar a master $ git checkout master Fusionar con nueva_rama $ git merge nueva_rama
Ejemplo prctico
Salimos de la carpeta y creamos un repo $ git clone --bare myproject mirepo.git Clonamos otro proyecto a partir del repo $ git clone mirepo.git newproject Entramos en newproject, creamos archivo6.txt y lo agregamos $ git add archivo6.txt Guardamos los cambios $ git commit -m Agregado archivo6.txt
Ejemplo prctico
Nos aseguramos tener la ultima versin del repo $ git pull origin master Ahora enviaremos nuestros cambios al repo $ git push origin master Salimos de newproject y clonamos otro $ git clone mirepo.git miproyecto Nos fijamos el historial $ git log
Ejemplo prctico
Creamos una nueva rama $ git checkout -b nuevos_cambios Creamos archivo7.txt, lo agregamos y guardamos $ git add archivo7.txt $ git commit -m Agregando archivo7.txt
Regresamos a master y comparamos $ git checkout master $ git diff master nuevos_cambios
Ejemplo prctico
Hacemos merge y envamos los cambios $ git merge nuevos_cambios $ git push origin master
Eliminamos la rama que ya no nos sirve git branch -d nuevos_cambios Nos vamos newproject y traemos los nuevos cambios $ git pull origin master
Resumen
Primero se cre un repositorio git local myproject y se guardaron revisiones Luego se cre un branch llamado nueva_rama y se guardaron revisiones. Fusionamos los cambios del branch nueva_rama con master Creamos un repositorio central llamado mirepo.git a partir de myproject Clonamos mirepo.git con nombre newproject Hicimos cambios, guardamos y luego enviamos al repositorio central mirepo.git Clonamos otra vez de mirepo.git llamado miproyecto y nos fijamos el historial de revisiones. Creamos una nueva rama, hicimos cambios, comparamos y fusionamos, finalmente enviamos los cambios al repositorio mirepo.git Por ltimo fuimos a newproject a actualizar con pull
Github / Bitbucket
Github Trabaja con repositorios netamente de tipo git, tiene una versin de pago para repositorio privados.
Bitbucket A diferencia del anterior permite trabajar con repositorios privados y trabaja con mercurial y git.
Recomendaciones
Traer siempre la ltima versin con un pull, y correr los test's, para evitar conflictos de archivos e inconsistencia en el proyecto. Nunca dejar cambios sin guardar al termino del horario de trabajo. Realizar commit's con comentarios significativos, a fin de mantener el repositorio limpio y ordenado. Resolver todos los conflictos al hacer un merge antes de enviar los cambios con push Darle una repasada al libro Pro Git http://gitscm.com/book/es
Preguntas?