SlideShare una empresa de Scribd logo
1 de 71
Git y GitHub
Resbaz – Ecuador 2016
EREN – Ecuadorian Research and Entrepreneurship Network
Ivan Sanchez Vera
Quien Soy!?
 Aun sigo descubriéndolo, pero se que:
 Mi nombre es Ivan Sanchez pero me dicen
Panchito.
 Fui estudiante de Ing. Sistemas en la UCSG
 Hice una maestría en Computación en la
Universidad de Melbourne (Australia)
 Publique con mi ídolo Rao Kotagiri (famoso
investigador de ML)
 Soy parte de EREN y quiero hacer un cambio!
 Creo en la ciencia y en el poder de Machine
Learning y la minería de Datos.
 Me gusta Viajar, programar y andar en metrovia
(mentira).
 https://www.linkedin.com/in/iasanchez/en
 Email: ivan@Computer.org
 Twitter: @1vand1ng0
EREN
 La red de Ecuatorianos en emprendimiento e
investigación
 Ecuadorian Research & Entrepreneurship Network
(EREN por sus siglas en Ingles).
 Nos gusta la ciencia, la innovación y el
emprendimiento.
 Formados por Ecuatorianos de muchas partes del país,
distribuidos alrededor del mundo.
 Hacemos eventos gratuitos para promover la
investigación, el emprendimiento, la innovación y las
redes de personas en estos temas.
 Somos una red abierta, todos son bienvenidos!
 Nos gusta la Pizza.
 Visiten nuestra pagina: http://www.erenetwork.org/
Temario
 Control de Versiones Automático
 Instalando GIT
 Crear un repositorio
 Rastreo de Cambios
 Explorando el historial
 Ignorando algunas cosas
 Remotos en GitHub
 Colaborando con GIT
 Conflictos
 Open Science
Control de Versiones Automático
Entender los beneficios de un Sistema Automatizado de Control de Versiones.
Visión General de como funciona GIT.
Que es un Sistema de Control de
Versiones (VCS)
 Es un software que rastrea y lleva un registro de los cambios en los archivos
agregados al mismo para este propósito.
 Este software nos permite llevar un control adecuado de las diferentes
versiones de los archivos.
 Permite combinar diferentes versiones
 Mantiene información acerca de cada versión.
 Version Control System, VCS por sus siglas en Ingles.
Que puedes almacenar en el un VCS?
 Código
 Documentos (paperes, libros)
 Pequeños Datasets
 Cualquier archivo que cambie a traves del tiempo.
En Resumen
 El Software de Control de Versiones como GIT, es como la libreta de notas de
laboratorios para los investigadores modernos.
GIT
 Es un VCS
 Muy popular hoy en día entre programadores e investigadores.
 Es un sistema descentralizado. (no necesita un servidor central para
funcionar).
 Funciona a Base de Repositorios.
Beneficios de GIT para la Investigación
 Hace la colaboración mas fácil
 Permite obtener mayor retroalimentación
 Hace mas transparente el proceso.
 Permite la Reproducción de proceso investigativo.
 Facilidad de manipular datos geográficos con Geojson.
 Facilidad para compartir modelos 3d en STL.
Repositorio (Repo)
 Un Repo es un conjunto de archivos cuya historia esta siendo rastreada por
GIT.
 El Repo engloba todo el histórico de los archivos desde que se inicio el
rastreo.
 El repo contiene cierta información general (metadata) acerca del proyecto.
Beneficios del Control de
Versionamiento y GIT
 Usar control de Versionamiento es mejor que enviar emails de ida y vuelta.
 Ningún commit (confirmación) se pierde.
 Hay un historial de cambios (puedes volver en el tiempo)
 Evita que tengamos conflictos de sobrescritura.
 Sabemos quien hizo que!
 Nos ayuda a recordar después.
 Auditable.
Control de Versiones
Documento Base + Cambios
Los cambios son guardados en secuencia.
Control de Versiones
Pensemos en el documento y los cambios como cosas separadas.
Se pueden crear varias versiones del mismo archivo.
Control de Versiones
Se necesitan resolver los conflictos en los archivos.
Multiples Versiones se pueden combinar en una sola.
Instalando GIT
Objetivos de Aprendizaje:
Configurar Git Para su primer uso
Entender las configuraciones globales
Instalación de GIT
 Para este Taller ResBaz, ya todas las maquinas contienen GIT Instalado para
ahorrar tiempo.
 Descargar la versión para su sistema operativo.
 Cada sistema tiene instrucciones diferentes para su instalación.
 Muchas Versiones de MacOs y Linux ya tienen GIT pre-instalado.
 En Windows GIT debe ser instalado desde 0. =(
 Descargar el ejecutable.
 Al Instalar, seleccionar GITBash (La línea de comandos recomendada).
Configuraciones Globales
 Para configurar el usuarion GIT en esta maquina.
 $ git config --global user.name “Ivan Sanchez"
 $ git config --global user.email “ivan@computer.org"
 $ git config --global color.ui "auto“
 Para ver la lista de configuraciones
 $ git config --list
Crear un Repositorio
Crear un Repositorio Local de GIT.
Inicializar Directorio
 Crear directorio
 mkdir resbaz
 Cambiarse al directorio recientemente creado
 cd resbaz
 Inicializar git en este directorio
 git init
Veamos que hay?
 $ ls
 Parece que no hay nada.
 Pero git crea carpetas ocultas .git, que contienen toda la info de nuestro
Repo.
 $ ls –a
 Si borramos .git -> KABOOM, perdimos todo el historial del proyecto.
 $ git status
 Nos muestra el estado de este Repositorio =)
Rastreo de Cambios
Objetivos de Aprendizaje:
Recorrer el ciclo de modificar-agregar-confirmar para uno y mas archivos.
Explicar donde la información es almacenada en cada etapa de ciclo de rastreo de GIT.
Cambios, cambios, cambios
 Creemos un archivo para rastrear los cambios
 $ vim resbaz_proyecto.txt
 Tipeamos un texto
 “Este proyecto investiga la dinámica de gatitos ninja peleando contra
godzilla.”
 Salimos de VI y Guardamos
 (presiona la tecla ESC y luego tipea :wq!)
Etapas
 Untracked
 Tracked
 Commited
Problema?
Y si creamos un directorio dentro de otro directorio que ya tiene git e
inicializamos un repo dentro de otro repo? Que opinan?
Primero Crear directorio base
 $ cd
 $ mkdir resbaz
 $ cd resbaz
Luego inicializar git y crear repo
 $ git init
 $ mkdir miniproyecto
 $ cd miniproyecto
 $ git init
Revisemos el archivo
 Para listar los archivos.
 $ ls
 Para imprimir el contenido del archivo en pantalla
 $ cat resbaz_proyecto.txt
 Ahora revisemos el estado de nuestro Repo
 $ git status
Solución
 Tan solo borrar la carpeta .git dentro del subrepo
 Porque era mala idea?
 La carpeta base ya estaba siendo rastreada, lo que implica que todas las
subcarpetas estaban siendo rastreadas también.
 Si queremos separar la historia de ambas carpetas, entonces no parecen
