Git es un sistema de control de versiones distribuido. Lo utilizan principalmente los desarrolladores de software para la gestión del código fuente. Git es un software gratuito y de código abierto y muchas organizaciones grandes lo usan para administrar su enorme base de código.
En este tutorial nos familiarizaremos con Git. Esta será una guía práctica. Este tutorial asume que Git está instalado en su sistema.
Configuración inicial del usuario de Git
Primero tenemos que configurar los ajustes para el usuario de Git. Podemos hacer estas configuraciones para todos los repositorios presentes en el sistema actual o para un repositorio en particular. Entendamos esto con un ejemplo:
Identidad del usuario
En Git podemos especificar la identidad del usuario proporcionando su nombre y dirección de correo electrónico. Esta información se utilizará durante cada operación de confirmación. Ejecute el siguiente comando en la terminal para asignar la identidad:
$ git config --global user.name "Linuxtechi User" $ git config --global user.email "[email protected]"
Editor
Esta configuración configura el editor, que se utilizará al proporcionar el mensaje de confirmación:
$ git config --global core.editor vim
Compresión
Este ajuste configura el nivel de compresión que se utilizará. El rango válido para la compresión es de -1 a 9. El valor -1 indica compresión zlib y es el nivel de compresión predeterminado. El valor 0 significa que no hay compresión, y del 1 al 9 son varias compensaciones de velocidad/tamaño, siendo 9 el más lento.
$ git config --global core.compression 2
Herramienta de diferencias
Esta configuración configura la herramienta de visualización de diferencias. Por ejemplo, el siguiente comando configura vimdiff como una herramienta de comparación:
$ git config --global diff.tool vimdiff
En los comandos anteriores hemos usado –global opción en todas partes, lo que hará que esta configuración sea global. Significa que se aplicará la misma configuración a todos los repositorios presentes en el sistema actual. Para hacer que el repositorio de configuración sea específico, simplemente elimine la opción global.
Configuración de lista
Para enumerar la configuración de Git, ejecute el siguiente comando en la terminal:
$ git config -l
Este comando generará el siguiente resultado:
core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true core.editor=vim core.compression=2 user.name=Linuxtechi User [email protected] diff.tool=vimdiff
Repositorios Git
El repositorio es una ubicación donde se almacena el código fuente. Podemos crear un nuevo repositorio o usar un repositorio existente. Para crear un nuevo repositorio vacío, ejecute el siguiente comando:
$ mkdir my-repo.git $ cd my-repo.git $ git init --bare Initialized empty Git repository in my-repo.git
Este método será útil cuando esté comenzando con un nuevo proyecto. Otro método es utilizar el repositorio existente. Dicho repositorio está alojado en un servidor remoto como GitHub. Para descargar el repositorio remoto, use el comando de clonación de la siguiente manera:
$ git clone https://github.com/linuxtechiuser/my-repo.git
En el comando anterior, el último argumento es la ruta del repositorio remoto.
Flujo de trabajo Git
En esta sección, analizaremos el flujo de trabajo de git.
Introduce nuevos cambios
El primer paso es introducir nuevos cambios. Puede ser la adición de un nuevo archivo o la actualización de archivos existentes. Vamos a crear un nuevo archivo y modificar el archivo existente
$ touch AUTHORS # Create new file $ echo "New Contents" >> README # Update existing file
Comprobar el estado del repositorio
Git es un sistema de seguimiento de contenido, identificará los dos cambios anteriores. Verifiquemos el estado del repositorio:
$ git status -s M README ?? AUTHORS
En la salida anterior, la letra M aparece antes de README, lo que indica que se modificó el archivo existente. Mientras ?? aparece ante AUTORES, lo que indica que se trata de un archivo nuevo y que Git no lo sabe, por lo que dicho archivo se denomina archivo sin seguimiento.
Añadir archivo al conjunto de cambios
Indiquemos a Git que rastree este nuevo archivo. Podemos lograr esto usando el comando agregar. Esta operación comenzará a rastrear los cambios realizados en este archivo.
$ git add AUTHORS
Verifiquemos el estado del repositorio ahora:
$ git status -s A AUTHORS M README
El resultado anterior muestra A antes de AUTORES, lo que indica que este archivo se agregó recientemente en Git. Podemos agregar cualquier cantidad de archivos usando este comando.
Eliminar archivo del conjunto de cambios
Indiquemos a Git que elimine el seguimiento de este archivo recién agregado. Podemos lograr esto usando el comando de reinicio. Esta operación eliminará el archivo del conjunto de cambios
$ git reset AUTHORS $ git status -s M README ?? AUTHORS
El resultado anterior muestra que Git no rastrea el archivo AUTORES.
Confirmar cambios
En Git, los archivos que forman parte del conjunto de cambios formarán una confirmación. Cada confirmación obtendrá una identificación única. Primero creemos un conjunto de cambios
$ git add AUTHORS $ git add README
Ahora confirmemos los cambios en el repositorio local con el mensaje de confirmación. En el siguiente comando, el argumento -m indica un mensaje de confirmación.
$ git commit -m "Updated README and added AUTHORS"
Cuando ejecute el comando anterior, generará el siguiente resultado:
[master 0b124eb] Updated README and added AUTHORS 2 files changed, 1 insertion(+) create mode 100644 AUTHORS
Revisar cambios
En esta sección, analizaremos los comandos que nos permitirán revisar los cambios del repositorio.
Ver registro de confirmaciones
El repositorio puede contener varias confirmaciones de varios autores. Podemos usar el comando de registro para ver todas las confirmaciones disponibles:
$ git log
Cuando ejecute el comando anterior, generará el siguiente resultado:
commit 0b124eb6d0109d837f6f9396c9937406abd3f456 (HEAD -> master) Author: Linuxtechi User <[email protected]> Date: Fri Jul 27 21:06:55 2018 +0530 Updated README and added AUTHORS
Esta es la confirmación que habíamos creado anteriormente. En el comando anterior:
- El ID hexadecimal representa un ID de confirmación
- La sección de autor de la confirmación muestra detalles sobre quién realizó estos cambios
- La sección de fecha muestra la fecha y la hora de la confirmación
Ver registro breve de confirmaciones
El comando anterior mostrará información detallada sobre cada confirmación. Para ver una breve descripción de cada compromiso, use la opción –oneline de la siguiente manera:
$ git log --oneline
Cuando ejecuta el comando anterior, generará el siguiente resultado:
0b124eb (HEAD -> master) Updated README and added AUTHORS
Ver confirmación
El ID de compromiso está asociado con cada conjunto de cambios. Podemos usar esta ID con el comando show para ver el contenido de la confirmación.
$ git show 0b124eb6d0109d837f6f9396c9937406abd3f456
Cuando ejecute el comando anterior, generará el siguiente resultado:
commit 0b124eb6d0109d837f6f9396c9937406abd3f456 (HEAD -> master) Author: Linuxtechi User <[email protected]> Date: Fri Jul 27 21:06:55 2018 +0530 Updated README and added AUTHORS diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/README b/README index 980a0d5..5680123 100644 --- a/README +++ b/README @@ -1 +1,2 @@ Hello World! +New Contents
Ver diferencias
El comando Diff nos permite revisar los cambios antes de crear un conjunto de cambios. El comando Diff muestra las diferencias entre el repositorio y el espacio de trabajo local. Modifiquemos el archivo README y veamos las diferencias
$ echo "Generating diff" >> README $ git diff diff --git a/README b/README index 5680123..3158230 100644 --- a/README +++ b/README @@ -1,2 +1,3 @@ Hello World! New Contents +Generating diff
En el comando anterior:
- El signo + indica cambios que se agregan al archivo
- :el signo indica cambios que se eliminan del archivo
Trabajar con repositorios remotos
Hasta ahora estábamos trabajando solo con el repositorio local. Otros desarrolladores no pueden utilizar los cambios realizados por nosotros, ya que son locales. Por lo tanto, la colaboración de código no es posible. Esta sección describirá los comandos que nos permitirán interactuar con repositorios remotos
Publicar cambios en el repositorio remoto
Podemos publicar cambios locales en el repositorio remoto para que otros desarrolladores puedan usarlo. Antes de publicar los cambios, debemos crear un conjunto de cambios y una confirmación local. Podemos publicar cambios usando el comando push de la siguiente manera:
$ git push
Este comando copia los cambios del espacio de trabajo local al repositorio remoto. En Git, esta operación se conoce como operación de inserción.
Sincronizar el espacio de trabajo con el repositorio remoto
Muchos desarrolladores pueden publicar sus cambios en el espacio de trabajo en un repositorio remoto. Git nos permite descargar esos cambios y sincronizar el espacio de trabajo con el repositorio. Podemos lograr esto usando el comando pull:
$ git pull
En Git, esta operación se conoce como operación de extracción.
Comandos varios de Git
Esta sección trata varios comandos de Git que serán útiles para realizar las tareas diarias:
Modificar la última confirmación
Git nos permite modificar la última confirmación. Podemos usar este método para evitar la creación de una nueva confirmación. Se utiliza principalmente para modificar el mensaje de confirmación anterior. Para modificar la última confirmación, use –amend opción de la siguiente manera:
$ echo "Yet another new change" >> README $ git add README $ git commit --amend -m "This is amended commit
Ahora revisemos el registro de confirmación:
$ git log commit 8bf67aec1d1de87f03ab6aae93940b17826fde1c (HEAD -> master) Author: Linuxtechi User <[email protected]> Date: Fri Jul 27 21:54:55 2018 +0530 This is amended commit
Si observa cuidadosamente el resultado anterior, podemos ver un nuevo mensaje de confirmación, su ID y una nueva marca de tiempo.
Eliminar archivos sin seguimiento
Los archivos sin seguimiento son aquellos que son desconocidos para Git. Podemos eliminar todos los archivos sin seguimiento usando el comando de limpieza.
Vamos a crear algunos archivos sin seguimiento:
$ touch delete-me-1 delete-me-2 delete-me-3
Para eliminar todos los archivos anteriores sin seguimiento, use el comando de limpieza con -f opción de la siguiente manera:
$ git clean -f Removing delete-me-1 Removing delete-me-2 Removing delete-me-3
Tenga en cuenta que este comando eliminará los archivos de forma permanente, por lo tanto, utilícelo con precaución.
Ver confirmaciones de un autor en particular
Si usamos el comando de registro, muestra las confirmaciones de todos los autores. Para ver las confirmaciones de un autor en particular, use la marca de autor de la siguiente manera:
$ git log --author=Linuxtechi
Cuando ejecute el comando anterior, enumerará todas las confirmaciones de los autores de Linuxtechi de la siguiente manera:
commit 8bf67aec1d1de87f03ab6aae93940b17826fde1c (HEAD -> master) Author: Linuxtechi User <[email protected]> Date: Fri Jul 27 21:54:55 2018 +0530 This is amended commit
Ver el historial de cada archivo línea por línea
Para ver el historial línea por línea, podemos usar el comando culpar.
$ git blame README
Cuando ejecute el comando anterior, generará el siguiente resultado:
76294131 (Linuxtechi User 2018-07-27 21:12:11 -0700 1) Hello World! 8bf67aec (Linuxtechi User 2018-07-27 21:54:55 +0530 2) New changes 8bf67aec (Linuxtechi User 2018-07-27 21:54:55 +0530 3) Yet another changes
En el comando anterior:
- La primera columna indica el ID de confirmación
- La segunda columna indica el autor
- La tercera columna indica las marcas de tiempo
- La última columna indica el número de línea y el contenido del archivo
Ver diferencia desde el área de preparación
Cuando crea un conjunto de cambios usando el comando Agregar, el archivo se mueve lógicamente al área de preparación. Veamos con este ejemplo:
$ echo "Let us demonstrate staging area" >> README $ git add README $ git diff
El comando anterior no mostrará ninguna diferencia ya que el archivo se mueve al área de preparación. Usemos la operación por etapas para ver las diferencias:
$ git diff --staged diff --git a/README b/README index 74729a2..8bc5ffd 100644 --- a/README +++ b/README @@ -1,3 +1,4 @@ Hello World! New changes Yet another changes +Let us demonstrate staging area
Conclusión
En este tutorial discutimos las operaciones básicas de Git con ejemplos simples. Este tutorial es un buen punto de partida para los novatos de Git.
Leer más: Aprenda el comando Git con ejemplos prácticos en Linux - Parte 2