Utilización de git
Durante el curso utilizaremos git como sistema para gestionar versiones, tanto para presentar ejercicios entregables, como para trabajar en forma grupal.
1) Para poder utilizar git, es necesario disponer de una cuenta en un servidor git (típicamente Gitlab o Github)
En caso de no tener cuenta, abrí una cuenta.
2) Instalación del cliente git (Windows)
Descargar y ejecutar el instalador del cliente Git
Configurar tu nombre de usuario y tu dirección de correo electrónico para que los commits que realices tengan esta información.
git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"
3) Uso de los comandos básicos
Planteamos los siguientes ejercicios.
3.1) Proyecto "clonado"
El proyecto que queremos desarrollar se basa en uno pre-existente, con lo cual crearemos un repositorio propio, importando uno ya desarrollado. En este ejemplo, se asume cuenta de Gitlab.
Para crear nuestro proyecto, ingresamos al repositorio Gitlab y presionamos
"New Project" -> "Import Project" -> "Repository by URL"
En Git repository URL: https://github.com/tarcisiodarocha/C_Hello_World
Username y Password: en blanco (es un repo público)
Project name: hello git
Project URL: https://gitlab.com/[tu_usuario]/hello-git
Visibility Level: Public. A nuestros fines, esto nos evita gestionar credenciales. Cualquier persona puede ver el contenido del repositorio, pero no escribir en él
Con el repositorio ya creado, hacer click en el botón desplegable y copiar la URL debajo de "Clone with HTTPS".
En nuestro Windows, abrir una línea de comando en el directorio donde queremos tener nuestro repositorio y escribimos
git clone https://gitlab.com/[tu_usuario]/hello-git.git
Una vez clonado el repositorio, el repositorio queda ubicado en el directorio hello-git.
Con un editor de texto, modificamos "Hello.c", cambiando el argumento del printf a "Hola git\n".
Asimismo, creamos un archivo README.md cuyo contenido sea:
# Hola Git!!
Grabamos los cambios. Ingresamos al directorio y desde línea de comando ejecutamos
git add .
En Git, los archivos a la vista conforman el "workspace". El comando "add" guarda los cambios en un almacenamiento local llamado "index". Podemos hacer ahí todas las modificaciones al proyecto, sin que impacten en **los** repositorios.
***los*** porque hay dos: el remoto, alojado en Gitlab (o el servidor que sea) y el local.
Una vez que estamos conformes con el contenido del index (compila, etcétera), para pasarlo al repositorio local escribimos
git commit -m "mensaje actualizado"
El texto que sigue al "-m" es un mensaje que quedará vinculado a esta "versión" en el repositorio.
Si refrescamos el contenido en la web de Gitlab, veremos que el repositorio aun no cambió. Esto es porque los cambios están en el
repositorio local y no en el remoto.
Para impactar en el repositorio remoto tipeamos:
git push
Este acceso de escritura necesita credenciales. Git te va a pedir una forma de identificarte, ahí podés elegir usuario y contraseña de Gitlab, o bien que use la autenticación vía browser.
Si ahora volvés a refrescar la página de Gitlab, deberías ver tus cambios.
3.2) Proyecto "forkeado"
Similar al caso anterior, queremos desarrollar a partir de uno proyecto pre-existente, con lo cual crearemos un repositorio propio importando uno ya desarrollado. Pero, a diferencia del caso anterior, queremos mantener nuestro repositorio vinculado al original, con el objetivo de incluir nuestras modificaciones.
El caso más simple es que el fork pertenezca al mismo sitio git. Siguiendo nuestro ejemplo, necesitaríamos cuenta Github. Ingresaremos al repositorio original, es decir https://github.com/tarcisiodarocha/C_Hello_World y ahí tocaremos el botón "Fork",
nos autenticaremos y seleccionaremos el nombre del repositorio de destino (en caso de querer cambiarlo). Al presionar "Create Fork" tenemos una copia del original. A partir de ahí, podemos clonarlo a nuestra computadora y trabajar en él. Eventualmente se puede contribuir al repositorio original, proponiéndole nuestros cambios, a través del botón "Contribute", ya que como mencionamos, el fork retiene un vínculo con el repositorio original.
Qué ocurre si mientras vos trabajaste en unos cambios, un hipotético compañero de trabajo subió (push) los suyos al repositorio? Git no permitirá la operación, hasta que todos los cambios puedan subirse, sin perder nada. Al intentar un git push, recibiremos un mensaje de error sugiriendo usar git pull Si ejecutamos git pull, se intentará mezclar ambos códigos, el del repositorio local con el del remoto en forma automática. Si la mezcla es exitosa (merge), el workspace se actualizará con ese código. A partir de ahí se puede probar la aplicación de nuevo y subirla ahora sin problemas al repositorio local y remoto. Si en cambio, git no puede resolver la mezcla, entonces el usuario deber resolverla a la mano, editando los archivos en cuestión. Git agrega comentarios sobre los mismos archivos no mergeados y es rol del usuario resolver el merge a mano. |
---|