pertenecer al mismo proyecto. Tengamos carpetas separadas y podemos
rastrear ambas como 2 Repositorios separados.
Agreguemos el primer Archivo
 El archivo que creamos no esta rastreado aun
 Hay que agregarlo a git para que este lo rastree
 $ git add resbaz_proyecto.txt
 Volvamos a revisar el estado del Proyecto
 $ git status
 Ahora el archivo esta en Staging Area
Nuestro Primer Commit (Confirmacion)
 Realizamos la primera confirmación en nuestro respositorio
 Cada commit permite registrar la historia del repositorio
 Todo commit debe llevar un mensaje.
 $ git commit –m “Agregamos descripción de Investigacion”
 Commit crea una copia permanente del repositorio con un ID.
 Revisamos el estado del Repo
 $ git status
 Y todo esta bien o es espero!
Historial y Diferencias
 Revisamos el historial
 $ git log
 Para ver las diferencias entre diferentes versiones de un archivo:
 $ git diff
 Para ver las diferencias con respecto al commit anterior:
 $git diff --staged
 Porque Git nos hace agregar archivos uno a uno?
 Pues porque quizá no queremos confirmar todos los cambios de una sola vez.
Staging Area
 Es un área especial de GIT en la cual se rastrean los cambios agregados al
repositorio desde el ultimo commit.
 El Staging Area contiene el conjunto de cambios actual que aun no se han
confirmado.
 Para guardar todos los cambios a todos los archivos.
 $ git commit –a
 Aunque podemos dar commit a todos los archivos, es mejor hacerlo
individualmente por cada archivo para tener mas control y un REPO mas
limpio.
Staging Area
Staging Area
Test
 Cual de las siguientes opciones de comandos permiten guardar los cambios de
myfile.txt al repositorio de git actual?
Explorando el historial
Objetivos de Aprendizaje:
Identificar y usar IDs de commits
Comparar varias versiones de archivos rastreados
Restaurar versiones antiguas de archivos.
Commits Antiguos
 To refer to older commits:
 Current commit HEAD
 Previous commits HEAD~1, HEAD~2 …
 Veamos los cambios entre versiones anteriores de nuestro archivo:
 $ git diff HEAD~1 resbaz_proyecto.txt
Commits Antiguos
 Podemos ver los Ids de commits revisando el Log
 $ git diff f22b25e3233b4645dabd0d81e651fe074bd8e73b resbaz_proyecto.txt
Restaurar Versiones Antiguas
 Para restaurar versiones antiguas de un archivo.
 $ git checkout HEAD~1 resbaz_proyecto.txt
En Resumen, Así funciona GIT
Test
 Ponja, el investigador, ha hecho cambios a un código de Python
(data_cruncher.py) esta mañana y ahora su programa no corre. Luego de una
hora de intentos e insultos inútiles, Ponja decide usar la ultima versión
confirmada (ultimo commit). Cual de las siguientes opciones lograrían esto?
Ignorando algunas cosas
Objetivos de Aprendizaje:
Configurar git para ignorar archivos específicos.
Entender porque ignorar archivos puede resultar útil.
A veces queremos ignorar algunas cosas
 Archivos binarios
 Claves y configuraciones locales
 Esas fotos con tu novio/novia.
 ETC.
 Vamos a Crear unos archivos irrelevantes para ignorarlos:
 $ mkdir results
 $ touch a.dat b.dat c.dat results/a.out results/b.out
 Git status
Ignorar
 Ahora ignoremos los archivos .dat
 Primero hay que crear .gitignore en la raíz del proyecto
 $ nano .gitignore
 Dentro tipeamos:
 *.dat
 results/
 Esto le dice a git que ignore todos los archivos terminados en .dat y todo en el
directorio results.
 Git ignore también nos ayuda a que por accidente no agreguemos archivos
que no queremos confirmar en el repo.
 Revisemos lo ignorado:
 $ git status –-ignored
Remotos con GitHub
Objetivos de Aprendizaje:
Explicar que son los repositorios remotos y porque son útiles
Clonar un repositorio remoto
Poner cambios (Push) y halar cambios (Pull) hacia y desde el Repo remoto
Repos Remotos
 Sirven para compartir información y colaborar con otras personas.
 Son repos centralizados en un lugar de la web, sirven de copia central para
todos los colaboradores
 Iniciemos sesión en Github y Creemos un nuevo Repo remoto con el nombre
resbaz.
Github – Repos Remotos
Configurando el Repo Remoto
Github – Repos Remotos
 Nuestro Repo Local tiene todos nuestros cambios
 Pero nuestro repo en GitHub aun no tiene nada.
Conectar el Git local con el Remoto
 Necesitamos conectar ambos repos (Local y remoto)
 Para esto usamos el comando remote.
 En nuestro repo local ejecutamos
 $ git remote add origin https://github.com/ivansanchezvera/resbaz.git
 Revisamos que el comando haya funcionado:
 $ git remote -v
Enviar cambios al Remoto
 Para enviar cambios al remoto debemos hacer PUSH
 $ git push origin master
Obtener cambio del Remoto (Pull)
 Para traer cambios del remoto (PULL).
 $ git pull origin master
Colaborando
Objetivos de Aprendizaje:
Colaborar enviando (haciendo Push) al repositorio Remoto
Colaborando con Github
 Trabajemos en pares. Elijan una cuenta de github para centralizar el
proyecto.
 Primero, debemos dar permiso de acceso a la otra persona
 En github, abrimos nuestro repo y elegimos la pantalla “settings”. Luego la
opción collaborators y tipeamos el nombre de usuario o email del colaborador.
Clonar Repo
 Primero debemos salir del repo actual porque este es otro ejercicio.
 $ cd
 $ mkdir collaboration
 $ cd collaboration
 Ahora si clonamos el repositorio remoto de nuestro compañero:
 $ git clone https://github.com/zelfrontial/resbaz.git
 Clonar significa copiar a nuestro PC (local) el repositorio desde un remoto
(github), agregándolo como origen (origin).
Colaboremos… YA!
 Ahora el nuevo colaborador puede hacer cambios en su copia del repositorio y
mandarlas al Repo central (origin).
 $ cd resbaz
 $ vim resbaz_proyecto.txt
 Borramos algo y podemos poder otra cosa como: mejor investiguemos iguanas
zombies submarinas.
 Veamos el archivo a agregar
 $ cat resbaz_proyecto.txt
 Ahora agreguémoslo y hagamos commit
 $ git add resbaz_proyecto.txt
 $ git commit –m “Cambio del tema de Investigación a Iguanas”
Subiendo los cambios al git – Push y Pull
 Los cambios anteriores se hicieron en el repositorio local, pero aun no están
en el Repo remoto (origin) en Github.
 Usamos Push para enviar los cambios a GitHub.
 $ git push orgin master
 Ahora la persona que no hizo los cambios, puede bajarlos del servidor remoto
centralizado Github (origin) usando el comando Pull
 $ git pull origin master
Conflictos
Objetivos de Aprendizaje:
Explicar que son los conflictos y cundo pueden ocurrir.
Resolver conflictos resultantes de un Merge (combinación).
Conflictos
 Cuando la gente trabaja en paralelo, es probable que surjan conflictos. Esto
se da porque pueden estar editando el mismo archivo.
 Los VCS como GIT ayudan a resolver estos conflictos.
 Apliquemos la de tu ex (esposa/o) y generemos un conflicto de la nada
