Está en la página 1de 17

Taller introductorio a GIT

Lic. Hugo H. Fernández


Automatización y Scripting
Dpto. Ingeniería de Computadoras
Universidad Nacional del Comahue
Agenda
● ¿Qué es y para qué me sirve un control de versiones?
● ¿Que es GIT?
● ¿Cómo funciona GIT?
● ¿Flujo básico de trabajo en GIT?
● Creando mi primer proyecto
● Mi primer PUSH (usaremos gitlab)
● Comandos frecuentes y cheat sheet
¿Qué es y para qué me sirve un control de versiones?

● ¿Que es?: Hta. de software que permite gestionar el cambio del código y/o
documentos a lo largo del tiempo.
● ¿Para qué me sirve?
○ Tener el historial de cambios de toda mi información (trazabilidad).
○ Recuperar un estado que necesito en algún punto en el tiempo (esos puntos en el tiempo se
denominan “commits”, los veremos más adelante).
○ Podríamos decir que es otra manera de tener un “backup” de mi información (y en el caso de
git en forma distribuida!!)
○ Enormes equipos en un mismo proyecto.
¿Que es GIT?

● Git es una herramienta de control de versiones de forma distribuida.


○ ¿distribuida?, Claro no depende de un repositorio centralizado como otras htas de control de
versión y permite trabajar localmente aunque no tengamos conexión a internet.
○ Es software Libre, por eso nos encanta.
○ Es multiplataforma (Mac, Windows y Linux… obviamente).
○ Fue desarrollada íntegramente por Linus Torvalds, según él no había un controlador de
versiones decente (y odiaba cvs), así que desarrolló uno ¿que tal?. video explicativo/divertido:
https://www.youtube.com/watch?v=iNFtX2ctExM
○ Podemos mantener el historial COMPLETO de las versiones (debido a su arquitectura
distribuida toda la información se sincroniza).
○ Tiene un sistema organizado en ramas, que lo hace muy potente y simple de manejar
¿Alguno de Uds vio Back to the Future II?... les cuento.
¿Que es GIT?
¿Cómo funciona GIT?

● Git maneja “instantáneas” no diferencias, otros versionadores hacen esto:

● GIT, hace esto:


“básicamente, toma una foto del
aspecto de todos tus archivos en
ese momento y guarda una
referencia a esa copia
instantánea”
¿Cómo funciona GIT?

● GIT es distribuído y como realiza una copia íntegra del proyecto, podés
trabajar localmente sin necesidad de conexión a la red. (No es posible en
otros versionadores).
● Operaciones locales: Como todo está en tu disco podés viajar a cualquier
punto en el tiempo de tu proyecto (acá usamos el Delorean time machine),
realizar modificaciones, etc. Lo que brinda velocidad y agilidad.
● Integridad: Comprobaciones con checksum (SHA-1), nada puede sufrir
cambios sin que git se entere!.
● Siempre agregamos: Al realizar los commits, siempre estamos agregando
información a la historia, lo que hace muy difícil perder o no ser capaces de
enmendar información.
¿Cómo funciona GIT?

Los 3 estados:
● Confirmado: Tus datos están almacenados y seguros en tu base de datos
local de git.
● Modificado: Tu/s archivo(s) están modificados, pero aún no se han
confirmado en tu base de datos.
● Preparado (Staged): Significa que has “marcado” tus archivo(s)
modificado(s) en su versión actual para que vayan en la próxima
confirmación.
Estos 3 estados implican 3 secciones principales de cualquier proyecto GIT:
● Git directory, working directory, staging area.
¿Cómo funciona GIT?

● Git directory: Es donde se almacenan los metadatos y la base de datos de


objetos para tu proyecto (.git) ---> ¡recordar este directorio!

● 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, y se colocan
en disco para que los puedas usar o modificar.

● Staging area: Es un archivo contenido en tu directorio de Git, que almacena


información acerca de lo que va a ir en tu próxima confirmación (a veces se
lo denomina “index”).
¿Cómo funciona GIT?
¿Flujo básico de trabajo en GIT?

Pasos frecuentes para el versionado de mi trabajo:

1. Modificamos 1 o más archivos (esto sucede en working directory)


2. Preparamos los archivos, añadiendolos a nuestra staging área. (git add)
3. Confirmamos los cambios (commit), tomándolos del área de staging para
luego almacenar esta copia instantánea en nuestro repositorio git local.
Creando mi primer proyecto

1. Verificar que tengamos instalado GIT:


a. git --version → git version 2.1.4 (o algo similar)
b. En caso de no tenerlos instalado:
i. apt-get install git → obviamente dependerá de su distro y de que el software esté
disponible.
ii. Otra opción es descargarlo del sitio oficial: https://git-scm.com/
2. Creamos nuestro primer proyecto usando git:
a. mkdir miProyectoGit
b. echo “hola mundo” > hola.txt
c. git status ¿Que vemos?
d. git add . ¿Que sucede acá?
e. git commit -m “Mi primer commit” ¿Y acá? que pasó con ¿git status?
f. Listo! ya tenemos nuestro primer proyecto funcionando…..¿eso es todo?
Mi primer PUSH (usaremos gitlab)

● ¿Que es gitlab?:
○ Para resumir, es una plataforma web que tiene un gestor de repositorios git. Lo que nos
permitirá sincronizar nuestro repo local con este nuevo “servidor”.
○ Utiliza una licencia opensource.
○ Sus desarrolladores son: Dmitriy Zaporozhets and Valery Sizov.
○ La plataforma fue desarrollada en ruby y go.
○ Además de permitirnos versionar nuestro código tiene muchísimas más funcionalidades muy
útiles para el desarrollo de software: wiki, issues-traking, CI/CD, etc.
○ Permite tener repositorios públicos y privados.
○ Tenemos que crearnos una cuenta para poder usarlo ---> ¡crearla ahora! :-)
● Volvemos al shell….
Mi primer PUSH

● Vamos a subir nuestro código ya “comiteado” a la plataforma gitlab, tenemos


2 opciones:
a. Crear el repositorio directamente en gitlab y luego clonarlo a nuestra pc.
b. Conectar nuestro repo local a un repositorio ya existente en gitlab o crear uno nuevo.
● Debido a que ya tenemos todo listo, vamos a crear el repositorio con la 2da
opción, para eso:
■ git remote add origin https://gitlab.com/miUsuario/repoNuevoOExistente
● La opción “a” se realiza directamente desde la plataforma, luego debemos
clonar el repositorio en forma local, así:
■ git clone https://gitlab.com/sychus/taller-git.git
Algunos comandos frecuentes y cheat sheet

● git init
● git fetch
● git status
● git add {algo}
● git commit -{m} “mensaje”
● git checkout -b {nuevaRama}
● git checkout {ramaExistente}
● git push {remote_name} {branch_name}
● git pull {remote_name} {branch_name} → git fetch + git merge
● git merge {branch_name}
● git rebase {branch_name}
Cheat sheet (básica y muy útil):
https://rogerdudler.github.io/git-guide/index.es.html
¿Preguntas?
Muchas
Gracias

También podría gustarte