Commit 72901670 authored by sofia martin's avatar sofia martin
Browse files

guia de git

parent 500cba68
{
"cells": [
{
"cell_type": "markdown",
"id": "vocational-pakistan",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Guía de Git\n",
"\n",
"En la explicación práctica hablaremos sobre los conceptos de git y cómo iniciar un repositorio.\n",
"<img src=\"https://i.imgur.com/XlxmtFT.png?1\" title=\"source: imgur.com\" />"
]
},
{
"cell_type": "markdown",
"id": "guided-chick",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Antes de empezar\n",
"\n",
"¿Conocen git? ¿Lo utilizaron alguna vez?\n",
"\n",
"¿Linux? ¿Consola? \n",
" \n"
]
},
{
"cell_type": "markdown",
"id": "proved-mexico",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# ¿Qué es git?"
]
},
{
"cell_type": "markdown",
"id": "tight-physics",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"* Es un programa para controlar versiones de archivos\n",
"* permite tener mayor registro de los cambios \n",
"* y poder volver atrás ante un eventual problema."
]
},
{
"cell_type": "markdown",
"id": "abstract-final",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"<img src=\"https://i.imgur.com/e6ZV8nf.png\" title=\"source: imgur.com\" width=\"300\" />"
]
},
{
"cell_type": "markdown",
"id": "coordinated-command",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"<img src=\"https://i.imgur.com/THf9nEC.png\" title=\"source: imgur.com\" />"
]
},
{
"cell_type": "markdown",
"id": "owned-secondary",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"<img src=\"https://i.imgur.com/ktB6ctE.png\" title=\"source: imgur.com\" />"
]
},
{
"cell_type": "markdown",
"id": "underlying-austria",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"<img src=\"https://i.imgur.com/Vpqo8Pp.png\" title=\"source: imgur.com\" />"
]
},
{
"cell_type": "markdown",
"id": "celtic-niger",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"<img src=\"https://i.imgur.com/ItCnQF2.png\" title=\"source: imgur.com\" />"
]
},
{
"cell_type": "markdown",
"id": "substantial-printer",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"![](https://media.giphy.com/media/q09hiCT1bPbxu/giphy.gif)"
]
},
{
"cell_type": "markdown",
"id": "mysterious-swimming",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"# ¿Les suena conocido?"
]
},
{
"cell_type": "markdown",
"id": "brief-mirror",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# ¿Por qué Git?"
]
},
{
"cell_type": "markdown",
"id": "perceived-incident",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"* Herramienta pensada para trabajar en equipo y en proyectos grandes.\n",
"* Fue creada en el marco de la creación del kernel de linux, por Linus Torvalds.\n",
"* Herramienta para aportar y construir software libre.\n",
"* Versionado de código distribuido.\n"
]
},
{
"cell_type": "markdown",
"id": "solid-local",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Ahora vamos a crear nuestro primer repositorio en **Git**, agregarle algunos archivos y publicarlos en el Servidor de git GitHub:"
]
},
{
"cell_type": "markdown",
"id": "foster-right",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Instalación"
]
},
{
"cell_type": "markdown",
"id": "first-release",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"* Tene en cuenta que esta guía de instalación de git no hace falta si se utiliza la máquina virtual que entregamos en la cátedra para trabajar dado que tiene todo instalado. \n",
"\n",
"* La máquina virtual la pueden descargar desde [aquí](https://catedras.linti.unlp.edu.ar/mod/url/view.php?id=29517)"
]
},
{
"cell_type": "markdown",
"id": "excited-aspect",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## En Debian-based\n",
"```\n",
"sudo apt update\n",
"sudo apt upgrade\n",
"sudo apt install git\n",
"```\n",
"## En Red Hat-based\n",
"\n",
"```\n",
"sudo yum upgrade\n",
"sudo yum install git\n",
"\n",
"```"
]
},
{
"cell_type": "markdown",
"id": "prerequisite-poland",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### En MacOS\n",
"\n",
"```\n",
"brew install git\n",
"\n",
"```\n",
"## En Windows\n",
"\n",
"Descargar en instalar de [gitforwindows](https://gitforwindows.org/) o de \n",
"git-scm. Tener en cuenta que en la cátedra vamos a utilizar `GitBash` por lo cual deben asegurarse que se instale.\n"
]
},
{
"cell_type": "markdown",
"id": "several-detection",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Crear una cuenta de Github.\n",
"\n",
"Para crear una cuenta tienen que entrar a la web de [Github](https://github.com/) y regitrarse (Sing up).\n"
]
},
{
"cell_type": "markdown",
"id": "hundred-trout",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# ¿Cómo usar Git?\n",
"\n",
"Vamos a ver dos formas para comenzar a trabajar con ` Git `:\n",
"\n",
"1. Creando un repositorio desde cero y agregando los archivos iniciales.\n",
"2. Descargando un proyecto ya creado y modificarlo.\n"
]
},
{
"cell_type": "markdown",
"id": "abroad-charleston",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"\n",
"## Configurar información en Git\n",
"\n",
"En git cuando se va a realizar una operación para generar una nueva versión del código es necesario contar con información de usuario. Por esto es necesario que configuremos lo siguiente:\n",
"\n",
"`$ git config --global user.name \"John Doe\"\n",
" $ git config --global user.email johndoe@example.com`\n",
"\n",
"Para ver la configuración:\n",
"\n",
"`$ git config --list`"
]
},
{
"cell_type": "markdown",
"id": "accepting-direction",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Comenzar un repositorio desde cero\n",
"\n",
"Con git podemos versionar cualquier directorio/carpeta donde comencemos nuestro proyecto. Por eso en primer lugar lo que vamos a hacer es crear un directorio."
]
},
{
"cell_type": "markdown",
"id": "fancy-patrick",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Crear un repositorio local con Git en tu máquina dentro de un directorio llamado `ejemplo_python`. \n",
"\n",
" `\n",
"$ mkdir ejemplo_python\n",
" `\n",
"\n",
"Movete dentro de este directorio.\n",
"\n",
"`$ cd ejemplo_python`\n",
" "
]
},
{
"cell_type": "markdown",
"id": "eleven-proportion",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"\n",
"\n",
" Ahora vamos a inicializar nuestro directorio como un directorio versionado por Git\n",
" \n",
" `$ git init`\n",
" \n",
"![Imgur](https://i.imgur.com/rLZ8qyD.png)\n",
"\n",
"Podemos ver que se creó en este directorio una carpeta oculta con el nombre .git/. Esto significa que este directirio está habilitado para ser versionado con Git."
]
},
{
"cell_type": "markdown",
"id": "collectible-hybrid",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
" Ya estamos listos para crear nuestro primer archivo.\n",
" \n",
" `vim app.py`\n",
" \n",
"Guardamos el archivo en el directorio de nuestro proyecto."
]
},
{
"cell_type": "markdown",
"id": "incoming-insider",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Ahora si ejecutamos git status vamos a ver que Git detecto que hay un nuevo archivo que aún no está versionado en nuestro directorio.\n",
"Ahora notarás que hay cambios en tu repositorio Git local:\n",
"![Imgur](https://i.imgur.com/RheTUM7.png)\n",
"\n",
"Recorda siempre elegir un mensaje adecuado para los commits cuando uses Git."
]
},
{
"cell_type": "markdown",
"id": "pressing-handle",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Para agregar este archivo al versionado de Git debemos hacer:\n",
"\n",
"```\n",
"$ git add app.py\n",
" ```\n",
" Volvemos a ejecutar el comando `git status` para ver que información nos da Git ahora de este archivo.\n",
" \n",
"\n",
" ![Imgur](https://i.imgur.com/037usjG.png)\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "diverse-klein",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Procede a crear el primer commit con ese archivo. \n",
"* En este momento tenemos el primer commit en nuestro repositorio local. \n",
"* Podemos ver la lista de todos nuestros commits con el comando `git log`.\n",
"\n",
"![Imgur](https://i.imgur.com/bDsC2Bi.png)"
]
},
{
"cell_type": "markdown",
"id": "broke-extra",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"\n",
"Agrega un `README.md` que servirá de documentación para el repositorio.\n"
]
},
{
"cell_type": "markdown",
"id": "reserved-opening",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Nuevamente notarás cambios en el repositorio local.\n",
"<div>\n",
"<img src=\"https://i.imgur.com/00KvzvL.png\" width=\"700\"/>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"id": "adjacent-marsh",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Crea un segundo commit\n",
"<img src=\"https://i.imgur.com/fq8mFKu.png\" title=\"source: imgur.com\" width=\"700\"/>"
]
},
{
"cell_type": "markdown",
"id": "velvet-championship",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"\n",
"Hasta el momento todos las acciones realizadas fueron en tu máquina. \n",
"\n",
"Ahora llega el turno de interactuar con el servidor de Git (Github en este caso) que es el lugar en donde estará disponible el código para compartirlo.\n",
"\n",
"* Para esto es necesario que tengas una cuenta en Github así que si no cuentas con una aún puedes [crearla aquí](https://github.com/join)."
]
},
{
"cell_type": "markdown",
"id": "aware-rough",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"<img src=\"https://i.imgur.com/OxemFk7.png\" title=\"source: imgur.com\" width=\"500\" />"
]
},
{
"cell_type": "markdown",
"id": "serial-history",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Para usar GitHub de forma segura tienes dos opciones:\n",
"1. Generar una clave SSH y agregarla al usuario . \n",
"2. Usar el método HTTP, pero deberás escribir tu usuario y contraseña para cada operación con el servidor Github.\n",
"\n",
"Con tu cuenta creada debes crear tu repositorio remoto dentro de Github."
]
},
{
"cell_type": "markdown",
"id": "amateur-skiing",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Una vez creado el repositorio en `Github` tenemos que agregar ese repositorio remoto en nuestro repositorio `Git` local.\n",
"\n",
"`git remote add origin git@github.com:fedeotaran/ejemplo_python.git`\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "reduced-hopkins",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Ahora ya estamos listos para subir los commits con nuestros cambios.\n",
"\n",
"`\n",
"git push -u origin master\n",
"`\n",
"\n",
"La salida de comando debería ser parecida a esta:\n",
"\n",
"<img src=\"https://i.imgur.com/5dmy2Ot.png\" title=\"source: imgur.com\" />\n"
]
},
{
"cell_type": "markdown",
"id": "consistent-laundry",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"\n",
"Ahora nuestro código ya esta subido al repositorio.\n"
]
},
{
"cell_type": "markdown",
"id": "sharing-stock",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Comenzar desde un reposotorio ya creado"
]
},
{
"cell_type": "markdown",
"id": "upper-browser",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"La sección anterior nos explica como crear un nuevo repositorio de Git, pero cuando estamos trabajando en equipo es necesario que sólo una persona realice la creación del repositorio. El resto de los miembros del equipo tiene que realizar la descarga del repositorio y comenzar a trabajar.\n",
"\n",
"Para esto es necesario usar el comando git clone.\n",
"\n",
"`git clone https://github.com/<username>/<reponame>.git`\n",
"\n",
"En mi caso para el repositorio que acabo de crear sería:\n",
"\n",
"`git clone https://github.com/fedeotaran/ejemplo_python.git`\n",
"\n",
"Esto va a generar una nueva carpeta donde descargará el contenido del repositorio. La carpeta se creará en el directorio en donde estemos parados a la hora de ejecutar el comando `git clone`.\n"
]
},
{
"cell_type": "markdown",
"id": "modern-aurora",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"\n",
"\n",
"## ¿Comó descargar el repo con otro nombre?\n",
"\n",
"Si queremos que la carpeta que genere sea con otro nombre distinta a la del repositorio hacemos:\n",
"\n",
"`git clone https://github.com/fedeotaran/ejemplo_python.git otro_nombre`\n",
"\n",
"El repositorio desgargado ya tiene toda la información de Git para comenzar. No es necesario hacer el git init dado que el repositorio ya creó otra persona.\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "usual-victoria",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Ya estamos listos para comenzar a trabajar o continuar el trabajo. Nos movemos dentro del directorio.\n",
"\n",
"`cd ejemplo_python`\n",
"\n",
"Vamos a modificar el archivo app.py que generamos anteriormente.\n",
"\n",
"`vi app.py`\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "turned-startup",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"\n",
"\n",
"Y además vamos a crear un nuevo archivo `README.md` para agregarle documentación a nuestro proyecto.\n",
"\n",
"`vi README.md`\n",
"<img src=\"https://i.imgur.com/uuvR3Ug.png\" title=\"source: imgur.com\" />"
]
},
{
"cell_type": "markdown",
"id": "downtown-cover",
"metadata": {
"slideshow": {
"slide_type": "slide"
}