nosotros mismos!
 Agreguemos una línea a la copia del repo de un solo companero y hagamos
push a Github
 $ vim resbaz_proyecto.txt
 $ git add resbaz_proyecto.txt
 $ git commit –m “Creando conflicto”
 $ git push origin master
Mas conflictos, desatemos el Caos
 Ahora el otro compañero debe editar el Archivo, pero sin bajar la copia
actualizada de GIT… para crear …. Conflicto!
 $ vim resbaz_proyecto.txt
 Agregamos algo: Investiguemos mejor la inmortalidad del Cangrejo.
 $ git add resbaz_proyecto.txt
 $ git commit –m “Cambio de tema de investigación a inmortalidad del
Cangrejo”
 Ahora hacemos PUSH a github
 $ git push origin master
 Que #%@#$%@ paso?
 Git no permite hacer push al Repo Remoto porque hay conflictos sin resolver.
El Rechazo!
 Github rechaza los cambios porque no son consistentes con la versión que
tiene.
 Debemos resolver los conflictos antes de poder hacer PUSH a Github.
Resolviendo Conflictos
 Git intenta resolver los conflictos por nosotros (como muchas de nuestras
mamas).
 Sin embargo tu mama no te puede resolver toda la vida, tampoco GIT.
 Necesitamos resolver los conflictos!
 Primero Bajemos la ultima versión de Github.
 $ git pull origin master
 Git nos dira donde hay conflicto para que lo resolvamos
 $ cat resbaz_proyecto.txt
Entendiendo los conflictos
 Los cambios en HEAD aparecen con <<<<<<<<<<<<<<<<<<<<
 Head es nuestra versión actual en el local
 Los cambios son separados con =================
 Los cambios de la version que generaron conflicto se marcan con
>>>>>>>>>>>>>>
Resolviendo los Conflictos
 Editamos el archivo conservando los cambios que creemos necesarios.
 Borramos los marcadores <<<<<<<<<<, ============= y >>>>>>>>>
 Ahora agregamos y hacemos commit
 $ git add resbaz_proyecto.txt
 $ git status
 $ git commit –m “Conflicto resuelto”
 Hagamos PUSH a Github
 $ git push origin master
 Voilà!!!
0 Conflictos
 Ahora cuando el otro colaborador actualice desde Github, recibirá el REPO sin
conflictos, incluyendo todos los cambios hechos en el MERGE.
 Intentemos (el otro compañero debe jalar el repo desde Github):
 $ git pull origin master
Merge y conflictos en archivos binarios
 WARNING! Achtung! Peligro!
 Git no puede hacer merge automático, ni resolver conflictos en archivos
binarios (Word, autocad, etc).
Open Science
Objetivos de Aprendizaje:
Explicar como los VCS pueden ser usador como una libreta de Laboratorio
para trabajo computacional
Lo que sucede (a veces)
Compartir información puede ser lo ideal en ciencia, pero la realidad es compleja.
Usualmente
 Científico recolecta datos y la almacena en su equipo (con respaldos cada cierto
tiempo).
 Científico escribe algo de código para analizar los datos.
 Científico recolecta resultados y escribe paper. (a veces envía los datos al journal
pero no envía el código).
 Pasan 3 eternidades
 Journal envía las revisiones del paper con correcciones
 Científico cambia algunas cosas en el código y paper para poder publicar.
 Científico reenvía paper
 Paper es publicado pero el código no esta disponible para reproducir los
resultados.
Ahora la ciencia se trabaja así
 Los datos que el científico recolecta se almacenan en un repositorio abierto
como figshare, zenodo o Dryad.
 Científico crea un nuevo repositorio en GitHub para mantener un orden en su
proyecto
 Científico Hace el análisis y envía el código (y quizá algo de output) al Repo.
 Colegas pueden revisar su código, los datos y su paper en el repo.
 Científico pre publica una versión de su paper en arXiv para que otros
científicos en el área den retroalimentación
 Científico corrige muchas cosas antes de enviar al Journal.
 Otros científicos pueden fácilmente tomar como referencia su trabajo para
otras publicaciones.
 Mas ciencia!
Temas adicionales
 Branching
 Rebasing
 Forking
 Pull requests
 Issues en Github (para corregir bugs y otros requerimientos).
 Marcado para archivos .MD
 Licenciamiento
RESBAZ Ecuador GYE 2016
GitHub
EREN: erenetwork.org
Ivan Sanchez
ivan@Computer.org
@1vand1ng0
Material adaptado de Software Carpentry
http://swcarpentry.github.io/git-novice/

Más contenido relacionado

Destacado

Ciclo De Vida
Ciclo De VidaCiclo De Vida
Ciclo De VidaJgperez
 
Metodología para la elicitación de requisitos de sistemas software
Metodología para la elicitación de requisitos de sistemas softwareMetodología para la elicitación de requisitos de sistemas software
Metodología para la elicitación de requisitos de sistemas softwareJaime López Rivera
 
Planeacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de softwarePlaneacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de softwareTtomas Carvajal
 
Planificación de proyectos de software
Planificación de proyectos de softwarePlanificación de proyectos de software
Planificación de proyectos de softwarehrubenleiva21
 
Proyecto de software
Proyecto de softwareProyecto de software
Proyecto de softwaremonik1002
 
Implementacion de software
Implementacion de softwareImplementacion de software
Implementacion de softwareTom Rodriguez
 
Planificacion De Proyectos De Software
Planificacion De Proyectos De SoftwarePlanificacion De Proyectos De Software
Planificacion De Proyectos De SoftwareIván Sanchez Vera
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software'Jorge Martinez
 

Destacado (9)

Ciclo De Vida
Ciclo De VidaCiclo De Vida
Ciclo De Vida
 
Metodología para la elicitación de requisitos de sistemas software
Metodología para la elicitación de requisitos de sistemas softwareMetodología para la elicitación de requisitos de sistemas software
Metodología para la elicitación de requisitos de sistemas software
 
Planeacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de softwarePlaneacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de software
 
Planificación de proyectos de software
Planificación de proyectos de softwarePlanificación de proyectos de software
Planificación de proyectos de software
 
Proyecto de software
Proyecto de softwareProyecto de software
Proyecto de software
 
Implementacion de software
Implementacion de softwareImplementacion de software
Implementacion de software
 
Diseño de Software
Diseño de SoftwareDiseño de Software
Diseño de Software
 
Planificacion De Proyectos De Software
Planificacion De Proyectos De SoftwarePlanificacion De Proyectos De Software
Planificacion De Proyectos De Software
 
Tecnicas de ingenieria de software
Tecnicas de ingenieria de softwareTecnicas de ingenieria de software
Tecnicas de ingenieria de software
 

Similar a Git res baz ec - final

Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantesnscoder_mad
 
GIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdfGIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdfMartinBonuccelli
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a gitKeopx
 
Primeros pasos con git
Primeros pasos con gitPrimeros pasos con git
Primeros pasos con gitJuan Vladimir
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GITKeopx
 
Git para no gitters
Git para no gittersGit para no gitters
Git para no gittersRojomorgan
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando GitHugo Gilmar Erazo
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasJosé Moreno
 
GITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionadosGITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionadosyuri460292
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a GitManuel Ceron
 
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente? LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente? emateucr
 
