Git y Github

Git y GitHub son herramientas diferentes pero complementarias para el desarrollo de proyectos de programación o afines. Git es una herramienta computacional de control de versiones que es usada prácticamente por todo el mundo. GitHub puede ser descrito como la plataforma en linea para alojar proyectos de programación (i.e. código) mas popular. Sin embargo, esta definición es simplista: Github ofrece muchísimas otras herramientas para facilitar la colaboración y publicación de proyectos relacionados con la programación.

  • Git → control de versiones
  • Github →repositorio en linea
git y github

 

Git: Control de versiones

Un sistema de control de versiones rastrea el historial de cambios a medida que las personas y los equipos colaboran en proyectos juntos. A medida que el proyecto evoluciona los equipos pueden ejecutar pruebas, corregir errores y aportar código nuevo con la confianza de que cualquier versión se puede recuperar en cualquier momento.

control de versiones

Tomado de Bryan 2018

El control de versiones:

  • Mantiene registro de los cambio realizados
  • Facilita trabajo colaborativo
  • Permite saber quien cambió que y cuando
  • Permite revertir cambios

Git no necesita una conexión permanente a un repositorio central y permite el trabajo asincrónico de los colaboradores.

 

Como instalar git


Instalar Git en Linux

Git se desarrolló originalmente en el sistema operativo Linux. Por lo tanto, tiene sentido que sea mas fácil de configurar para ejecutarse en Linux. Puede instalar Git en Linux a través de la herramienta de administración de paquetes que viene con su distribución:

  • Los paquetes de Git están disponibles usando apt
  • Es una buena idea asegurarse de que está ejecutando la última versión. Para hacerlo, navegue hasta la terminal del símbolo del sistema y ejecute el siguiente comando para asegurarse de que todo esté actualizado: sudo apt update
  • Para instalar Git, ejecute el siguiente comando: sudo apt install git-all
  • Una vez que se haya completado la salida del comando, puede verificar la instalación escribiendo: git version

Instalar Git en windows

  • Encuentre el último instalador de Git para Windows y descargue la última versión
  • Una vez que se haya iniciado el instalador, siga las instrucciones que se proporcionan en la pantalla del asistente de configuración de Git hasta que se complete la instalación
  • Abra la terminal de windows o Git Bash
  • Escriba la versión de git para verificar que se instaló Git (git version)

Nota: git-scm es recomendado para descargar Git para windows. La ventaja de descargar Git desde git-scm es que usa la última versión de Git e incluye Git Bash.


Instalar Git en mac

La mayoría de las versiones de macOS tienen Git instalado. Sin embargo, si no tiene Git instalado, se puede instalar la última versión de Git utilizando uno de estos métodos:

Instalar Git desde un instalador
  • Corra git --version en la terminal, sin aun no está instalado se le brindará la opción de instalarlo
  • Una vez que el instalador haya comenzado, siga las instrucciones que se proporcionan hasta que se complete la instalación
Instalar Git desde Homebrew

Homebrew es un administrador de paquetes para macOS. Si ya tiene Homebrew instalado, puede seguir los pasos para instalar Git:

  • Abra una ventana de terminal e instale Git usando el siguiente comando: brew install git
  • Una vez que se haya completado la salida del comando, puede verificar la instalación escribiendo: git --version

 

Usando Git para control de versiones

Git se usa típicamente desde una terminal (consola donde se corre código). En windows se recomienda usar la consola de gitbash. En los sistemas operativos basados en Unix (macOS y Linux) se puede usar directamente desde la terminal por defecto.

 

Pasos

  1. Configura tu identidad de Git

Git usa un nombre y una dirección de correo electrónico para identificar las confirmaciones (‘commits’) con un autor (i.e. rastrea qué persona está realizando qué cambios). Su identidad de Git no es la misma que su cuenta de GitHub (pronto abajo hablaremos de GitHub), aunque ambas deben usar la misma dirección de correo electrónico. Por lo general, solo necesita configurar su identidad de Git una vez por computadora.

Así se puede definir su nombre de usuario en Git:

# definir nombre en git
git config --global user.name "Su nombre"

… y así se puede definir el correo electrónico:

# definir correo elec. en git
git config --global user.email "su@email.com"

 

  1. Crear un repositorio local

“Dirijase” a la carpeta donde quiere mantener el repositorio (cd) e inicie el repositorio local (git init): ¨

# ejemplo de carpeta
cd /directorio/para/mi/repositorio

# iniciar repositorio local
git init

git init inicia un nuevo repositorio de Git y comienza a rastrear un directorio existente. Agrega una sub-carpeta oculta dentro del directorio existente que alberga la estructura de datos interna necesaria para el control de versiones.

 

  1. Añadir un nuevo archivo

Cree un nuevo archivo. Puede ser un archivo de .R o un archivo README.md que describa el nuevo repositorio (en este caso es solo un ejemplo). Ahora podemos usar git status para verificar el estado actual del proyecto:

# verificar estado
git status

Nota: Git puede registrar cambios específicos dentro de un archivo cuando estos son archivos de texto (archivos no-binarios). Para archivos binarios solo el historial de versiones será rastreado.

 

  1. Confirma cambios en Git

Para comenzar a rastrear un nuevo archivo se debe usar el siguiente comando:

# empezar a rastrear un archivo
git add nombre.de.archivo

 

Tambien podemos hacerlo para todos los nuevos archivos así:

# empezar a rastrear todos lo nuevos archivos
git add .

 

