Introducción a GIT - UNSJdea.unsj.edu.ar/sda/11_Git.pdf · Introducción a GIT 8 GIT - SDA Flujo...
Transcript of Introducción a GIT - UNSJdea.unsj.edu.ar/sda/11_Git.pdf · Introducción a GIT 8 GIT - SDA Flujo...
Índice
Motivación
Introducción a GIT
Instalando GIT
Configurando GIT
Comenzando con GIT
Repositorios Remoto
Trabajando con GitHub
GIT - SDA 2
Motivación
GIT - SDA 3
¡Es habitual que guardemos las modificaciones en un archivo con código estable!
Proyecto01_v1.vhd
Motivación
GIT - SDA 4
Sistemas de Control de Versiones
• Revertir Archivos y Proyectos a un Estado Anterior
• Comparar Cambios a lo largo del tiempo
• Saber quién realiza los cambios
• Recuperar archivos perdidos
• Facilitan el trabajo en grupo cuando son proyectos grandes y complejos
Motivación
GIT - SDA 5
Sistemas de Control de Versiones En la actualidad se utilizan Sistemas de Control de Versiones Distribuidos.
Sistemas Centralizados Sistemas Distribuidos
Motivación
GIT - SDA 6
Sistemas de Control de Versiones En la actualidad se utilizan los Sistemas Distribuidos
• Mercurial
• Bazaar
• Darcs
• BitKeeper
• Git
Motivación
GIT - SDA 7
Sistemas de Control de Versiones En la actualidad se utilizan los Sistemas Distribuidos
• Mercurial
• Bazaar
• Darcs
• BitKeeper
• Git
Introducción a GIT
GIT - SDA 8
Flujo de trabajo con GIT
• Git Directory, es donde Git almacena los
metadatos y la base de datos de objetos para tu
proyecto. Cada proyecto tiene su propio
directorio y se denomina repositorio.
• Working Directory, es una copia de una
versión del proyecto. Estos archivos se sacan de
la base de datos comprimida en el directorio
de Git.
• Staging Area, es un sencillo archivo,
contenido en el directorio de Git, que
almacena información acerca de lo va a ir en el
próximo commit.
Introducción con GIT
GIT - SDA 10
Cíclo de vida de los archivos Archivos en el
Working Directory
Tracked (Presente en el último commit)
Untracked (No presente en el último commit)
Modified Unmodified Staged
• La primera vez que clonas un repositorio, todos los
archivos estarán bajo seguimiento y sin modificaciones.
• A medida que se editan los archivos, Git los ve como
modificados.
• Luego esos archivos pasan a estar Staged, y luego se
realiza un commit.
• El estado se puede ver con el comando $ git status
Tracked
Instalando GIT
GIT - SDA 11
• En Windows http://msysgit.github.com/
• Distribuciones Linux basadas en Debian,
como Ubuntu
$ sudo apt-get install git
Configurando GIT
GIT - SDA 12
$ git config --global user.name «Juan Perez»
$ git config --global user.email [email protected]
$ # Esto es un comentario
$ # Comprobación de Configuración
$ git config --list
Comenzando con GIT
GIT - SDA 13
$ # Crear un directorio
$ mkdir repo01
$ # Ingresar al directorio creado
$ cd repo01
$ # Crea un directorio nuevo
$ mkdir datafiles
$ # Creamos algunos archivos
$ touch test01
$ touch test02
$ touch test03
$ touch datafiles/data.txt
$ # Guardamos algo de texto (la salida del comando ls)
$ ls > test01
Comenzando con GIT
GIT - SDA 14
$ # Iniciamos el Repositorio local Git
$ git init
$ # Vemos el estado que tienen los archivos en el repositorio.
$ git status
• Inicialización del Repositorio
$ # Agregamos un archivo al repositorio
$ git add test01
Comenzando con GIT
GIT - SDA 15
$ # Escribimos algo nuevo en el archivo test01
$ echo Hola > test01
$ # Vemos el estado que tienen los archivos en el repositorio.
$ git status
• Inicialización del Repositorio
$ # Agregamos todos los archivos al repositorio
$ git add .
Comenzando con GIT
GIT - SDA 16
$ # Se realiza el commit de los archivos en el Staged area.
$ git commit –m «Archivos Iniciales»
$ git log
• Inicialización del Repositorio
Comenzando con GIT
GIT - SDA 17
$ # Se agrega un nuevo texto en test01
$ echo Hola Mundo! > test01
$ # ¿Qué estado tiene el archivo ahora?
$ git status
$ # Agregamos test01 a Staging Area
$ git add test01
$ # Se hace un commit de los archivos
$ git commit –m «Nuevo commit con test01 modificado»
$ # Muestro por pantalla el contenido de test01
$ cat test01
• Modificando archivos del Repositorio
Comenzando con GIT
GIT - SDA 18
$ # Se obtiene el código de identificación de los commit
$ git log --oneline
• Obtener versiones anteriores del proyecto
$ # Se vuelve a un commit anterior utilizando su código
$ git checkout 16ded03
$ cat test01
Comenzando con GIT
GIT - SDA 19
$ # Uso del comando Tag dese el ejemplo anterior
$ git tag version1.0 –m «Version 1.0»
$ # Se vuelve al último commit
$ git checkout master
$ # Se listan todos los Tags disponibles
$ git tag
$ # Se selecciona el Tag de interes.
$ git checkout version1.0
$ cat test01
• Obtener versiones anteriores del proyecto, mas simple, utilizando
comando Tag. Se utiliza para etiquetar versiones estables o
relevantes del proyecto.
Comenzando con GIT
GIT - SDA 20
Comando Diff
El comando diff de Git permite al usuario ver los cambios hechos.
$ # Hacemos cambios en los archivos del repositorio que creamos
$ echo «Este es un cambio» > test01
$ echo «y este es otro cambio» > test02
$ # Vemos los cambios
$ git diff
Comenzando con GIT
GIT - SDA 21
Eliminar archivos Si se elimina un archivo que está bajo el control de versiones, el comando $git add .
no tendrá en cuenta que se ha eliminado. Para ello se utilizan los siguientes comando:
$ git rm <file>
Comenzando con GIT
GIT - SDA 22
$ # Clonando un repositorio remoto
$ git clone https://github.com/libgit2/libgit2
• Clonando un repositorio existente
• Se copia el directorio \.git, con todo el historial del proyecto
• Los archivos del proyecto del último commit.
Comenzando con GIT
GIT - SDA 23
GIT Branching y Merging ( Ramificaciones y Unión )
Branch Merge
• Git permite crear Branches. Son
copias independientes del código
fuente que pueden ser cambiadas
independientemente de las otras.
El branch por defecto es llamado
master.
• Merge permite combinar los
cambios de dos branches. Si un
conflicto ocurre, Git marcará el
conflicto en el archivo y el
programador tiene que resolver el
conflicto manualmente.
Repositorio Remoto - GitHub
GIT - SDA 27
Se estudiarán los comandos básicos para trabajar con repositorios externos.
• Un Repositorio Remoto puede estar almacenado en forma local
(nuestra PC, por ejemplo) o un servidor.
• El servidor puede ser propio o de un tercero.
• Un servidor muy difundido es GitHub. Para ello crearemos una
cuenta, es muy simple.
• En GitHub, los repositorios de libre acceso son sin costo, por el
contrario, los de acceso restringido si tienen.
Repositorio Remoto - GitHub
GIT - SDA 28
Flujo de Trabajo
Clonamos el proyecto en
nuestra PC y creamos
un nuevo Branch para
colaborar en el proyecto. Hacemos los
Commits
necesarios
Pull Request:
Proponer cambios.
Se discuten los
cambios
Merge
Se confirma que
los cambios pasan
la pruebas
Repositorio Remoto - GitHub
GIT - SDA 29
Pasos… 1. Creamos una cuenta nueva en GitHub (si aún no la tenemos).
2. Creamos un repositorio nuevo.
3. Asignamos colaboradores
4. Copiamos el enlace del nuevo repositorio.
1.
2. 4.
3.
Repositorio Remoto - GitHub
GIT - SDA 30
Trabajando desde nuestra PC…
$ # Clonamos el repositorio en nuestra PC
$ git clone https://github.com/<tu_usuario>/VHDL_example.git
$ # Creamos un nuevo Branch, el cual agregaremos nuestro código
$ git branch vhdl_code && git checkout vhdlcode
$ # Copiamos en el directorio de trabajo, los archivos de codigo de nuestro proyecto
$ # Agregamos los nuevos archivos al repositorio.
$ git add *.vhd
$ # Realizamos el commit de los nuevos archivos
$ git commit –m «Nuevos archivos del proyecto»
$ # Subimos el branch creado y los nuevos archivos al repositorio
$ git push origin vhdls_code
*Push es el comando para subir cambios a un repositorio remoto
y origin, hace referencia al repositorio que clonamos.
Repositorio Remoto - GitHub
GIT - SDA 31
Agregando los cambios al branch principal master
Primero se hace Pull-Request, desde GitHub para indicar que quieren agregar nuevos
cambios. Esto lo puede hacer cualquier colaborador desde su cuenta.
Repositorio Remoto - GitHub
GIT - SDA 32
En Pull-Request se analizan los cambios que se quieren introducir y además GitHub permite agregar comentarios de los cambios.
Repositorio Remoto - GitHub
GIT - SDA 33
Luego se puede ver todo el historial de cambios realizados en el repositorio de GitHub junto con los comentarios y quienes colaboran con los cambios.