Búsqueda de sitios web

Cómo utilizar el sistema de control de versiones Git en Linux [Guía completa]


El Control de versiones (control de revisión o control de fuente) es una forma de registrar cambios en un archivo o colección de archivos a lo largo del tiempo para que pueda recuperar versiones específicas más adelante. Un sistema de control de versiones (o VCS para abreviar) es una herramienta que registra los cambios en los archivos de un sistema de archivos.

Existen muchos sistemas de control de versiones, pero Git es actualmente el más popular y el más utilizado, especialmente para la gestión del código fuente. En realidad, el control de versiones se puede utilizar para casi cualquier tipo de archivo en una computadora, no solo para el código fuente.

Los sistemas/herramientas de control de versiones ofrecen varias características que permiten a individuos o a un grupo de personas:

  • crear versiones de un proyecto.
  • realizar un seguimiento de los cambios con precisión y resolver conflictos.
  • fusionar cambios en una versión común.
  • revertir y deshacer cambios en archivos seleccionados o en un proyecto completo.
  • acceder a versiones históricas de un proyecto para comparar los cambios a lo largo del tiempo.
  • vea quién modificó por última vez algo que podría estar causando un problema.
  • crear una copia de seguridad externa segura de un proyecto.
  • utilice varias máquinas para trabajar en un solo proyecto y mucho más.

Un proyecto bajo un sistema de control de versiones como Git tendrá principalmente tres secciones, a saber:

  • un repositorio: una base de datos para registrar el estado o los cambios en los archivos de su proyecto. Contiene todos los metadatos y objetos de Git necesarios para el nuevo proyecto. Tenga en cuenta que esto es normalmente lo que se copia cuando clona un repositorio desde otra computadora en una red o servidor remoto.
  • un directorio o área de trabajo: almacena una copia de los archivos del proyecto en los que puede trabajar (realizar adiciones, eliminaciones y otras acciones de modificación).
  • un área de preparación: un archivo (conocido como índice en Git) dentro del directorio de Git, que almacena información sobre los cambios, que está listo para enviar (guardar el estado de un archivo o conjunto de archivos) en el repositorio.

Hay dos tipos principales de VCS, siendo la principal diferencia la cantidad de repositorios:

  • Sistemas de control de versiones centralizados (CVCS): aquí cada miembro del equipo del proyecto obtiene su propio directorio de trabajo local; sin embargo, confirman los cambios en un solo repositorio central.
  • Sistemas de control de versiones distribuidas (DVCS): en virtud de esto, cada miembro del equipo del proyecto obtiene su propio directorio de trabajo local y un directorio Git donde puede realizar confirmaciones. Después de que un individuo realiza una confirmación local, otros miembros del equipo no pueden acceder a los cambios hasta que los envíe al repositorio central. Git es un ejemplo de DVCS.

Además, un repositorio Git puede ser bare (un repositorio que no tiene un directorio de trabajo) o no-bare (uno con un directorio de trabajo). directorio). Los repositorios compartidos (o públicos o centrales) siempre deben estar vacíos: todos los repositorios de Github están vacíos.

Aprenda el control de versiones con Git

Git es un sistema de control de versiones gratuito y de código abierto, rápido, potente, distribuido, fácil de usar y popular que es muy eficiente con proyectos grandes y tiene un notable sistema de ramificación y fusión. Está diseñado para manejar datos más como una serie de instantáneas de un mini sistema de archivos, que se almacena en un directorio de Git.

El flujo de trabajo en Git es muy simple: realiza modificaciones en los archivos en su directorio de trabajo y luego agrega selectivamente solo aquellos archivos que han cambiado al área de preparación para que formen parte de su próxima confirmación.

Una vez que esté listo, realiza una confirmación, que toma los archivos del área de preparación y guarda esa instantánea de forma permanente en el directorio de Git.

Para instalar Git en Linux, utilice el comando apropiado para la distribución que elija:

sudo apt install git   [On Debian/Ubuntu]
sudo yum install git   [On CentOS/RHEL]

Después de instalar Git, se recomienda que le digas a Git quién eres proporcionando tu nombre completo y dirección de correo electrónico, de la siguiente manera:

