Introducción a GIT - UNSJdea.unsj.edu.ar/sda/11_Git.pdf · Introducción a GIT 8 GIT - SDA Flujo...

34
Introducción a GIT GIT – SDA – Ing. Carlos Dell’Aquila 1

Transcript of Introducción a GIT - UNSJdea.unsj.edu.ar/sda/11_Git.pdf · Introducción a GIT 8 GIT - SDA Flujo...

Introducción a GIT

GIT – SDA – Ing. Carlos Dell’Aquila 1

Í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 a GIT

GIT - SDA 9

Flujo de trabajo con GIT

git checkout

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.

Comenzando con GIT

GIT - SDA 24

Crear un Branch

Comenzando con GIT

GIT - SDA 25

Mergering

Comenzando con GIT

GIT - SDA 26

Interfaz gráfica

Se instala junto con Git

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.

Referencias

GIT - SDA 34

Scott Chancon and Ben Straub, «ProGit, second edition». Apress.