Tutorial GIT – Conceptos básicos
¿GIT? Algunos os preguntaréis… ¿Qué es eso? ¿Un grupo de música? ¿Un nuevo planeta? Puede sonar a eso si, pero no… Cuando hablamos de GIT, hablamos de un software de control de versiones. Es posible que hasta aquí sigáis igual… así que voy a explicar un poco a mas a fondo que eso de un software de control de versiones, cómo funciona y qué puedes hacer con GIT exactamente.
¿Qué es un software de control de versiones?
Un sistema de control de versiones, a partir de ahora SCV, es un sistema que te ayuda a tener el control y a gestionar los cambios generados en todos los elementos de nuestro producto o software, en este caso, todos nuestros archivos. Y es posible que penséis que eso podéis hacerlo vosotros mismos… guardando una copia de vuestro proyecto cada cierto tiempo y nombrándolo y versionándolo correctamente. Si, podéis hacerlo, pero un SCV te provee de herramientas y mecanismos mucho mas fiables, potentes y funcionales que una simple copia de seguridad.
Aunque este artículo se enfoque en GIT, existen varios SCV, siendo GIT el mas extendido y usado actualmente. Tan solo tienes que ver su curva de búsqueda en Google Trends para hacerte una idea de su evolución. Hablando de forma genérica los SCV nos aportan y deben de aportarnos lo siguiente:
- Versionado de todos los cambios realizado sobre nuestros archivos
- Registro de quién y cuando realizó los cambios sobre el proyecto
- Recuperación de versiones anteriores
- Almacenamiento de todos los archivos del proyecto
- Comparativa entre diferentes versiones del mismo archivo
- Facilita el trabajo colaborativo
Para el almacenamiento y control se utilizan los repositorios. Cada repositorio contendrá un proyecto independiente, y será el mismo repositorio el que almacene los cambios e histórico de registros.
¿Qué es GIT?
Sabiendo ya lo que es un software de control de versiones, de GIT podemos decir que es software libre, fue creado en el año 2005 por la comunidad Linux, en particular por Linus Torvalds. Desde entonces, su evolución ha sido constante, ha mejorado con cada versión y actualmente es un sistema fiable, robusto, rápido y potente incluso con proyectos de gran tamaño.
Entre las características más relevantes se encuentran (información extraída de Wikipedia):
- Fuerte apoyo al desarrollo no lineal, por ende rapidez en la gestión de ramas y mezclado de diferentes versiones. Git incluye herramientas específicas para navegar y visualizar un historial de desarrollo no lineal. Una presunción fundamental en Git es que un cambio será fusionado mucho más frecuentemente de lo que se escribe originalmente, conforme se pasa entre varios programadores que lo revisan.
- Gestión distribuida. Al igual que Darcs, BitKeeper, Mercurial, SVK, Bazaar y Monotone, Git le da a cada programador una copia local del historial del desarrollo entero, y los cambios se propagan entre los repositorios locales. Los cambios se importan como ramas adicionales y pueden ser fusionados en la misma manera que se hace con la rama local.
- Los almacenes de información pueden publicarse por HTTP, FTP, rsync o mediante un protocolo nativo, ya sea a través de una conexión TCP/IP simple o a través de cifrado SSH. Git también puede emular servidores CVS, lo que habilita el uso de clientes CVS pre-existentes y módulos IDE para CVS pre-existentes en el acceso de repositorios Git.
- Los repositorios Subversion y svk se pueden usar directamente con git-svn.
- Gestión eficiente de proyectos grandes, dada la rapidez de gestión de diferencias entre archivos, entre otras mejoras de optimización de velocidad de ejecución.
- Todas las versiones previas a un cambio determinado, implican la notificación de un cambio posterior en cualquiera de ellas a ese cambio (denominado autenticación criptográfica de historial). Esto existía en Monotone.
- Resulta algo más caro trabajar con ficheros concretos frente a proyectos, eso diferencia el trabajo frente a CVS, que trabaja con base en cambios de fichero, pero mejora el trabajo con afectaciones de código que concurren en operaciones similares en varios archivos.
- Los renombrados se trabajan basándose en similitudes entre ficheros, aparte de nombres de ficheros, pero no se hacen marcas explícitas de cambios de nombre con base en supuestos nombres únicos de nodos de sistema de ficheros, lo que evita posibles, y posiblemente desastrosas, coincidencias de ficheros diferentes en un único nombre.
- Realmacenamiento periódico en paquetes (ficheros). Esto es relativamente eficiente para escritura de cambios y relativamente ineficiente para lectura si el reempaquetado (con base en diferencias) no ocurre cada cierto tiempo.
Cómo funciona – Conceptos básicos
Lo primero, os dejo un enlace a la documentación de GIT. Suponiendo que trabajamos sobre Windows, lo primero será descargarnos la última versión e instalarla en nuestro equipo. Es un paso sencillo que no debe de dar complicaciones. Recordad que tendréis que añadir al PATH de vuestro equipo la carpeta donde hayamos instalado nuestro software.
Si no sabéis como, os dejo unas pequeñas instrucciones para hacerlo sobre Windows 10:
Ir a Panel de Control -> Sistema y seguridad -> Sistema -> Configuración avanzada del sistema… Y hacer click sobre “Variables de entorno…”. Una vez dentro, en variables de sistema, buscamos “Path”, y añadimos el directorio donde hayamos instalado nuestro GIT.
Una vez tenemos listo nuestro entorno, entonces podemos a empezar a conocer los comandos básicos.
git init
Este comando lo ejecutaremos dentro del directorio que queremos crear como repositorio. Lo que hará, será crear una carpeta llamada .git, con todo lo necesario para el correcto funcionamiento.
Ahora procedemos a añadir todos los archivos del proyecto a nuestro repositorio:
git add .
Una vez añadidos todos nuestros archivos, lo que haremos será hacer nuestro primer commit. Con esta acción llamada commit, lo que estamos haciendo es guardar todos los cambios realizados, con su correspondiente mensaje. Esto guardará, que cambios se han realizado, quién los ha realizado y el cuando.
git commit -m "My first commit"
Una vez guardados todos nuestros cambios, tendríamos que hacer push sobre nuestro repositorio. Pero antes, tendremos que definir cual es nuestro repositorio remoto. Tenemos varias opciones, como pueden ser Bitbucket o Github. Una vez creado nuestro repositorio, obtendremos una url que apunte a el, y una vez la tengamos ejecutamos la siguiente linea:
git remote add origin youruser@yourserver.com:/path/to/my_project.git
Y una vez definido…
git push origin master
De esta forma, ya tendremos nuestro código almacenado en nuestro servidor GIT, a salvo, y de manera que puedas compartirlo fácilmente con tus compañeros.
Lo aconsejable es trabajar sobre ramas paralelas a master, y que siempre sea la rama master la que está en producción. En un próximo post, hablaré sobre el concepto de ramas en git.
Como clonar un repositorio
En muchas ocasiones, nos ponen a nuestra disposición código de terceros para utilizar en nuestros proyectos, y cada vez mas en repositorios GIT. Por lo que, para poder descargar nuestra propia copia, basta con ejecutar el siguiente comando:
git clone https://github.com/libgit2/libgit2
Siendo “https://github.com/libgit2/libgit2” el repositorio. Esto nos crearía una nueva carpeta llamada libgit2, pero podemos modificar la carpeta destino, simplemente añadiéndola al final de nuestra sentencia:
git clone https://github.com/libgit2/libgit2 nuestracarpeta
Y ya para terminar, si queremos clonar una rama concreta, deberemos de modificar nuestro comando de la siguiente manera:
git clone -b <rama> <repositorio>
Pudiendo ser:
git clone -b develop https://github.com/libgit2/libgit2
En un siguiente post, hablaré sobre el sistema de ramas y lo fácil que es tener varias versiones independientes de nuestro propio proyecto.
Autor: Francisco Redondo. Antes Desarrollador Full Stack en Yunbit.
Otros artículos de la categoría Actualidad
Problemas más comunes en la gestión de almacenes para la pequeña y mediana empresa
La gestión de almacén es la piedra angular en muchos de los negocios españoles; ya que una buena gestión de almacén va a ayudar fundamentalmente a evitar pérdidas y... [+]
- Autor: Publicaciones
- Categorías: Actualidad, Gestión empresarial
Sistemas Informáticos de Facturación (SIF): «Sistemas de emisión de facturas verificables» o «Sistemas VERI*FACTU».
Tras la publicación del Real Decreto 1007/2023, de 5 de diciembre, por el que se aprueba el Reglamento que establece los requisitos que deben adoptar los sistemas y programas... [+]
- Autor: Publicaciones
- Categorías: Actualidad
La importancia de gestionar desde el enfoque de seguridad de la información
Ahora que, en muchas ocasiones, la tecnología no supone un límite y que la IA está entrando a formar parte de nuestras vidas; debemos de destinar esfuerzos en aplicar... [+]
- Autor: Publicaciones
- Categorías: Actualidad, Yunbit
Novedades y mejoras junio 2024
Yunbit ERP Yunbit SGA Yunbit RRHH Yunbit Business Cloud
- Autor: María Cumplido
- Categorías: Actualidad, Novedades
Excelente Tutorial, directo al grano.