Induccion0_GitLab.pptx
Induccion0_GitLab.pptxInduccion0_GitLab.pptx
Induccion0_GitLab.pptxssuser3ff40a
 
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADTodo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADDIEGOALBERTOENRIQUEZ4
 
Introducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitIntroducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitDrPantera
 

Similar a Git res baz ec - final (20)

Git para-principiantes
Git para-principiantesGit para-principiantes
Git para-principiantes
 
Control de versiones
Control de versionesControl de versiones
Control de versiones
 
GIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdfGIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdf
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 
Primeros pasos con git
Primeros pasos con gitPrimeros pasos con git
Primeros pasos con git
 
Tallerintroducciongit
TallerintroducciongitTallerintroducciongit
Tallerintroducciongit
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GIT
 
Introducción a git y git hub
Introducción a git y git hubIntroducción a git y git hub
Introducción a git y git hub
 
Git para no gitters
Git para no gittersGit para no gitters
Git para no gitters
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando Git
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones Seguras
 
GITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionadosGITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionados
 
Git: control de versiones
Git: control de versionesGit: control de versiones
Git: control de versiones
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Git - Gitlab
Git - GitlabGit - Gitlab
Git - Gitlab
 
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente? LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
 
Induccion0_GitLab.pptx
Induccion0_GitLab.pptxInduccion0_GitLab.pptx
Induccion0_GitLab.pptx
 
Git y github básico
Git y github básicoGit y github básico
Git y github básico
 
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADTodo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
 
Introducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitIntroducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y git
 

Más de Iván Sanchez Vera

Intro Inteligencia Artificial (AI)
Intro Inteligencia Artificial (AI)Intro Inteligencia Artificial (AI)
Intro Inteligencia Artificial (AI)Iván Sanchez Vera
 
Trajectory clustering - Traclus Algorithm
Trajectory clustering - Traclus AlgorithmTrajectory clustering - Traclus Algorithm
Trajectory clustering - Traclus AlgorithmIván Sanchez Vera
 
Social databases - A brief overview
Social databases - A brief overviewSocial databases - A brief overview
Social databases - A brief overviewIván Sanchez Vera
 
(Draft) Nuevos caminos de innovación en tecnología
(Draft) Nuevos caminos de innovación en tecnología(Draft) Nuevos caminos de innovación en tecnología
(Draft) Nuevos caminos de innovación en tecnologíaIván Sanchez Vera
 
Pin payments presentation final (4)
Pin payments presentation final (4)Pin payments presentation final (4)
Pin payments presentation final (4)Iván Sanchez Vera
 
Impacto de las Actividades Economicas sobre las Funciones de la Biosfera.pptx
Impacto de las Actividades Economicas sobre las Funciones de la Biosfera.pptxImpacto de las Actividades Economicas sobre las Funciones de la Biosfera.pptx
Impacto de las Actividades Economicas sobre las Funciones de la Biosfera.pptxIván Sanchez Vera
 
Economia de Recursos Naturales y Economia Tradicional
Economia de Recursos Naturales y Economia TradicionalEconomia de Recursos Naturales y Economia Tradicional
Economia de Recursos Naturales y Economia TradicionalIván Sanchez Vera
 
Nociones básica de ecología y recursos naturales.
Nociones básica de ecología y recursos naturales. Nociones básica de ecología y recursos naturales.
Nociones básica de ecología y recursos naturales. Iván Sanchez Vera
 
Economia de Recursos Naturales
Economia de Recursos NaturalesEconomia de Recursos Naturales
Economia de Recursos NaturalesIván Sanchez Vera
 
Proceso de Adquisiciones de Tecnologia
Proceso de Adquisiciones de TecnologiaProceso de Adquisiciones de Tecnologia
Proceso de Adquisiciones de TecnologiaIván Sanchez Vera
 
Proceso de Compra de Tecnologia
Proceso de Compra de TecnologiaProceso de Compra de Tecnologia
Proceso de Compra de TecnologiaIván Sanchez Vera
 

Más de Iván Sanchez Vera (20)

Intro a Metodos Numericos
Intro a Metodos NumericosIntro a Metodos Numericos
Intro a Metodos Numericos
 
Intro Inteligencia Artificial (AI)
Intro Inteligencia Artificial (AI)Intro Inteligencia Artificial (AI)
Intro Inteligencia Artificial (AI)
 
Trajectory clustering - Traclus Algorithm
Trajectory clustering - Traclus AlgorithmTrajectory clustering - Traclus Algorithm
Trajectory clustering - Traclus Algorithm
 
Proofs on cryptocurrencies
Proofs on cryptocurrenciesProofs on cryptocurrencies
Proofs on cryptocurrencies
 
Social databases - A brief overview
Social databases - A brief overviewSocial databases - A brief overview
Social databases - A brief overview
 
(Draft) Nuevos caminos de innovación en tecnología
(Draft) Nuevos caminos de innovación en tecnología(Draft) Nuevos caminos de innovación en tecnología
(Draft) Nuevos caminos de innovación en tecnología
 
Pin payments presentation final (4)
Pin payments presentation final (4)Pin payments presentation final (4)
Pin payments presentation final (4)
 
Impacto de las Actividades Economicas sobre las Funciones de la Biosfera.pptx
Impacto de las Actividades Economicas sobre las Funciones de la Biosfera.pptxImpacto de las Actividades Economicas sobre las Funciones de la Biosfera.pptx
Impacto de las Actividades Economicas sobre las Funciones de la Biosfera.pptx
 
Funciones Economicas Biosfera
Funciones Economicas BiosferaFunciones Economicas Biosfera
Funciones Economicas Biosfera
 
Economia de Recursos Naturales y Economia Tradicional
Economia de Recursos Naturales y Economia TradicionalEconomia de Recursos Naturales y Economia Tradicional
Economia de Recursos Naturales y Economia Tradicional
 
Nociones básica de ecología y recursos naturales.
Nociones básica de ecología y recursos naturales. Nociones básica de ecología y recursos naturales.
Nociones básica de ecología y recursos naturales.
 
Economia de Recursos Naturales
Economia de Recursos NaturalesEconomia de Recursos Naturales
Economia de Recursos Naturales
 
Tolerencia de fallas
Tolerencia de fallasTolerencia de fallas
Tolerencia de fallas
 
Ingenieria software
Ingenieria softwareIngenieria software
Ingenieria software
 
Pruebas de Software
Pruebas de SoftwarePruebas de Software
Pruebas de Software
 
Proceso de Adquisiciones de Tecnologia
Proceso de Adquisiciones de TecnologiaProceso de Adquisiciones de Tecnologia
Proceso de Adquisiciones de Tecnologia
 
Proceso de Compra de Tecnologia
Proceso de Compra de TecnologiaProceso de Compra de Tecnologia
Proceso de Compra de Tecnologia
 
Pasos para elaborar RFP
Pasos para elaborar  RFPPasos para elaborar  RFP
Pasos para elaborar RFP
 
Redes ieee 802_11n
Redes ieee 802_11nRedes ieee 802_11n
Redes ieee 802_11n
 
Formacion de Empresas
Formacion de EmpresasFormacion de Empresas
Formacion de Empresas
 

