13  Uso de git

13.1 Uso de git y sus direcciones remotas

Este capítulo contiene todo el aspecto técnico para trabajar con el sistema de control de version git. Si ya tienen claro el flujo de trabajo de git y los conceptos básicos (explicados en el capítulo anterior), este capítulo complementará la parte técnica y práctica.

Todos los ejemplos acá mostrados están relacionados al entorno ixplorer, sin embargo los mismos conceptos aplican para entornor como GitHub, Gitlab, Azure y otros similares.

Así mismo, esta sección explica los pasos para que sean realizados desde la terminal. En las versiones más recientes de RStudio podemos encontrar botones en la interfaz que nos ayudan a realizar estos mismos pasos.

Si estas iniciando con git, R y RStudio le recomendamos saltarse esta sección e ir a la siguiente Trabajar con un repositorio git en RStudio para aprender cómo hacerlo desde la interfaz de RStudio.

13.2 Iniciando el repositorio madre

A la hora de tener definido un proyecto de ciencia de datos para la organización, debemos de pensar en la estructura de los archivos que vamos a usar. Dentro de un proyecto en ixplorer podemos tener varios repositorios.

Un proyectos de ciencia de datos puede tener un proyecto en ixplorer con un sólo repositorio o bien, un proyecto en ixplorer con varios repositorios.

Si por ejemplo tenemos un proyecto de riesgo crediticio y tenemos varias etapas de desarrollo

  • Ramas, y multiples upstreams para poder hacer pruebas / aprobar el pull-request

Lo primero que se debe de realizar es abrir una carpeta a nivel local (puede ser en el escritorio, en documentos, en un sitio dentro de nuestra computadora que sea de nuestra preferencia)

Debemos de asegurarnos de poner un nombre corto, sin tíldes, mayúsculas o letras como la “ñ” para no tener problemas a la hora de utilizar algún lenguaje de programación.

Una vez que tenemos lista la carpeta, podemos hacer que esta sea una carpeta git, la cual podremos sincronizar con un repositorio remoto.

Para esto podemos utilizar la terminal que se muestra a través de RStudio y usar una serie de comandos que nos darán control sobre ciertas acciones en nuestro computador

13.3 Hacer de la carpeta el directorio de trabajo:

$cd ~/ # esto lleva al "home directory".
$cd ~/Desktop # Esto me lleva al escritorio.
$ls # me da una lista de los elementos que tengo en la carpeta que haya indicado.
$cd primeras_letras_nombre <TAB> #con tab me completa el nombre.
  • … hasta llegar a la carpeta que creamos y queremos utilizar para el repositorio junto con git.

13.4 Clonar repositorio remoto:

Si es la primera vez debemos de hacer un clone del repositorio con el que queremos trabajar:

$git clone <la direccion obtenida en ixplorer>

Una repositorio que acabas de clonar aun no contiene información alguna sobre ti. Y a veces confunde que cuando quieres hacer el siguiente paso de incluir nuevo codigo, va a dar un mensaje indicando que no sabe quien eres. Para resolver eso puedes hacer lo siguiente. Toma en cuenta que el nombre de usuarios y el correo de usuario que hemos de incluir aqui es el que tienes registrado en el sistema de configuración de proyectos que estas usando.

git config --global user.name (nombre usuario)
git config --global user.email (correo usuario)

13.5 Hacer una rama:

Para no trabajar directamente en la Master Branch (que es el documento central) podemos generar “ramas/branches” los cuales serán las nuevas versiones con los cambios que nosotros generamos en los documentos.

Cuando ya estamos dentro de la carpeta git como directorio de trabajo:

git checkout -b NOMBRE

Para corroborar que estamos en la rama creada podemos poner en el power shell:

$git status

13.6 Borrar una rama local

En algunas ocasiones nos equivocamos y queremos revisar una rama localmente. Esto se hace con:

git branch -d the_local_branch

13.7 A partir de este punto podríamos trabajar en los archivos que hemos clonado del repositorio.

Una vez creada la rama, podemos ir directamente a los archivos que tenemos en nuestra computadora y generar cambios en ellos. Cuando finalicemos los cambios se guardan. Los cambios estarán en nuestra carpeta, más no en el repositorio remoto, por lo que tenemos que hacer la actualización y subir nuestros cambios.

13.8 Subir cambios:

Hay una serie de pasos que se realizan para introducir los cambios que hayamos generado dentro del sistema git.

Dentro del repositorio local:

$ git add .\nombre_del_archivo

Someter cambios a sist. git (control de cambios en un punto de tiempo)

git commit -m "msj (con tiquete generado en ixplorer)"

Revisar estado del git:

$ git status

Revisar diferencias entre estado anterior a estado nuevo:

$git diff

Subir cambio a repositorio remoto:

$git push

Si queremos revisar en cual repositorio remoto estamos trabajando, es decir, con cuál estamos ligados (en caso de tener github, ixplorer etc) pordemos utilizar el siguiente comando:

$git remote

En caso de que tengamos cambios los cuales no hayamos subido y no queremos subir, podemos utilizar la función:

$git stash

13.9 Volver a rama inicial

Luego de estar trabajando en una rama TXXXX podría hacerse necesario volver a una de las ramas principales como lo es develop. Para realizar este proceso, sería necesario utilizar el comando:

$git checkout NOMBRE_RAMA

El output nos deberá indicar que hemos cambiado de rama XXXX a la rama que mencionamos.

##¿Qué hacer si tengo varias cuentas de usuarios para git?

Arriba te sugerimos configurar el repositorio con tu nombre y correo usando la bandera --global. La ventaja es que lo tienes que hacer solo una vez. Pero si hay varios correos que uno utilice y varias cuentas de git, hay que hacer la configuracion en cada una de las carpetas de trabajo por aparte, para que en cada repositorio se encuentre el usuario particular que quieres usar.

Es facil olvidar lo que configuraste al inicio, asi que para ver con que nombre y email esta configurado una carpeta de trabajo puedes dar las siguientes instrucciones.

git config user.name  #Me da el nombre de usuario que estoy utilizando
git config user.email #Me da el correo que estoy utilizando

Para hacer los cambios a las cuentas con las que deseo trabajar debo de correr los siquientes comandos:

git config user.name (nombre usuario)
git config user.email (correo usuario)

Ya una vez realizado este proceso, al hacer un push a un repositorio o sistema de trabajo, los cambios quedaran con nuestra autoría y no con un usuario y correo desconocidos en dicho repositorio.

Hay una ultima cosas por considerar. Si estas en tu computador personal es preferible no tener que poner la clave cada vez que haces un pull o push. Para que git requerde tu nombre de usuario y clave usa lo siguiente:

git config credential.helper store

13.10 Actualizar tu repositorio con upstream

Primero debemos de añadir una nueva dirección que corresponderá a la del repositorio “upstream” que es el repositorio del cual hicimos la bifucarción:

{bash, eval = FALSE} git remote add upstream https://ixplorer.com/proyecto/repositorio.git

Luego vamos a traer todos los cambios que hay en ese repositorio sin mezclarlos con alguna de nuestras ramas locales:

git fetch upstream

Un paso extra para asegurar que nos encontramos en nuestra rama master:

git checkout master

Ahora re-escribimos nuestra rama master de tal manera que nuestros commits que aún no se encuentran en el repositorio remoto sean colocados sobre los de cualquier otra rama

git rebase upstream/master

Finalmente subimos nuestra rama actualizada a nuestro repositorio remoto

git push

13.11 Referencias

Si querés revisar con mayor profundidad el tema de git o buscar más ayuda: