Git sucintamente cambios de grabación

Mantener una serie de revisiones "seguras" de un proyecto es la función principal de cualquier sistema de control de versiones. Git logra esto al grabar instantáneas de un proyecto. Después de grabar una instantánea, puede regresar y ver versiones anteriores, restaurarlas y experimentar sin el temor de destruir la funcionalidad existente..

Los usuarios de SVN y CVS deben tener en cuenta que esto es fundamentalmente diferente de la implementación de su sistema. Ambos programas registran diferencias para cada archivo, un registro incremental de los cambios en un proyecto. En contraste, las instantáneas de Git son solo eso.-instantáneas. Cada confirmación contiene la versión completa de cada archivo que contiene. Esto hace que Git sea increíblemente rápido, ya que el estado de un archivo no necesita generarse cada vez que se solicita:


Grabación de instantáneas completas, no de diferencias entre revisiones.

Este capítulo presenta el flujo de trabajo básico para crear instantáneas utilizando el directorio de trabajo, el área de preparación y el historial confirmado. Estos son los componentes centrales del control de revisión basado en Git..


El area de puesta en escena

El área de preparación de Git le da un lugar para organizar un compromiso antes de agregarlo al historial del proyecto. Puesta en escena es el proceso de mover los cambios del directorio de trabajo a la instantánea por etapas.


Componentes implicados en la puesta en escena de un commit.

Te da la oportunidad de elegir y elegir. relacionado cambios desde el directorio de trabajo, en lugar de confirmar todo de una vez. Esto significa que puedes crear lógico instantáneas sobre cronológico unos Esto es una bendición para los desarrolladores porque les permite separar las actividades de codificación de las actividades de control de versiones. Cuando está escribiendo características, puede olvidarse de dejar de cometerlas en trozos aislados. Luego, cuando haya terminado con su sesión de codificación, puede separar los cambios en tantas confirmaciones como desee a través del escenario.

Para agregar archivos nuevos o modificados desde el directorio de trabajo al área de preparación, use el siguiente comando:

 git añadir 

Para eliminar un archivo de un proyecto, debe agregarlo al área de almacenamiento como un archivo nuevo o modificado. El siguiente comando realizará la eliminación y dejará de rastrear el archivo, pero no eliminará el archivo del directorio de trabajo:

 git rm --cached 

Inspeccionando el escenario

Ver el estado de su repositorio es una de las acciones más comunes en Git. El siguiente comando genera el estado del directorio de trabajo y del área de preparación:

 estado de git

Esto dará como resultado un mensaje similar al siguiente (ciertas secciones pueden omitirse dependiendo del estado de su repositorio):

 # En la rama maestra # Los cambios se deben confirmar: # # nuevo archivo: foobar.txt # # Los cambios no se prepararon para el compromiso: # # modificado: foo.txt # # Archivos sin seguimiento: # # bar.txt

La primera sección, "Los cambios que se confirmarán" es su instantánea preparada. Si fueras a correr git commit En este momento, solo estos archivos se agregarán al historial del proyecto. La siguiente sección enumera rastreado Archivos que no se incluirán en la próxima confirmación. Finalmente, "Archivos sin seguimiento" contiene archivos en su directorio de trabajo que no se han agregado al repositorio.

Generando diferencias

Si necesita información más detallada sobre los cambios en su directorio de trabajo o área de preparación, puede generar una diferencia con el siguiente comando:

 git diff

Esto produce una diferencia de cada sin etapas Cambio en su directorio de trabajo. También puedes generar un diff de todos. escenificado cambia con el --en caché bandera:

 git diff --cached

Tenga en cuenta que el historial del proyecto está fuera del alcance de estado de git. Para mostrar instantáneas confirmadas, necesitará registro de git.


Componentes en el ámbito de estado de git

Se compromete

Los compromisos representan cada versión guardada de un proyecto, lo que los convierte en la unidad atómica del control de versiones basado en Git. Cada confirmación contiene una instantánea del proyecto, su información de usuario, la fecha, un mensaje de confirmación y una Suma de comprobación SHA-1 de todo su contenido:

 cometer b650e3oln31aba05fa62d6f6d064e7ca02b5ee1b Autor: john  Fecha: miércoles 11 de enero 00:45:10 2012 -0600 Algunos mensajes de confirmación

Esta suma de comprobación sirve como ID única de un compromiso, y también significa que un compromiso será Nunca estar corrompido o alterado involuntariamente sin que Git lo sepa.

Dado que el área de preparación ya contiene el conjunto de cambios deseado, la confirmación no requiere ninguna participación del directorio de trabajo.


Componentes involucrados en cometer una instantánea

Para confirmar la instantánea por etapas y agregarla al historial de la rama actual, ejecute lo siguiente:

 git commit

Se le presentará un editor de texto y se le pedirá un "mensaje de confirmación". Los mensajes de compromiso deben tener la siguiente forma:

   

Git usa la primera línea para formatear la salida del registro, enviar parches por correo electrónico, etc., por lo que debe ser breve, al tiempo que describe todo el conjunto de cambios. Si no puede llegar a la línea de resumen, probablemente significa que su confirmación contiene demasiados cambios no relacionados. Deberías volver atrás y dividirlos en comillas distintas. El resumen debe ir seguido de una línea en blanco y una descripción detallada de los cambios (por ejemplo, por qué realizó los cambios, a qué número de boleto corresponde).


Inspecciones de compromisos

Al igual que el estado de un repositorio, ver su historial es una de las tareas más comunes en el control de versiones de Git. Puede visualizar las confirmaciones de la rama actual con:

 registro de git

Ahora tenemos las únicas dos herramientas que necesitamos para inspeccionar cada componente de un repositorio Git.


Salida de estado de git vs. registro de git

Esto también nos da una agrupación natural de comandos:

  • Etapa / Directorio de trabajo: git añadir, git rm, estado de git
  • Historia comprometida: git commit, registro de git

Configuraciones útiles

Git proporciona una gran cantidad de opciones de formato para registro de git, algunos de los cuales se incluyen aquí. Para mostrar cada confirmación en una sola línea, use:

 registro de git --oneline

O, para apuntar el historial de un archivo individual en lugar de todo el repositorio, use:

 registro de git --oneline 

Filtrar la salida del registro también es muy útil una vez que su historial crece más allá de una pantalla llena de confirmaciones. Puede usar lo siguiente para mostrar las confirmaciones contenidas en pero no en . Ambos argumentos pueden ser un ID de confirmación, un nombre de rama o una etiqueta:

 registro de git ... 

Finalmente, puede mostrar una diferencia de los cambios en cada confirmación. Esto es útil para ver qué archivos se vieron afectados por un compromiso en particular.

 git log --stat

Para visualizar la historia, es posible que también desee ver el gitk comando, que en realidad es un programa separado dedicado a graficar ramas. correr git ayuda gitk para detalles.


Etiquetado de compromisos

Las etiquetas son simples punteros a las confirmaciones, y son increíblemente útiles para marcar revisiones importantes como las publicaciones públicas. los git tag El comando se puede usar para crear una nueva etiqueta:

 git tag -a v1.0 -m "versión estable"

los -una opción le dice a Git que cree una anotado etiqueta, que le permite grabar un mensaje junto con él (especificado con -metro).

Ejecutar el mismo comando sin argumentos mostrará una lista de sus etiquetas existentes:

 git tag

Esta lección representa un capítulo de Git sucintamente, un libro electrónico gratuito del equipo en Syncfusion.