Último

Codigo rojo manejo y tratamient 2022.pptx
Codigo rojo manejo y tratamient 2022.pptxCodigo rojo manejo y tratamient 2022.pptx
Codigo rojo manejo y tratamient 2022.pptxSergioSanto4
 
Harvey, David. - Paris capital de la modernidad [2008].pdf
Harvey, David. - Paris capital de la modernidad [2008].pdfHarvey, David. - Paris capital de la modernidad [2008].pdf
Harvey, David. - Paris capital de la modernidad [2008].pdffrank0071
 
4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf
4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf
4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdfvguadarramaespinal
 
Informe Aemet Tornados Sabado Santo Marchena Paradas
Informe Aemet Tornados Sabado Santo Marchena ParadasInforme Aemet Tornados Sabado Santo Marchena Paradas
Informe Aemet Tornados Sabado Santo Marchena ParadasRevista Saber Mas
 
Generalidades de Anatomía - Ayudantía de Cátedra AHCG .pdf
Generalidades de Anatomía - Ayudantía de Cátedra AHCG .pdfGeneralidades de Anatomía - Ayudantía de Cátedra AHCG .pdf
Generalidades de Anatomía - Ayudantía de Cátedra AHCG .pdfdennissotoleyva
 
Perfiles NEUROPSI Atención y Memoria 6 a 85 Años (AyM).pdf
Perfiles NEUROPSI Atención y Memoria 6 a 85 Años (AyM).pdfPerfiles NEUROPSI Atención y Memoria 6 a 85 Años (AyM).pdf
Perfiles NEUROPSI Atención y Memoria 6 a 85 Años (AyM).pdfPieroalex1
 
TEST BETA III: APLICACIÓN E INTERPRETACIÓN.pptx
TEST BETA III: APLICACIÓN E INTERPRETACIÓN.pptxTEST BETA III: APLICACIÓN E INTERPRETACIÓN.pptx
TEST BETA III: APLICACIÓN E INTERPRETACIÓN.pptxXavierCrdenasGarca
 
Piccato, P. - Historia mínima de la violencia en México [2022].pdf
Piccato, P. - Historia mínima de la violencia en México [2022].pdfPiccato, P. - Historia mínima de la violencia en México [2022].pdf
Piccato, P. - Historia mínima de la violencia en México [2022].pdffrank0071
 
Woods, Thomas E. - Cómo la Iglesia construyó la Civilización Occidental [ocr]...
Woods, Thomas E. - Cómo la Iglesia construyó la Civilización Occidental [ocr]...Woods, Thomas E. - Cómo la Iglesia construyó la Civilización Occidental [ocr]...
Woods, Thomas E. - Cómo la Iglesia construyó la Civilización Occidental [ocr]...frank0071
 
RX DE TORAX normal jornadas .............
RX DE TORAX normal jornadas .............RX DE TORAX normal jornadas .............
RX DE TORAX normal jornadas .............claudiasilvera25
 
Diálisis peritoneal en los pacientes delicados de salud
Diálisis peritoneal en los pacientes delicados de saludDiálisis peritoneal en los pacientes delicados de salud
Diálisis peritoneal en los pacientes delicados de saludFernandoACamachoCher
 
SEGUNDAS VANGUARDIAS ARTÍSTICAS DEL SIGLO XX.pdf
SEGUNDAS VANGUARDIAS ARTÍSTICAS DEL SIGLO XX.pdfSEGUNDAS VANGUARDIAS ARTÍSTICAS DEL SIGLO XX.pdf
SEGUNDAS VANGUARDIAS ARTÍSTICAS DEL SIGLO XX.pdfPC0121
 
cgm medicina interna clinica delgado.pdf
cgm medicina interna clinica delgado.pdfcgm medicina interna clinica delgado.pdf
cgm medicina interna clinica delgado.pdfSergioSanto4
 
Viaje al centro de la Ciencia 6 DOC_WEB.pdf
Viaje al centro de la Ciencia 6 DOC_WEB.pdfViaje al centro de la Ciencia 6 DOC_WEB.pdf
Viaje al centro de la Ciencia 6 DOC_WEB.pdfssuser576aeb
 
Matemáticas Aplicadas usando Python
Matemáticas Aplicadas   usando    PythonMatemáticas Aplicadas   usando    Python
Matemáticas Aplicadas usando PythonErnesto Crespo
 
Patologias del quiasma optico .pptxxxxxx
Patologias del quiasma optico .pptxxxxxxPatologias del quiasma optico .pptxxxxxx
Patologias del quiasma optico .pptxxxxxxFranciscaValentinaGa1
 
Fresas y sistemas de pulido en odontología
Fresas y sistemas de pulido en odontologíaFresas y sistemas de pulido en odontología
Fresas y sistemas de pulido en odontologíaDanyAguayo1
 
inspeccion del pescado.pdfMedicinaveteri
inspeccion del pescado.pdfMedicinaveteriinspeccion del pescado.pdfMedicinaveteri
inspeccion del pescado.pdfMedicinaveteriManrriquezLujanYasbe
 
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...frank0071
 
DESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdf
DESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdfDESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdf
DESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdfssuser6a4120
 

Último (20)

Codigo rojo manejo y tratamient 2022.pptx
Codigo rojo manejo y tratamient 2022.pptxCodigo rojo manejo y tratamient 2022.pptx
Codigo rojo manejo y tratamient 2022.pptx
 
Harvey, David. - Paris capital de la modernidad [2008].pdf
Harvey, David. - Paris capital de la modernidad [2008].pdfHarvey, David. - Paris capital de la modernidad [2008].pdf
Harvey, David. - Paris capital de la modernidad [2008].pdf
 
4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf
4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf
4.-ENLACE-QUÍMICO.-LIBRO-PRINCIPAL (1).pdf
 
Informe Aemet Tornados Sabado Santo Marchena Paradas
Informe Aemet Tornados Sabado Santo Marchena ParadasInforme Aemet Tornados Sabado Santo Marchena Paradas
Informe Aemet Tornados Sabado Santo Marchena Paradas
 
Generalidades de Anatomía - Ayudantía de Cátedra AHCG .pdf
Generalidades de Anatomía - Ayudantía de Cátedra AHCG .pdfGeneralidades de Anatomía - Ayudantía de Cátedra AHCG .pdf
Generalidades de Anatomía - Ayudantía de Cátedra AHCG .pdf
 
Perfiles NEUROPSI Atención y Memoria 6 a 85 Años (AyM).pdf
Perfiles NEUROPSI Atención y Memoria 6 a 85 Años (AyM).pdfPerfiles NEUROPSI Atención y Memoria 6 a 85 Años (AyM).pdf
Perfiles NEUROPSI Atención y Memoria 6 a 85 Años (AyM).pdf
 
TEST BETA III: APLICACIÓN E INTERPRETACIÓN.pptx
TEST BETA III: APLICACIÓN E INTERPRETACIÓN.pptxTEST BETA III: APLICACIÓN E INTERPRETACIÓN.pptx
TEST BETA III: APLICACIÓN E INTERPRETACIÓN.pptx
 
Piccato, P. - Historia mínima de la violencia en México [2022].pdf
Piccato, P. - Historia mínima de la violencia en México [2022].pdfPiccato, P. - Historia mínima de la violencia en México [2022].pdf
Piccato, P. - Historia mínima de la violencia en México [2022].pdf
 
