Git Commit: una clase magistral


fatmawati achmad zaenuri/Shutterstock.com

El comando de confirmación de Git almacena copias de los cambios de su directorio de trabajo en su repositorio de Git. Pero también se puede usar para modificar compromisos existentes y también para revertir compromisos.

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?

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 es manejado por el add dominio. En realidad, el add comando hace doble servicio, como veremos.

Para mantener un historial de los cambios que se han realizado en el proyecto, periódicamente le pedirá a Git que almacene una instantánea del estado del proyecto, usando el commit dominio. Aquí es donde el add el comando vuelve a aparecer en nuestro flujo de trabajo. usamos el add comando para decirle a Git cuál cambió archivos que queremos tener incluidos en la instantánea. Entonces 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.

Los metadatos relativos a la identidad de los miembros del equipo de desarrollo pueden ser configurados por cada usuario, para evitar proporcionar repetidamente la misma información.

Para configurar su nombre globalmente para todos los repositorios en su computadora, use este comando.

git config --global user.name "Dave McKay"

Configuración del nombre de usuario global de Git

Para verificar que se haya configurado su nombre, use este comando.

git config --global user.name

Comprobación del nombre de usuario global de Git

Si necesita usar un nombre diferente en un repositorio en particular, cambie al directorio del proyecto y use el mismo comando sin el --global opción.

git config user.name "McKay, David"
git config user.name

Establecer un nombre de usuario de Git específico del repositorio

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 configurar una dirección de correo electrónico globalmente o para un solo repositorio al incluir u omitir el --global opción.

git config user.email "[email protected]"
git config --global user.email "[email protected]"
git config user.email
git config --global user.email

Configuración de direcciones de correo electrónico de usuario predeterminadas de Git globales y específicas del repositorio

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 commit El comando hace referencia y usa estos valores mientras opera.

Usando el comando de confirmación

El uso básico de la commit El comando 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 add Comando para preparar el archivo, luego confirmarlo. estamos usando el -m (mensaje de confirmación) para que podamos 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 add jibber.c
git commit -m "Updated help text"

Organizar y confirmar un solo archivo

Si usamos el git log comando 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.

git log

Comprobación del registro del repositorio de Git

Las confirmaciones se muestran en less.

La última confirmación en la parte superior del registro de Git

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 utilizar el -A (todas) opción con add.

Esto organiza automáticamente todos modificado archivos junto con todos actualmente sin seguimiento archivos 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 son remoto del índice.

Claramente, el -A opción puede hacer que sucedan muchas cosas a la vez. El --dry-run La opción le brinda una vista previa de los cambios sin realizarlos realmente.

git add -A --dry-run

Uso de --dry-run para obtener una vista previa de los archivos que se prepararán y no prepararán

En nuestro ejemplo, organizará dos archivos existentes modificados y dos archivos nuevos. Sigamos adelante y usemos el -A opción antes de usar la commit dominio.

git add -A
git commit -m "Enhanced parsing"

Confirmar archivos modificados y recién creados, después de usar la opción agregar -A

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 commit el comando tiene minúsculas -a (todas) la opción. Esto realiza la puesta en escena y la confirmación de archivos en un solo paso.

El commit -a etapas de opciones y compromisos modificados existente archivos, y elimina archivos del índice si se han eliminado de su directorio de trabajo. Él no organizar automáticamente los archivos sin seguimiento.

Como el add comando, el comando de confirmación tiene un --dry-run opción que le permite obtener una vista previa de sus acciones antes de ejecutarlo.

git commit -a --dry-run

Uso de la opción commit -a para obtener una vista previa de los cambios sin realizarlos

Ahora vamos a ejecutar el comando.

git commit -a --dry-run

Usando la opción commit -a para organizar y confirmar en un solo paso

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 y se da cuenta de que no revisó la rama correcta, debe confirmar los 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 Git stash comando para hacer una copia de los cambios. Luego revisaremos la rama correcta y aplicaremos los cambios desde el alijo. Para aplicar los cambios ocultos estamos usando el pop mando en lugar de la apply dominio. El pop El comando aplica los cambios y también los elimina del alijo.

Hemos hecho algunos cambios en nuestro repositorio new-parser rama. Deberían haber sido hechos en el classic-parser rama.

git stash
git checkout classic-parser
git stash pop

Guardar cambios, revisar una rama y aplicar los cambios desde el alijo

Ahora podemos realizar un commity actualice esta rama.

git commit -a -m "Added pre-parser functions"

Confirmar los cambios que se recuperaron del alijo

Si volvemos a la new-parser branch podemos ver que está actualizado, lo que significa que los cambios se han eliminado de su directorio de trabajo, y su repositorio y archivos están sincronizados.

git checkout new-parser
git status

Comprobación del estado de una sucursal para asegurarse de que esté actualizada

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 el --amend opción de 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.

El registro de Git con un tipo resaltado

Para corregir esto, usaremos el --amend opción como esta.

git commit --amend -m "Optimized phrase identification"

Usar la opción commit --amend para corregir un mensaje de confirmación

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.

El registro de Git que muestra 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 preparar el archivo, luego haga una confirmación con el --amend opción. El --no-edit opción significa que no necesitamos proporcionar un nuevo mensaje de confirmación. El mensaje de confirmación anterior se conserva.

git add jibber.c
git commit --amend --no-edit

Enviar un archivo a la confirmación anterior

Eliminación de cambios de una confirmación

Si sin darte cuenta preparaste y confirmaste un archivo que no era tu intención, puedes eliminar ese archivo de la confirmación usando el reset dominio. 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 reset --soft dominio. 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 --soft HEAD~

Enviar el último compromiso de vuelta al área de ensayo

Para eliminar el archivo que no debería haber sido incluido, usamos el reset --mixed dominio. Esto restablece esos cambios nuevamente en el directorio de trabajo, recreando el archivo modificado como un archivo no preparado y no confirmado.

git reset --mixed jibber.c

Eliminación de un archivo del área de ensayo de Git

Necesitamos confirmar los otros archivos que quedan en el índice.

git commit -m "Experimental tweaks"

Confirmar los archivos que permanecen en el área de ensayo

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:

El registro de Git con un identificador de confirmación resaltado

Copie esa referencia y utilícela en el revert dominio:

git revert e5bd4560aef8164c6ca9d6d4620b9db7f66aecc8

Revertir una confirmación identificada por su ID de confirmación

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.

Edición del mensaje de reversión, con el mensaje predeterminado resaltado

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».

La acción de reversión completada, deshaciendo una confirmación completa

Usando git log una vez más, podemos ver que se ha agregado un nuevo compromiso que deshace los cambios del compromiso revertido.

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 la fusión de Git





Source link-39