Ayudantia 1 Git y GitLab Sebastián Torrealba sebastian.torrealba@usm.cl ¿Qué es Git? Git es un sistema de control de versiones distribuido utilizado para el seguimiento de cambios en el código fuente y otros archivos en proyectos de software. ¿Para qué sirve Git? Control de versiones distribuido Colaboracion en equipo Commits e historial Ramificaciones y fusiones Seguimiento de conflictos ¿Qué es GitLab? GitLab es una plataforma completa de desarrollo de software que proporciona herramientas para gestionar todo el ciclo de vida del desarrollo, desde la planificación y la colaboración hasta la construcción, prueba y despliegue de aplicaciones usando Git ¿Cómo usar Git? Si estamos usando alguna distribucion Linux basada en Debian/Ubuntu podemos ocupar los siguientes comandos: sudo apt update sudo apt install git ¿Cómo usar Git? Si estamos usando un sistema operativo Windows, podemos descargar Git en el siguiente enlace: https://git-scm.com/downloads Configurar Git en local Al momento de que subamos algún cambio, el GitLab recibirá algunos datos, pero estos son los más importantes: git config --global user.name "Gato Tadeo" git config --global user.email tadeo@inf.utfsm.cl Configurar Git en local Podemos chequear si lo configuramos correctamente con el siguiente comando: git config --list ¿Cómo usamos el GitLab de informática? Cuando queramos hacer cualquier acción sobre un repositorio remoto, nos pedirá las credenciales, las cuales tenemos que escribir: Username for 'https://gitlab.labcomp.cl': Password for 'https://tadeo@gitlab.labcomp.cl': Uso básico de Linux Linux tiene algunos comandos útiles que nos permitirán interactuar con el computador de una forma más sencilla, como movernos entre carpetas, crear archivos, entre otros. Lista de comandos básicos cd carpeta/ : Nos mueve a una carpeta indicada ls : Nos permite ver los archivos de la ruta actual cat archivo : Lee el contenido del archivo indicado history : Nos muestra los ultimos comandos utilizados rm : Elimina un archivo (-rf para carpetas) mkdir nombre : Creas una carpeta con ese nombre Empezando con Git Para poder crear un repositorio local y agregar los archivos, asumiendo que estamos dentro de la ruta correcta hay que usar los siguientes comandos: git init git add . git commit -m "Primer commit" Manejar un repositorio remoto En este caso nosotros usaremos el GitLab del departamento de informática, tenemos que crear un repositorio manualmente (en la página) y usar el comando clone: git clone https://gitlab.labcomp.cl/tadeo/miau.git ¿Qué podemos hacer con un repositorio? Supongamos que creamos un archivo y queremos que Git lo tenga en observación para nuestros cambios, sólo tenemos que usar add : git add nombre_archivo Para agregar todos los archivos, simplemente ocupamos . : git add . Guardar los cambios (localmente) Quiero hacer un "checkpoint" de mi progreso actual, podemos hacer un commit: git commit -m "grrr, soy Tadeo" En la practica, normalmente se hace esto: git add . git commit -m "Nuevos cambios :3" Me arrepentí, ¿qué hago? Supongamos que queremos borrar todo lo que hemos hecho y estar en el punto del ultimo commit, esto es muy sencillo y solo es un comando: git reset --hard Esto nos devuelve a la ultima versión subida Guardar los cambios (remoto) Ahora queremos subir los cambios al repositorio remoto, donde todos podemos colaborar, se usa el siguiente comando: git push Descargar los últimos cambios Por ejemplo, si un amigo nuestro modifico el repositorio remoto y nosotros queremos acceder a los últimos cambios, solo usamos el siguiente comando: git pull En ocasiones podemos ocupar, fetch para obtener los cambios modificando lo menos posible el repositorio local git fetch Ver diferencia de los cambios Podemos ver que ha cambiado, en comparacion al ultimo commit, podemos usar: git diff E incluso, podemos ver los cambios de las ultimas dos semanas: git whatchanged --since="2 weeks ago" Ramas Al momento solo hemos trabajado en una sola rama, es decir, la rama principal, pero podemos trabajar en varias ramas al mismo tiempo, ¿cómo se hace? Ejemplo de ramas Crear una rama Podemos crear una rama que se separe de la principal con un nombre que nosotros queramos, por ejemplo: git checkout -b negritausm Al hacer una rama con este comando, nos moveremos automaticamente Moverse a otra rama Podemos movernos a cualquier rama usando checkout , acá un ejemplo: git checkout godzilla Obviamente, para moverse a la rama principal habria que usar: git checkout master ¿Cómo puedo combinar dos ramas? Acá mi recomendacion es hacer un push de la rama que queremos mezclar, luego, en el GitLab hacemos un pull request . Luego de hacer el pull request veremos si existen conflictos, si existen conflictos, los solucionamos. En caso de que no existan conflictos, le hacemos merge manualmente y todos felices No me puedo acostumbrar a la terminal Aunque es altamente recomendable usar la terminal en su futuro estudiantil y laboral. Es una mala costumbre no aprender a usar la terminal. De todas maneras, existe GitHub Desktop, que permite hacer esto con una interfaz grafica: https://desktop.github.com/ Fin de la ayudantia Así es como Tadeo te enseñó Git