Git Commit: una clase magistral
Publicado: 2023-02-26 Un requisito básico de cualquier sistema de control de versiones es almacenar diferentes versiones de archivos para usted. En Git, el comando que hace esto es commit
. Aquí está todo lo que necesitas saber.
¿Qué es un compromiso en Git?
Configuración del comando de confirmación
Usando el comando de confirmación
Un compromiso básico
Archivos de almacenamiento automático
Puesta en escena y compromiso al mismo tiempo
Comprometerse con una sucursal diferente
Hacer cambios en las confirmaciones
Eliminación de cambios de una confirmación
Revertir una confirmación completa
La navaja suiza Git
¿Qué es un compromiso en Git?
Los compromisos son la serie de instantáneas realizadas a lo largo del ciclo de vida de un proyecto que conforman su historial de desarrollo. Los compromisos son los que nos permiten extraer una versión del proyecto tal como era en diferentes puntos en el pasado. ¿Por qué es eso importante?
Los sistemas de control de versiones (VCS) se usan más comúnmente con el código fuente del software y los proyectos de desarrollo. Pero se pueden usar con éxito con cualquier colección de archivos de texto, como los archivos Markdown que contienen capítulos de un libro.
Es posible que no desee que el VCS maneje todos los archivos en los directorios de su proyecto, por lo que debe poder designar los archivos cuya versión desea controlar. Esto los agrega a la vista de control de versiones del proyecto. Serán monitoreados por cambios.
Otra forma de lograr esto es usar una lista de ignorados. Esto le dice a Git qué archivos, directorios o tipos de archivos debe ignorar siempre.
Con el tiempo, a medida que se agreguen nuevos archivos al proyecto, será necesario agregar algunos al sistema de control de versiones. En Git, esto se maneja con el comando add
. En realidad, el comando add
hace un doble servicio, como veremos.
Para mantener un historial de los cambios realizados en el proyecto, periódicamente le pedirá a Git que almacene una instantánea del estado del proyecto mediante el comando commit
. Aquí es donde vuelve a aparecer el comando add
en nuestro flujo de trabajo. Usamos el comando add
para decirle a Git qué archivos modificados queremos incluir en la instantánea. Luego usamos commit
para decirle a Git que cree la instantánea.
Configuración del comando de confirmación
La información sobre la confirmación se almacena con él, por lo que siempre es posible saber quién realizó la confirmación, cuándo y qué contiene. Algunos de estos metadatos se capturan en el momento de la confirmación, como el mensaje de confirmación.
Cada usuario puede configurar los metadatos relativos a la identidad de los miembros del equipo de desarrollo, para evitar que proporcione repetidamente la misma información.
Para configurar su nombre globalmente para todos los repositorios en su computadora, use este comando.
git config --usuario global.nombre "Dave McKay"
Para verificar que se haya configurado su nombre, use este comando.
git config --usuario global.nombre
Si necesita usar un nombre diferente en un repositorio en particular, cambie al directorio del proyecto y use el mismo comando sin la opción --global
.
git config nombre de usuario "McKay, David"
git config usuario.nombre
Ahora tenemos un nombre de usuario predeterminado diferente para este repositorio, y nuestro nombre global todavía se usa para otros repositorios.
De manera similar, podemos establecer una dirección de correo electrónico globalmente o para un solo repositorio al incluir u omitir la opción --global
.
git config usuario.email "[email protected]"
git config --usuario global.email "[email protected]"
git config usuario.email
git config --usuario global.email
Estos ajustes se guardan en archivos de configuración. La configuración global de Git se mantiene en "~/.gitconfig", y la configuración específica del repositorio se mantiene en el archivo ".git/config" del repositorio.
El comando commit
hace referencia y usa estos valores mientras opera.
Usando el comando de confirmación
El uso básico del comando commit
es tomar los archivos que se encuentran en el área de preparación, conocida como índice, y almacenarlos como una confirmación en la rama actual del repositorio.
Un compromiso básico
Tenemos un proyecto con un archivo modificado. Usaremos el comando add
para preparar el archivo y luego confirmarlo. Usamos la opción -m
(mensaje de confirmación) para poder proporcionar una breve descripción del propósito de los cambios. Si no usamos esta opción, se nos solicita un mensaje de confirmación cuando se lleva a cabo la confirmación. Es más conveniente agregar uno en la línea de comando.
git agregar jibber.c
git commit -m "Texto de ayuda actualizado"
Si usamos el comando git log
podemos revisar los detalles de las confirmaciones, en orden cronológico, con la confirmación más reciente en la parte superior de la lista.
registro de git
Las confirmaciones se muestran en less
.
La confirmación se ha etiquetado con el nombre y la dirección de correo electrónico que proporcionamos anteriormente, y nuestro mensaje de confirmación también se registra.
Archivos de almacenamiento automático
La preparación de muchos archivos puede llevar un poco de tiempo. Un enfoque diferente es usar la opción -A
(todos) con add
.
Esto organiza automáticamente todos los archivos modificados junto con todos los archivos actualmente sin seguimiento . La preparación de archivos sin seguimiento respeta la configuración de su archivo ".gitignore". Git no organizará los archivos que le hayas dicho que no quieres que se incluyan. Finalmente, los archivos en el índice que ya no están en el directorio de trabajo se eliminan del índice.
Claramente, la opción -A
puede hacer que sucedan muchas cosas a la vez. La opción --dry-run
le brinda una vista previa de los cambios sin realizarlos realmente.
git add -A --ejecución en seco
En nuestro ejemplo, organizará dos archivos existentes modificados y dos archivos nuevos. Avancemos y usemos la opción -A
antes de usar el comando commit
.
git añadir -A
git commit -m "Análisis mejorado"
Podemos ver que en total se modifican cuatro archivos. Dos de ellos son los archivos recién creados, que se enumeran.
Puesta en escena y compromiso al mismo tiempo
El comando commit
tiene una opción minúscula -a
(todos). Esto realiza la puesta en escena y la confirmación de archivos en un solo paso.
La opción commit -a
organiza y confirma los archivos existentes modificados y elimina los archivos del índice si se han eliminado de su directorio de trabajo. No organiza automáticamente los archivos sin seguimiento.
Al igual que el comando add
, el comando confirmar tiene una opción --dry-run
que le permite obtener una vista previa de sus acciones antes de ejecutarlo.
git commit -a --ejecución en seco
Ahora vamos a ejecutar el comando.
git commit -a --ejecución en seco
Los archivos están organizados y comprometidos para nosotros.
Comprometerse con una sucursal diferente
Si ha realizado algunos cambios en los archivos de su directorio de trabajo, entonces se da cuenta de que no revisó la rama correcta, necesita confirmar sus cambios en la rama correcta sin afectar la rama actual.
Git no tiene un comando para comprometerse con una rama diferente. Pero puedes rectificar esta situación con un poco de destreza Git.
Usaremos el comando stash
de Git para hacer una copia de los cambios. Luego revisaremos la rama correcta y aplicaremos los cambios desde el alijo. Para aplicar los cambios ocultos, usamos el comando pop
en lugar del comando apply
. El comando pop
aplica los cambios y también los elimina del alijo.
Hicimos algunos cambios en la rama new-parser
de nuestro repositorio. Deberían haberse hecho en la rama classic-parser
.
alijo de git
git checkout analizador clásico
git escondite pop
Ahora podemos realizar una commit
y actualizar esta rama.
git commit -a -m "Funciones previas al analizador agregadas"
Si volvemos a la rama new-parser
podemos ver que está actualizada, lo que significa que los cambios se han eliminado de su directorio de trabajo y su repositorio y archivos están sincronizados.
git checkout nuevo analizador
estado de Git
RELACIONADO: Cómo actualizar y mantener ramas separadas de Git
Hacer cambios en las confirmaciones
Si necesita mejorar su mensaje de confirmación, tal vez haya detectado un error tipográfico en él, o si olvidó preparar un archivo que debería haberse incluido en la confirmación, puede usar la opción --amend
para arreglar las cosas. La advertencia es que esto no debe usarse en confirmaciones que se han enviado a un repositorio remoto.
En nuestro último mensaje de confirmación, "fraze" debería haber sido "frase". Si usamos git log
podemos ver esto.
Para corregir esto, usaremos la opción --amend
como esta.
git commit --amend -m "Identificación de frase optimizada"
Si usamos git log
una vez más, podemos ver que la confirmación anterior ha sido reemplazada por una nueva con el mensaje de confirmación corregido.
Si queremos agregar un archivo que olvidamos preparar, podemos confirmar ese archivo para que aparezca como parte de la confirmación anterior.
Usaremos add
para organizar el archivo, luego haremos una confirmación con la opción --amend
. La opción --no-edit
significa que no necesitamos proporcionar un nuevo mensaje de confirmación. El mensaje de confirmación anterior se conserva.
git agregar jibber.c
git commit --enmendar --no-editar
Eliminación de cambios de una confirmación
Si sin darte cuenta preparaste y confirmaste un archivo que no tenías la intención, puedes eliminar ese archivo de la confirmación usando el comando reset
. Restableceremos la confirmación de nuevo al área de ensayo o índice. Luego, eliminaremos el archivo y volveremos a confirmar el resto de los archivos.
Para restablecer la última confirmación en el área de preparación, usamos el comando reset --soft
. HEAD~
es la abreviatura de "el compromiso detrás del HEAD de la línea de tiempo del compromiso del proyecto", o en inglés, "el último compromiso".
git reset --cabeza blanda~
Para eliminar el archivo que no debería haberse incluido, usamos el comando reset --mixed
. Esto restablece esos cambios nuevamente en el directorio de trabajo, recreando el archivo modificado como un archivo no preparado y no confirmado.
git reset --jibber mixto.c
Necesitamos confirmar los otros archivos que quedan en el índice.
git commit -m "Ajustes experimentales"
Los otros dos archivos que estaban en la confirmación original se vuelven a confirmar para nosotros.
RELACIONADO: Cómo corregir, editar o deshacer confirmaciones de Git (cambio del historial de Git)
Revertir una confirmación completa
A veces, deshacer una confirmación completa es lo más fácil de hacer. Devuelve el directorio de trabajo y el repositorio al estado en el que se encontraban antes de confirmar.
Necesitamos usar el ID de referencia hash de la confirmación. Podemos encontrar esto usando git log
:
Copie esa referencia y utilícela en el comando revert
:
git revertir e5bd4560aef8164c6ca9d6d4620b9db7f66aecc8
Esto abrirá su editor predeterminado para que pueda editar un mensaje de reversión. Hay un mensaje predeterminado ingresado para usted. Puede usar esto o editarlo a su gusto.
Cuando esté satisfecho con su mensaje de reversión, guarde el archivo y salga del editor. En nano, haces esto con "Ctrl+O" y "Ctrl+X".
Usando git log
una vez más, podemos ver que se ha agregado una nueva confirmación que deshace los cambios de la confirmación revertida.
La navaja suiza Git
Obviamente, commit
es uno de los comandos Git más importantes. Puede hacer mucho, así que hay mucho que aprender. Familiarizarse con sus funciones menos utilizadas es tiempo bien invertido. Cuando necesite corregir un error, ahora mismo, se alegrará de haberse preparado con anticipación.
RELACIONADO: Cómo usar Git merge