Gitlab Git & Git LFS

De Wiki
Saltar a: navegación, buscar

Una vez realizado todos los pasos de las guías anteriores solo nos queda el empezar a trabajar con nuestro proyecto. Una vez hemos creado nuestro proyecto nuevo nos aparecerá la siguiente guía si es un proyecto vacío, es decir, gitlab nos da 3 opciones para poder subir nuestro primer commit al repositorio.

Uso comandos Git[editar | editar código]

Comandos gitlab .png

El apartado que se muestra en el Git global setup es común, debe realizarse en el ordenador de trabajo. Esto lo que hace es configurar el git para poder subir como el usuario X.

En este caso se ha creado un usuario test y como bien te dice hay que poner ambos los dos comandos mostrados. Como podéis ver he tapado el correo de la segunda línea, ya que hace falta un correo real para poder proceder.

Create a new repository[editar | editar código]

Esta secuencia de comandos es cuando queremos crear un repositorio desde cero, es decir, cogemos una carpeta vacía del ordenador y lo que hacemos es inicializarla con ayuda del git.

Por último creamos un README.md que es lo que se mostrará al entrar al repositorio, normalmente se suele añadir información genérica sobre le proyecto en este apartado, así como las versiones y lo que se crea conveniente.

Fijaros bien el detalle de a que rama haceis el "push", es decir, aquí lo que estamos haciendo en "git push -u origin master" es haciendo un "push" desde origin hacia master. En un futuro si subdividís el proyecto podéis hacer push a distintas ramas.... esto se explicará en otro apartado, pues ahora no es necesario.

Existing folder[editar | editar código]

Con esta secuencia lo que hacemos es inicializar el repositorio remoto de git con una carpeta que ya contiene un proyecto. De esta forma lo que conseguimos es añadir las funcionalidades de git a un proyecto que ya tenemos en el ordenador actualmente. Si no posee un README.md acordaos de ponerlo, es una de las partes visuales y más importantes de un repositorio.

Existing git repository[editar | editar código]

Por último esta secuencia lo que hace es reiniciar un repositorio ya existente. Imaginaos que tenéis un repositorio apuntando a uno inexistente o borrado. Lo que se quiere es hacer que apunte al nuevo repositorio, pues con los comandos que pone, se consigue reiniciar el git para que nuestro proyecto apunte al nuevo repositorio que ponemos.

Git LFS[editar | editar código]

Esta es una de las extensiones más potentes de git, lo que permite es hacer control de versiones en archivos de gran tamaño, los cuales no eran bien soportados con Git.

Utilizando Git LFS[editar | editar código]

Una vez tenemos nuestro repositorio ya configurado con git debemos añadir la extensión git LFS para ello debemos utilizar

1 git lfs install
2 git lfs track "*.iso"


El primer comando lo que hace es inicializar el lfs dentro de nuestro repositorio, y con el segundo lo que hacemos es indicar justamente que haga un track de todos los archivos que terminen en "iso".

Este es un ejemplo, por lo tanto, si queremos hacer lo mismo pero con todas las imágenes jpeg sería volver a llamar al comando de la siguiente forma:

1 git lfs track "*.jpg"

Por último si queremos subir los cambios, debemos utilizar git de manera normal. Un ejemplo podría ser como sigue:

1 git add . #Añade todo lo del directorio
2 git commit -am "Añadimos jpeg y iso con lfs" #Hacemos el commit
3 git push origin master #Hacemos el push final al repositorio

--Nota importante:[editar | editar código]

Para que funcione correctamente el LFS debemos añadir el archivo gitattributes al git, el comando sería

1 git add .gitattributes

Este archivo es el que lleva el control justamente de todos nuestros archivos con LFS. No os preocupéis si intentáis añadir más de una vez el archivo, git lo sabe y por tanto, si intentáis añadirlo por segunda vez, simplemente os ignorará.

Git LFS de un repositorio existente[editar | editar código]

Si por el contrario estamos descargando un git que ya posee LFS y queremos utilizarlo, entonces debemos hacer un fetch desde el master. Esto lo que hace es actualizar nuestra copia local de todos los archivos.

1 git lfs fetch master

NOTA: Si nos da muchos problemas el subir los archivos, por que justamente el servidor nos está pidiendo todo el rato las credenciales del usuario, se puede solulcionar con el siguiente comando

1 git config --global credential.helper 'cache --timeout=3600'

Con este comando le decimos al sistema que nos guarde la clave durante 3600 segundos antes de volver a pedírnosla para el proyecto en sí. Es una forma práctica de no tener que meter la clave continuamente.

File locking (bloqueo de archivos)[editar | editar código]

Esta funcionalidad es muy útil cuando tenemos un archivo complejo que no queremos que se edite. El objetivo es bloquearlo con tu id de usuario, de forma que solo tú o alguien con un permiso superior al tuyo lo pueda desbloquear.

Imaginaos que estamos preparando un proyecto y hay un archivo concreto donde mantenemos los usuarios y sus permisos y no queremos que la gente lo modifique, esta sería una buena forma de proceder para que sea un archivo de solo lectura.

Podemos bloquear los archivos de la siguiente forma

1 git lfs track "*.png" --lockable

De esta forma todos los archivos que terminen en .png estarán bloqueados, de forma que los desarrolladores dentro del proyecto solo tendrán permisos solo lectura. Todo esto se puede comprobar en el archivo .gitattributes, puesto que es donde se logean todos estos apartados. Por ejemplo, con lo escrito anteriormente añadiría la siguiente línea:

*.png filter=lfs diff=lfs merge=lfs -text lockable

Si queremos quitar los permisos de solo lectura y permitir a los miembros del proyecto modificarlo, solo debemos ejecutar el siguiente código

1 git lfs unlock images/banner.png

Aquí por ejemplo, estamos desbloqueando el banner.png del proyecto para que pueda ser editable. Por contrapartida se puede desbloquear también de forma global con el siguiente comando

1 git lfs unlock --id=123

De esta forma, todos los archivos que están bloqueados por el usuario con id=123 serán desbloqueados, esto es útil cuando tenemos una cantidad grande de archivos y no queremos ir uno por uno.

Por último y no menos importante, si eres un Maintainer del proyecto, o el creador, siempre se puede forzar a eliminar los bloqueos en los archivos. Para ello debe utilizarse este comando

1 git lfs unlock --id=123 --force

De esta forma estamos obligando al git a quitar los bloqueos de todos los archivos realizados por el usuario id=123.

Fuente de donde se ha sacado esta información.....[editar | editar código]

https://docs.gitlab.com/ee/workflow/lfs/manage_large_binaries_with_git_lfs.html