git config --global user.name “Aaron Kili”
git config --global user.email “[email ”

Para verificar su configuración de Git, use el siguiente comando.

git config --list 

Crea un nuevo repositorio Git

Los repositorios compartidos o flujos de trabajo centralizados son muy comunes y eso es lo que demostraremos aquí. Por ejemplo, asumimos que se le ha asignado la tarea de configurar un repositorio central remoto para que los administradores/programadores de sistemas de varios departamentos de su organización trabajen en un proyecto llamado bashscripts, que se almacenará en /projects/scripts/ en el servidor.

SSH en el servidor remoto y cree el directorio necesario, cree un grupo llamado sysadmins (agregue todos los miembros del equipo del proyecto a este grupo, por ejemplo, administrador de usuarios) y establezca los permisos apropiados en este directorio.

mkdir-p /projects/scripts/
groupadd sysadmins
usermod -aG sysadmins admin
chown :sysadmins -R /projects/scripts/
chmod 770 -R /projects/scripts/

Luego inicialice un repositorio de proyecto simple.

git init --bare /projects/scripts/bashscripts

En este punto, ha inicializado con éxito un directorio Git que es la instalación de almacenamiento central para el proyecto. Intente hacer una lista del directorio para ver todos los archivos y directorios que contiene:

ls -la /projects/scripts/bashscripts/

Clonar un repositorio Git

Ahora clone el repositorio Git compartido remoto en su computadora local a través de SSH (también puede clonar a través de HTTP/HTTPS si tiene un servidor web instalado y configurado adecuadamente, como es el (caso de la mayoría de los repositorios públicos en Github), por ejemplo:

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts 

Para clonarlo en un directorio específico (~/bin/bashscripts), use el siguiente comando.

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts ~/bin/bashscripts

Ahora tiene una instancia local del proyecto en un repositorio no básico (con un directorio de trabajo), puede crear la estructura inicial del proyecto (es decir, agregar un README.md archivo , subdirectorios para diferentes categorías de scripts, por ejemplo, recon para almacenar scripts de reconocimiento, sysadmin para almacenar scripts de sysadmin, etc.):

cd ~/bin/bashscripts/
ls -la

Verifique un resumen de estado de Git

Para mostrar el estado de su directorio de trabajo, utilice el comando de estado que le mostrará los cambios que haya realizado; qué archivos no están siendo rastreados por Git; esos cambios que se han escenificado y demás.

git status 

Cambios y compromiso de Git Stage

A continuación, prepare todos los cambios utilizando el comando agregar con el modificador -A y realice la confirmación inicial. El indicador -a indica al comando que prepare automáticamente los archivos que se han modificado, y -m se utiliza para especificar un mensaje de confirmación:

git add -A
git commit -a -m "Initial Commit"

Publicar confirmaciones locales en el repositorio Git remoto

Como líder del equipo del proyecto, ahora que ha creado la estructura del proyecto, puede publicar los cambios en el repositorio central usando el comando push como se muestra.

git push origin master

En este momento, su repositorio git local debería estar actualizado con el repositorio central del proyecto (origen); puede confirmarlo ejecutando el comando de estado una vez más.

git status

También puede informar a sus colegas que comiencen a trabajar en el proyecto clonando el repositorio en sus computadoras locales.

Crear una nueva rama de Git

La ramificación le permite trabajar en una característica de su proyecto o solucionar problemas rápidamente sin tocar el código base (rama maestra). Para crear una nueva rama y luego cambiar a ella, use los comandos branch y checkout respectivamente.

git branch latest
git checkout latest

Alternativamente, puede crear una nueva rama y cambiar a ella en un solo paso usando el comando de pago con el indicador -b.

git checkout -b latest

También puedes crear una nueva rama basada en otra rama, por ejemplo.

git checkout -b latest master

Para verificar en qué rama se encuentra, use el comando de rama (un carácter de asterisco indica la rama activa):

git branch

Después de crear y cambiar a la nueva rama, realice algunos cambios en ella y realice algunas confirmaciones.

vim sysadmin/topprocs.sh
git status
git commit add  sysadmin/topprocs.sh
git commit -a -m 'modified topprocs.sh'

Fusionar cambios de una rama a otra

Para fusionar los cambios de la prueba de rama en la rama maestra, cambie a la rama maestra y realice la fusión.

git checkout master 
git merge test 

Si ya no necesita una rama en particular, puede eliminarla usando el modificador -d.

git branch -d test

Descargar cambios desde el repositorio central remoto

Suponiendo que los miembros de su equipo hayan enviado cambios al repositorio central del proyecto, puede descargar cualquier cambio a su instancia local del proyecto usando el comando pull.

git pull origin
OR
git pull origin master	#if you have switched to another branch

Inspeccionar el repositorio de Git y realizar comparaciones

En esta última sección, cubriremos algunas características útiles de Git que realizan un seguimiento de todas las actividades que ocurrieron en su repositorio, permitiéndole así ver el historial del proyecto.

La primera característica es el registro de Git, que muestra los registros de confirmación:

git log

Otra característica importante es el comando mostrar que muestra varios tipos de objetos (como confirmaciones, etiquetas, árboles, etc.):

git show

La tercera característica vital que necesita conocer es el comando diff, que se utiliza para comparar o mostrar diferencias entre ramas, mostrar cambios entre el directorio de trabajo y el índice, cambios entre dos archivos en el disco y mucho más.

Por ejemplo, para mostrar la diferencia entre la rama maestra y la más reciente, puede ejecutar el siguiente comando.

git diff master latest

Lea también: Las 10 mejores alternativas de Git para alojar proyectos de código abierto

Resumen

Git permite que un equipo de personas trabajen juntas usando los mismos archivos, mientras registran los cambios en los archivos a lo largo del tiempo para que puedan recuperar versiones específicas más adelante.

De esta manera, puedes usar Git para administrar el código fuente, archivos de configuración o cualquier archivo almacenado en una computadora. Es posible que desee consultar la documentación en línea de Git para obtener más documentación.