Woods, Thomas E. - Cómo la Iglesia construyó la Civilización Occidental [ocr]...
Woods, Thomas E. - Cómo la Iglesia construyó la Civilización Occidental [ocr]...Woods, Thomas E. - Cómo la Iglesia construyó la Civilización Occidental [ocr]...
Woods, Thomas E. - Cómo la Iglesia construyó la Civilización Occidental [ocr]...
 
RX DE TORAX normal jornadas .............
RX DE TORAX normal jornadas .............RX DE TORAX normal jornadas .............
RX DE TORAX normal jornadas .............
 
Diálisis peritoneal en los pacientes delicados de salud
Diálisis peritoneal en los pacientes delicados de saludDiálisis peritoneal en los pacientes delicados de salud
Diálisis peritoneal en los pacientes delicados de salud
 
SEGUNDAS VANGUARDIAS ARTÍSTICAS DEL SIGLO XX.pdf
SEGUNDAS VANGUARDIAS ARTÍSTICAS DEL SIGLO XX.pdfSEGUNDAS VANGUARDIAS ARTÍSTICAS DEL SIGLO XX.pdf
SEGUNDAS VANGUARDIAS ARTÍSTICAS DEL SIGLO XX.pdf
 
cgm medicina interna clinica delgado.pdf
cgm medicina interna clinica delgado.pdfcgm medicina interna clinica delgado.pdf
cgm medicina interna clinica delgado.pdf
 
Viaje al centro de la Ciencia 6 DOC_WEB.pdf
Viaje al centro de la Ciencia 6 DOC_WEB.pdfViaje al centro de la Ciencia 6 DOC_WEB.pdf
Viaje al centro de la Ciencia 6 DOC_WEB.pdf
 
Matemáticas Aplicadas usando Python
Matemáticas Aplicadas   usando    PythonMatemáticas Aplicadas   usando    Python
Matemáticas Aplicadas usando Python
 
Patologias del quiasma optico .pptxxxxxx
Patologias del quiasma optico .pptxxxxxxPatologias del quiasma optico .pptxxxxxx
Patologias del quiasma optico .pptxxxxxx
 
Fresas y sistemas de pulido en odontología
Fresas y sistemas de pulido en odontologíaFresas y sistemas de pulido en odontología
Fresas y sistemas de pulido en odontología
 
inspeccion del pescado.pdfMedicinaveteri
inspeccion del pescado.pdfMedicinaveteriinspeccion del pescado.pdfMedicinaveteri
inspeccion del pescado.pdfMedicinaveteri
 
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
López, L. - Destierro y memoria. Trayectorias de familias judías piemontesas ...
 
DESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdf
DESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdfDESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdf
DESPOTISMO ILUSTRADOO - copia - copia - copia - copia.pdf
 