Cuando se ha empezado a rastrear un(os) archivo(s) se puede(n) confirmar los cambios en el historial de versiones del proyecto:

# confirmar cambios
git commit -m "mensaje corto pero explicativo aqui"

 

Un flujo de trabajo común es editar archivos en su proyecto, agregar los archivos que desea guardar usando el comando git add y luego tomar cofirmar los cambios del archivo usando el comando git commit. Tambien podemos usar git status para verificar el estado del proyecto.

  1. Añadir ramas
  • Una forma limpia de hacer cambios es mantenerlos en un linea de desarrollo paralela mejor conocida como “rama” (“branch”)
  • Tambien es la forma mas segura de trabajar en diferentes versiones de un repositorio a la vez
  • De forma predeterminada el repositorio tiene una rama principal que se considera la rama con la version mas
  • Usamos ramas para experimentar y hacer ediciones antes de enviarlas a la rama principal
  • Las ramas pueden mantener versiones independientes del proyecto que luego pueden (o no) unirse a la rama principal
ramas del repositorio github

 

El siguiente código crea una nueva rama y la activa:

# añadir una rama
git checkout -b nueva_rama

 

Ahora podemos hacer cambios en el proyecto sin afectar la rama principal. Una vez que se esta conforme con los cambios estos se pueden reintegrar a la rama principal:

# volver a la rama principal
 git checkout master

# integrar nueva rama
git merge nueva_rama

 

… y borrar la rama alterna:

# borrar rama
git branch -d nueva_rama

 

Comandos adicionales para monitorear el estado de proyecto en git

 

  • git log: devuelve un historial de las confirmaciones (“commits”)

  • git reflog: permite visualizar los cambios (mas recientes) como las adiciones, confirmaciones y los cambios de rama

  • git diff: permite visualizar los cambios específicos en los archivos no-binarios (i.e. de texto)

  • git reset: devuelve la rama principal a un estado anterior

  • Utilice git --help para ver una lista de otros comandos útiles para rastrear/modificar historiales

 


Usar Github para alojar proyectos

GitHub es una plataforma para depositar código, hacer control de versiones y facilitar colaboraciones. Permite a los usuarios ordenar y guardar copias del código, así como colaborar en proyectos relacionados a programación de forma remota.

Pasos

  1. Crear una cuenta en GitHub
  1. Crear un repositorio
  • En la esquina superior derecha, junto a su icono de identificación, haga clic en “+”y luego seleccione “Nuevo repositorio”
  • Nombre el repositorio y escriba una breve descripción
  • Seleccione “iniciar este repositorio con un archivo README” (optional pero recomendado)
nuevo repositorio github

 

  1. Crear una rama (“branch”)
  • Las ramas en GitHub son equivalentes a las que creamos en Git y tienen la misma función: correr versiones paralelas de un proyecto
ramas del repositorio github

 

  1. Fusionar la rama secundaria
  • Para fusionar ramas se debe hacer una solicitud de adición (“pull request”)
  • La solicitud de adición es una forma de alertar a la encargada de un repositorio de que desea realizar algunos cambios en su código
  • La solicitud permite revisar el código y asegurarse de que se vea bien antes de incluir los cambios en la rama pirincipal. Una vez que se ha revisado la encargada puede decidir si acepta o no esos cambios (“merge”).

Primero se debe solicitar una adición:

pull request

 

Y luego de cerciorarse que no hay conflictos se pueden unir la rama paralela y la principal:
pull request

 

 

Git + GitHub

  • Los repositorios locales manejados con Git se pueden alojar y/o sincronizar con repositorios remotos alojados en GitHub
  • Esta combinación de herramientas es particularmente útil para colaboraciones de forma remota y para compartir código con la comunidad

 

pull request

 

Pasos

  1. Clone el repositorio localmente

 

pull request

 

  • Y luego corremos git clone localmente:
# clonar repositorio remoto
git clone https://github.com/maRce10/curso_reproducible.git

 

  1. Defina el repositorio remoto localmente
# entrar a la carpeta
cd ./curso_reproducible

# inicie el repositorio en git
git init

# definir la direccion del repositorio
git remote add origin https://github.com/maRce10/curso_reproducible.git

 

  1. Envie solicitudes de adicion a GitHub
  • Una vez que se ha trabajado en un proyecto localmente estos cambios pueden ser sincronizados con el repositorio en GitHub
  • git pull actualiza la línea de desarrollo remota con actualizaciones de su contraparte local
  • el cambio debe estar rastreado y confirmado para poder ser sincronizado
## rastrear nuevos cambios
git add .

# confirmar cambios
git commit -m "cambio local x"

# enviar la primer solicitud a github
git pull origin master

# enviar subsiguientes cambios a github 
git pull

 

  1. Actualizar repositorio local
  • Si hay cambios de sus colaboradoras que se han sincronizado con el repositorio en GitHub estos se pueden sincronizar localmente usando git push
  • git push actualiza la línea de desarrollo local con actualizaciones de su contraparte remota
# sincronizar cambios remotos la primera vez
git push origin master

# sincronizar cambios remotos 
git push

 

 

Ejercicio 1

  • En su cuenta de GitHub cree un nuevo repositorio

  • Cree un archivo README de forma remota (en GitHub)

  • Clone el repositorio locamente

  • Sincronice el repositorio local con el de GitHub

  • Realice cambios localmente (e.g. añada un archivo de texto) y envíe estos cambios a GitHub

 


Referencias