Git res baz ec - final

  • 1. Git y GitHub Resbaz – Ecuador 2016 EREN – Ecuadorian Research and Entrepreneurship Network Ivan Sanchez Vera
  • 2. Quien Soy!?  Aun sigo descubriéndolo, pero se que:  Mi nombre es Ivan Sanchez pero me dicen Panchito.  Fui estudiante de Ing. Sistemas en la UCSG  Hice una maestría en Computación en la Universidad de Melbourne (Australia)  Publique con mi ídolo Rao Kotagiri (famoso investigador de ML)  Soy parte de EREN y quiero hacer un cambio!  Creo en la ciencia y en el poder de Machine Learning y la minería de Datos.  Me gusta Viajar, programar y andar en metrovia (mentira).  https://www.linkedin.com/in/iasanchez/en  Email: ivan@Computer.org  Twitter: @1vand1ng0
  • 3. EREN  La red de Ecuatorianos en emprendimiento e investigación  Ecuadorian Research & Entrepreneurship Network (EREN por sus siglas en Ingles).  Nos gusta la ciencia, la innovación y el emprendimiento.  Formados por Ecuatorianos de muchas partes del país, distribuidos alrededor del mundo.  Hacemos eventos gratuitos para promover la investigación, el emprendimiento, la innovación y las redes de personas en estos temas.  Somos una red abierta, todos son bienvenidos!  Nos gusta la Pizza.  Visiten nuestra pagina: http://www.erenetwork.org/
  • 4.
  • 5. Temario  Control de Versiones Automático  Instalando GIT  Crear un repositorio  Rastreo de Cambios  Explorando el historial  Ignorando algunas cosas  Remotos en GitHub  Colaborando con GIT  Conflictos  Open Science
  • 6. Control de Versiones Automático Entender los beneficios de un Sistema Automatizado de Control de Versiones. Visión General de como funciona GIT.
  • 7. Que es un Sistema de Control de Versiones (VCS)  Es un software que rastrea y lleva un registro de los cambios en los archivos agregados al mismo para este propósito.  Este software nos permite llevar un control adecuado de las diferentes versiones de los archivos.  Permite combinar diferentes versiones  Mantiene información acerca de cada versión.  Version Control System, VCS por sus siglas en Ingles.
  • 8. Que puedes almacenar en el un VCS?  Código  Documentos (paperes, libros)  Pequeños Datasets  Cualquier archivo que cambie a traves del tiempo.
  • 9. En Resumen  El Software de Control de Versiones como GIT, es como la libreta de notas de laboratorios para los investigadores modernos.
  • 10. GIT  Es un VCS  Muy popular hoy en día entre programadores e investigadores.  Es un sistema descentralizado. (no necesita un servidor central para funcionar).  Funciona a Base de Repositorios.
  • 11. Beneficios de GIT para la Investigación  Hace la colaboración mas fácil  Permite obtener mayor retroalimentación  Hace mas transparente el proceso.  Permite la Reproducción de proceso investigativo.  Facilidad de manipular datos geográficos con Geojson.  Facilidad para compartir modelos 3d en STL.
  • 12. Repositorio (Repo)  Un Repo es un conjunto de archivos cuya historia esta siendo rastreada por GIT.  El Repo engloba todo el histórico de los archivos desde que se inicio el rastreo.  El repo contiene cierta información general (metadata) acerca del proyecto.
  • 13. Beneficios del Control de Versionamiento y GIT  Usar control de Versionamiento es mejor que enviar emails de ida y vuelta.  Ningún commit (confirmación) se pierde.  Hay un historial de cambios (puedes volver en el tiempo)  Evita que tengamos conflictos de sobrescritura.  Sabemos quien hizo que!  Nos ayuda a recordar después.  Auditable.
  • 14. Control de Versiones Documento Base + Cambios Los cambios son guardados en secuencia.
  • 15. Control de Versiones Pensemos en el documento y los cambios como cosas separadas. Se pueden crear varias versiones del mismo archivo.
  • 16. Control de Versiones Se necesitan resolver los conflictos en los archivos. Multiples Versiones se pueden combinar en una sola.
  • 17. Instalando GIT Objetivos de Aprendizaje: Configurar Git Para su primer uso Entender las configuraciones globales
  • 18. Instalación de GIT  Para este Taller ResBaz, ya todas las maquinas contienen GIT Instalado para ahorrar tiempo.  Descargar la versión para su sistema operativo.  Cada sistema tiene instrucciones diferentes para su instalación.  Muchas Versiones de MacOs y Linux ya tienen GIT pre-instalado.  En Windows GIT debe ser instalado desde 0. =(  Descargar el ejecutable.  Al Instalar, seleccionar GITBash (La línea de comandos recomendada).
  • 19. Configuraciones Globales  Para configurar el usuarion GIT en esta maquina.  $ git config --global user.name “Ivan Sanchez"  $ git config --global user.email “ivan@computer.org"  $ git config --global color.ui "auto“  Para ver la lista de configuraciones  $ git config --list
  • 20. Crear un Repositorio Crear un Repositorio Local de GIT.
  • 21. Inicializar Directorio  Crear directorio  mkdir resbaz  Cambiarse al directorio recientemente creado  cd resbaz  Inicializar git en este directorio  git init
  • 22. Veamos que hay?  $ ls  Parece que no hay nada.  Pero git crea carpetas ocultas .git, que contienen toda la info de nuestro Repo.  $ ls –a  Si borramos .git -> KABOOM, perdimos todo el historial del proyecto.  $ git status  Nos muestra el estado de este Repositorio =)
  • 23. Rastreo de Cambios Objetivos de Aprendizaje: Recorrer el ciclo de modificar-agregar-confirmar para uno y mas archivos. Explicar donde la información es almacenada en cada etapa de ciclo de rastreo de GIT.
  • 24. Cambios, cambios, cambios  Creemos un archivo para rastrear los cambios  $ vim resbaz_proyecto.txt  Tipeamos un texto  “Este proyecto investiga la dinámica de gatitos ninja peleando contra godzilla.”  Salimos de VI y Guardamos  (presiona la tecla ESC y luego tipea :wq!)
  • 26. Problema? Y si creamos un directorio dentro de otro directorio que ya tiene git e inicializamos un repo dentro de otro repo? Que opinan? Primero Crear directorio base  $ cd  $ mkdir resbaz  $ cd resbaz Luego inicializar git y crear repo  $ git init  $ mkdir miniproyecto  $ cd miniproyecto  $ git init
  • 27. Revisemos el archivo  Para listar los archivos.  $ ls  Para imprimir el contenido del archivo en pantalla  $ cat resbaz_proyecto.txt  Ahora revisemos el estado de nuestro Repo  $ git status
  • 28. Solución  Tan solo borrar la carpeta .git dentro del subrepo  Porque era mala idea?  La carpeta base ya estaba siendo rastreada, lo que implica que todas las subcarpetas estaban siendo rastreadas también.  Si queremos separar la historia de ambas carpetas, entonces no parecen pertenecer al mismo proyecto. Tengamos carpetas separadas y podemos rastrear ambas como 2 Repositorios separados.
  • 29. Agreguemos el primer Archivo  El archivo que creamos no esta rastreado aun  Hay que agregarlo a git para que este lo rastree  $ git add resbaz_proyecto.txt  Volvamos a revisar el estado del Proyecto  $ git status  Ahora el archivo esta en Staging Area
  • 30. Nuestro Primer Commit (Confirmacion)  Realizamos la primera confirmación en nuestro respositorio  Cada commit permite registrar la historia del repositorio  Todo commit debe llevar un mensaje.  $ git commit –m “Agregamos descripción de Investigacion”  Commit crea una copia permanente del repositorio con un ID.  Revisamos el estado del Repo  $ git status  Y todo esta bien o es espero!
  • 31. Historial y Diferencias  Revisamos el historial  $ git log  Para ver las diferencias entre diferentes versiones de un archivo:  $ git diff  Para ver las diferencias con respecto al commit anterior:  $git diff --staged  Porque Git nos hace agregar archivos uno a uno?  Pues porque quizá no queremos confirmar todos los cambios de una sola vez.
  • 32. Staging Area  Es un área especial de GIT en la cual se rastrean los cambios agregados al repositorio desde el ultimo commit.  El Staging Area contiene el conjunto de cambios actual que aun no se han confirmado.  Para guardar todos los cambios a todos los archivos.  $ git commit –a  Aunque podemos dar commit a todos los archivos, es mejor hacerlo individualmente por cada archivo para tener mas control y un REPO mas limpio.
  • 35. Test  Cual de las siguientes opciones de comandos permiten guardar los cambios de myfile.txt al repositorio de git actual?
  • 36. Explorando el historial Objetivos de Aprendizaje: Identificar y usar IDs de commits Comparar varias versiones de archivos rastreados Restaurar versiones antiguas de archivos.
  • 37. Commits Antiguos  To refer to older commits:  Current commit HEAD  Previous commits HEAD~1, HEAD~2 …  Veamos los cambios entre versiones anteriores de nuestro archivo:  $ git diff HEAD~1 resbaz_proyecto.txt
  • 38. Commits Antiguos  Podemos ver los Ids de commits revisando el Log  $ git diff f22b25e3233b4645dabd0d81e651fe074bd8e73b resbaz_proyecto.txt
  • 39. Restaurar Versiones Antiguas  Para restaurar versiones antiguas de un archivo.  $ git checkout HEAD~1 resbaz_proyecto.txt
  • 40. En Resumen, Así funciona GIT
  • 41. Test  Ponja, el investigador, ha hecho cambios a un código de Python (data_cruncher.py) esta mañana y ahora su programa no corre. Luego de una hora de intentos e insultos inútiles, Ponja decide usar la ultima versión confirmada (ultimo commit). Cual de las siguientes opciones lograrían esto?
  • 42. Ignorando algunas cosas Objetivos de Aprendizaje: Configurar git para ignorar archivos específicos. Entender porque ignorar archivos puede resultar útil.
  • 43. A veces queremos ignorar algunas cosas  Archivos binarios  Claves y configuraciones locales  Esas fotos con tu novio/novia.  ETC.  Vamos a Crear unos archivos irrelevantes para ignorarlos:  $ mkdir results  $ touch a.dat b.dat c.dat results/a.out results/b.out  Git status
  • 44. Ignorar  Ahora ignoremos los archivos .dat  Primero hay que crear .gitignore en la raíz del proyecto  $ nano .gitignore  Dentro tipeamos:  *.dat  results/  Esto le dice a git que ignore todos los archivos terminados en .dat y todo en el directorio results.  Git ignore también nos ayuda a que por accidente no agreguemos archivos que no queremos confirmar en el repo.  Revisemos lo ignorado:  $ git status –-ignored
  • 45. Remotos con GitHub Objetivos de Aprendizaje: Explicar que son los repositorios remotos y porque son útiles Clonar un repositorio remoto Poner cambios (Push) y halar cambios (Pull) hacia y desde el Repo remoto
  • 46. Repos Remotos  Sirven para compartir información y colaborar con otras personas.  Son repos centralizados en un lugar de la web, sirven de copia central para todos los colaboradores  Iniciemos sesión en Github y Creemos un nuevo Repo remoto con el nombre resbaz.
  • 47. Github – Repos Remotos
  • 49. Github – Repos Remotos  Nuestro Repo Local tiene todos nuestros cambios  Pero nuestro repo en GitHub aun no tiene nada.
  • 50. Conectar el Git local con el Remoto  Necesitamos conectar ambos repos (Local y remoto)  Para esto usamos el comando remote.  En nuestro repo local ejecutamos  $ git remote add origin https://github.com/ivansanchezvera/resbaz.git  Revisamos que el comando haya funcionado:  $ git remote -v
  • 51. Enviar cambios al Remoto  Para enviar cambios al remoto debemos hacer PUSH  $ git push origin master
  • 52. Obtener cambio del Remoto (Pull)  Para traer cambios del remoto (PULL).  $ git pull origin master
  • 53. Colaborando Objetivos de Aprendizaje: Colaborar enviando (haciendo Push) al repositorio Remoto
  • 54. Colaborando con Github  Trabajemos en pares. Elijan una cuenta de github para centralizar el proyecto.  Primero, debemos dar permiso de acceso a la otra persona  En github, abrimos nuestro repo y elegimos la pantalla “settings”. Luego la opción collaborators y tipeamos el nombre de usuario o email del colaborador.
  • 55. Clonar Repo  Primero debemos salir del repo actual porque este es otro ejercicio.  $ cd  $ mkdir collaboration  $ cd collaboration  Ahora si clonamos el repositorio remoto de nuestro compañero:  $ git clone https://github.com/zelfrontial/resbaz.git  Clonar significa copiar a nuestro PC (local) el repositorio desde un remoto (github), agregándolo como origen (origin).
  • 56. Colaboremos… YA!  Ahora el nuevo colaborador puede hacer cambios en su copia del repositorio y mandarlas al Repo central (origin).  $ cd resbaz  $ vim resbaz_proyecto.txt  Borramos algo y podemos poder otra cosa como: mejor investiguemos iguanas zombies submarinas.  Veamos el archivo a agregar  $ cat resbaz_proyecto.txt  Ahora agreguémoslo y hagamos commit  $ git add resbaz_proyecto.txt  $ git commit –m “Cambio del tema de Investigación a Iguanas”
  • 57. Subiendo los cambios al git – Push y Pull  Los cambios anteriores se hicieron en el repositorio local, pero aun no están en el Repo remoto (origin) en Github.  Usamos Push para enviar los cambios a GitHub.  $ git push orgin master  Ahora la persona que no hizo los cambios, puede bajarlos del servidor remoto centralizado Github (origin) usando el comando Pull  $ git pull origin master
  • 58. Conflictos Objetivos de Aprendizaje: Explicar que son los conflictos y cundo pueden ocurrir. Resolver conflictos resultantes de un Merge (combinación).
  • 59. Conflictos  Cuando la gente trabaja en paralelo, es probable que surjan conflictos. Esto se da porque pueden estar editando el mismo archivo.  Los VCS como GIT ayudan a resolver estos conflictos.  Apliquemos la de tu ex (esposa/o) y generemos un conflicto de la nada nosotros mismos!  Agreguemos una línea a la copia del repo de un solo companero y hagamos push a Github  $ vim resbaz_proyecto.txt  $ git add resbaz_proyecto.txt  $ git commit –m “Creando conflicto”  $ git push origin master
  • 60. Mas conflictos, desatemos el Caos  Ahora el otro compañero debe editar el Archivo, pero sin bajar la copia actualizada de GIT… para crear …. Conflicto!  $ vim resbaz_proyecto.txt  Agregamos algo: Investiguemos mejor la inmortalidad del Cangrejo.  $ git add resbaz_proyecto.txt  $ git commit –m “Cambio de tema de investigación a inmortalidad del Cangrejo”  Ahora hacemos PUSH a github  $ git push origin master  Que #%@#$%@ paso?  Git no permite hacer push al Repo Remoto porque hay conflictos sin resolver.
  • 61. El Rechazo!  Github rechaza los cambios porque no son consistentes con la versión que tiene.  Debemos resolver los conflictos antes de poder hacer PUSH a Github.
  • 62. Resolviendo Conflictos  Git intenta resolver los conflictos por nosotros (como muchas de nuestras mamas).  Sin embargo tu mama no te puede resolver toda la vida, tampoco GIT.  Necesitamos resolver los conflictos!  Primero Bajemos la ultima versión de Github.  $ git pull origin master  Git nos dira donde hay conflicto para que lo resolvamos  $ cat resbaz_proyecto.txt
  • 63. Entendiendo los conflictos  Los cambios en HEAD aparecen con <<<<<<<<<<<<<<<<<<<<  Head es nuestra versión actual en el local  Los cambios son separados con =================  Los cambios de la version que generaron conflicto se marcan con >>>>>>>>>>>>>>
  • 64. Resolviendo los Conflictos  Editamos el archivo conservando los cambios que creemos necesarios.  Borramos los marcadores <<<<<<<<<<, ============= y >>>>>>>>>  Ahora agregamos y hacemos commit  $ git add resbaz_proyecto.txt  $ git status  $ git commit –m “Conflicto resuelto”  Hagamos PUSH a Github  $ git push origin master  Voilà!!!
  • 65. 0 Conflictos  Ahora cuando el otro colaborador actualice desde Github, recibirá el REPO sin conflictos, incluyendo todos los cambios hechos en el MERGE.  Intentemos (el otro compañero debe jalar el repo desde Github):  $ git pull origin master
  • 66. Merge y conflictos en archivos binarios  WARNING! Achtung! Peligro!  Git no puede hacer merge automático, ni resolver conflictos en archivos binarios (Word, autocad, etc).
  • 67. Open Science Objetivos de Aprendizaje: Explicar como los VCS pueden ser usador como una libreta de Laboratorio para trabajo computacional
  • 68. Lo que sucede (a veces) Compartir información puede ser lo ideal en ciencia, pero la realidad es compleja. Usualmente  Científico recolecta datos y la almacena en su equipo (con respaldos cada cierto tiempo).  Científico escribe algo de código para analizar los datos.  Científico recolecta resultados y escribe paper. (a veces envía los datos al journal pero no envía el código).  Pasan 3 eternidades  Journal envía las revisiones del paper con correcciones  Científico cambia algunas cosas en el código y paper para poder publicar.  Científico reenvía paper  Paper es publicado pero el código no esta disponible para reproducir los resultados.
  • 69. Ahora la ciencia se trabaja así  Los datos que el científico recolecta se almacenan en un repositorio abierto como figshare, zenodo o Dryad.  Científico crea un nuevo repositorio en GitHub para mantener un orden en su proyecto  Científico Hace el análisis y envía el código (y quizá algo de output) al Repo.  Colegas pueden revisar su código, los datos y su paper en el repo.  Científico pre publica una versión de su paper en arXiv para que otros científicos en el área den retroalimentación  Científico corrige muchas cosas antes de enviar al Journal.  Otros científicos pueden fácilmente tomar como referencia su trabajo para otras publicaciones.  Mas ciencia!
  • 70. Temas adicionales  Branching  Rebasing  Forking  Pull requests  Issues en Github (para corregir bugs y otros requerimientos).  Marcado para archivos .MD  Licenciamiento
  • 71. RESBAZ Ecuador GYE 2016 GitHub EREN: erenetwork.org Ivan Sanchez ivan@Computer.org @1vand1ng0 Material adaptado de Software Carpentry http://swcarpentry.github.io/git-novice/

Notas del editor

  1. Todos hemos estado en esa situación Es ridículo tener muchas versiones similares del mismo documento