GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Cómo funciona Git?

Introducción

Git es el sistema de control de versiones descentralizado más popular del mundo. Tener una buena comprensión de Git es esencial si desea codificar y trabajar en un proyecto de desarrollo de software colaborativo.

En este artículo, aprenderá cómo funciona Git y cómo usar sus funciones cruciales.

Requisitos previos

  • Git instalado y configurado (consulte cómo instalar Git en Windows, instalar Git en Mac, instalar Git en Ubuntu, instalar Git en CentOS 7 o instalar Git en CentOS 8)

¿Cómo funciona Git?

Git permite a los usuarios realizar un seguimiento de los cambios de código y administrar su proyecto mediante comandos simples.

El corazón de Git es un repositorio solía contener un proyecto. Un repositorio se puede almacenar localmente o en un sitio web, como GitHub. Git permite a los usuarios almacenar varios repositorios diferentes y realizar un seguimiento de cada uno de ellos de forma independiente.

A lo largo del desarrollo, el proyecto tiene varios puntos de guardado, llamados confirmaciones. . El historial de confirmaciones contiene todas las confirmaciones, es decir, los cambios implementados en el proyecto durante el desarrollo. Una confirmación le permite revertir o avanzar rápidamente el código a cualquier confirmación en el historial de confirmación.

Git usa hashes SHA-1 para referirse a las confirmaciones. Cada hash único apunta a una confirmación particular en el repositorio. Usando hashes, Git crea una estructura similar a un árbol para almacenar y recuperar datos fácilmente.

Los archivos de cada proyecto de Git pasan por varias etapas:

  • Directorio de trabajo . Archivos modificados, pero sin seguimiento y aún no listos para la confirmación.
  • Directorio provisional . Agregar archivos modificados al entorno de prueba significa que están listos para la confirmación.
  • Comprometidos . Instantáneas de archivos del área de ensayo guardadas en el historial de confirmaciones.

El siguiente diagrama muestra el flujo de trabajo básico de Git:

Las siguientes secciones explican las funciones de Git en detalle.

Puesta en escena

Cuando desee que Git realice un seguimiento de los cambios que ha realizado en un determinado archivo, debe agregarlo al área de preparación. Git reconoce cuando modificas un archivo pero no lo rastrea a menos que lo prepares . El área de preparación representa una capa de seguridad que le permite revisar los cambios antes de confirmarlos.

Estar en el área de preparación es un requisito previo para que los archivos se confirmen más tarde, es decir, se implementen en la rama maestra. Puede verificar qué archivos rastrea Git ejecutando:

git status

Para agregar un archivo al área de preparación, use la siguiente sintaxis:

git add [filename]

Reemplace el [filename] sintaxis con el nombre real del archivo.

Por ejemplo:

Si cambia de opinión, puede eliminar un archivo del área de ensayo. Para eliminar un archivo, use la siguiente sintaxis:

git rm --cached [filename]

Por ejemplo:

Hacer compromisos

Una confirmación representa un punto de guardado para su trabajo, una instantánea de su código en un momento determinado. Agregar archivos al área de ensayo significa que están listos para confirmarse.

Para verificar si tiene algún archivo listo para confirmar, ejecute:

git status

Por ejemplo:

Aquí vemos que tres archivos están listos para la confirmación. Para confirmarlos, use la siguiente sintaxis:

git commit -m "Notes about the commit"

Cada confirmación debe tener una descripción especificada después de -m flag, que luego te ayudará a saber de qué se trataba el compromiso.

Por ejemplo:

El resultado contiene la confirmación y establece lo que se cambió.

Puedes consultar tu historial de confirmaciones ejecutando:

git log

El resultado muestra un registro de todas las confirmaciones que ha realizado, quién realizó la confirmación, la fecha y las notas de confirmación. Agregando el --oneline flag muestra el historial de confirmaciones condensado en una línea. Omitir la bandera muestra un historial detallado de confirmaciones.

Revertir

Si ha cometido errores durante el desarrollo de su proyecto o desea revertir una confirmación por algún motivo, git revert le permite hacerlo.

El git revert El comando revierte una confirmación en particular, es decir, deshace la confirmación que realizó para eliminar los cambios de la rama principal.

La sintaxis es:

git revert [commit_ID]

Encuentre ID de confirmación ejecutando git log . El código de 7 caracteres es el ID de confirmación.

El siguiente ejemplo demuestra el git revert comando:

El git reset comando permanentemente te lleva de vuelta a un cierto punto en el desarrollo. Todos los archivos y cambios agregados después de ese momento no se preparan si desea volver a agregarlos.

Advertencia: Usa git reset solo si está completamente seguro de que desea deshacer/eliminar partes de su código, ya que esta acción es irreversible.

La sintaxis es:

git reset [commit_ID]

Especificando el --hard flag elimina los archivos no almacenados, lo que hace imposible recuperarlos.

Bifurcación

Una bifurcación es una copia completa de un repositorio existente que te permite hacer cambios y experimentar sin afectar el proyecto original. La bifurcación es una forma de que alguien proponga cambios en un proyecto existente, o puede ser un punto de partida para un proyecto propio si el código es de código abierto.

Si desea proponer un cambio o una corrección de errores para un proyecto, puede bifurcar un repositorio, realizar la corrección y realizar una solicitud de extracción al propietario del proyecto.

El siguiente diagrama ilustra cómo funciona la bifurcación:

Para bifurcar un repositorio, sigue los pasos a continuación:

1. Inicie sesión en su cuenta de GitHub.

2. Visite la página del repositorio en GitHub y haga clic en Fork opción.

3. Espere a que se complete el proceso de bifurcación. Cuando termine, tendrás una copia del repositorio en tu cuenta de GitHub.

4. El siguiente paso es tomar la URL del repositorio del Código y clone el repositorio en su máquina local.

5. Clone el repositorio usando la siguiente sintaxis:

git clone [repository URL]

Introduce la URL en lugar de [repository URL] sintaxis.

Por ejemplo:

En este ejemplo, hemos creado una bifurcación del springmvc-raml-plugin repositorio, y ahora somos libres de implementar nuestros cambios o comenzar a construir un nuevo complemento sobre el existente.

Bifurcación

La ramificación es una función de Git que permite a los desarrolladores trabajar en una copia del código original para corregir errores o desarrollar nuevas funciones. Al trabajar en una rama, los desarrolladores no afectan a la rama maestra hasta que quieran implementar los cambios.

La rama maestra generalmente representa la versión estable de su código, que se libera o publica. Es por eso que debe evitar agregar nuevas funciones y código nuevo a la rama maestra si son inestables.

La ramificación crea un entorno aislado para probar las nuevas funciones y, si te gustan, puedes fusionarlas en la rama maestra. Si algo sale mal, puede eliminar la rama y la rama maestra permanece intacta.

La ramificación facilita la programación colaborativa y permite que todos trabajen en su parte del código simultáneamente.

El siguiente diagrama es una representación visual de la bifurcación en Git:

La sintaxis para crear una nueva rama en Git es:

git branch [branch-name]

Introduzca un nombre para su sucursal en lugar de [branch-name] sintaxis. Por ejemplo:

En este ejemplo, creamos una nueva rama llamada feature-1 .

Fusión y Conflictos

git merge El comando permite a los desarrolladores que trabajan en una nueva característica o una corrección de errores en una rama separada para fusionar sus cambios con la rama principal después de que finalicen. Fusionar los cambios significa implementarlos en la rama principal.

Los desarrolladores pueden ingresar sus cambios usando git merge sin tener que enviar su trabajo a todos los que trabajan en el proyecto.

Para ver sus sucursales existentes, ejecute:

git branch -a

Para este tutorial, hemos creado una rama separada llamada feature-1 . Para fusionar la característica-1 rama con el maestro rama, siga los pasos a continuación:

1. Cambie a la rama principal. git merge El comando requiere que esté en la rama de recepción de combinación. Ejecute el siguiente comando para cambiar a la rama maestra:

git checkout master

2. Después de cambiar a la rama maestra, use la siguiente sintaxis para fusionar sus cambios:

git merge [branch-name]

Introduzca el nombre de su sucursal en lugar de [branch-name] sintaxis.

Por ejemplo:

Git ingresa automáticamente sus cambios en la rama maestra, visible para cualquier persona que trabaje en el proyecto.

Sin embargo, a veces puede encontrarse con merge conflictos .

Por ejemplo, se produce un conflicto si alguien decide realizar ediciones en la rama maestra mientras está trabajando en otra rama. Este tipo de conflicto ocurre porque desea fusionar sus cambios con la rama maestra, que ahora es diferente de su copia de código.

Nuestra guía detallada ofrece varios métodos diferentes para resolver conflictos de fusión en Git.

Obtención/extracción de cambios

El git fetch y git pull ambos comandos se utilizan para recuperar cambios del repositorio remoto.

La diferencia es que git fetch solo recupera los metadatos del repositorio remoto pero no transfiere nada a su repositorio local. Solo le permite saber si hay cambios disponibles desde su última extracción.

En el siguiente ejemplo, git fetch nos informa que hay algunos cambios en el repositorio remoto, pero nada ha cambiado en el repositorio local:

Por otro lado, git pull también busca cambios nuevos en el repositorio remoto y trae esos cambios a su repositorio local.

Entonces, git pull hace dos cosas con un comando:un git fetch y un git merge . El comando descarga los cambios realizados en su rama actual y actualiza el código en su repositorio local.

Por ejemplo:

En este resultado, vemos que era un tipo de combinación de avance rápido y que Git sacó un archivo al repositorio local - README.md .

Impulsar cambios

El git push comando hace lo contrario de git pull , lo que le permite compartir sus cambios y publicarlos en el repositorio remoto.

Cuando realice cambios localmente y desee enviarlos a un repositorio remoto, ejecute:

git push

Por ejemplo:

Si ha creado una nueva rama localmente, que no existe de forma remota, el comando devuelve un error al intentar enviar los cambios:

Git ofrece la solución en la salida. Ejecute el comando especificado en la salida para impulsar su rama río arriba:

Rebasado

Cuando creas una rama, Git crea una copia del código existente para que lo desarrolles más. En ocasiones, es posible que deba incorporar nuevos cambios de la rama maestra para mantenerse al día con el desarrollo general.

La reorganización implica implementar nuevos cambios desde la rama maestra en su rama de funciones. Eso significa que Git reproduce los nuevos cambios de la rama maestra, creando confirmaciones en la parte superior de la punta de su rama de características.

Siga estos pasos para reorganizar su rama de características:

1. Vaya a la rama de características usando git checkout . La sintaxis es:

git checkout [branch-name]

2. Ejecute el siguiente comando para reorganizar su rama:

git rebase master

El siguiente diagrama muestra cómo funciona la función de rebase:


Ubuntu
  1. ¿Cómo funciona Awk '!a[$0]++'?

  2. ¿Cómo funciona la punta adhesiva?

  3. Ssh:¿cómo funciona TCP-keepalive en Ssh?

  4. ¿Cómo limitar el tamaño del archivo en la confirmación?

  5. ¿Cómo funciona el comando ps?

¿Qué es el DNS inverso y cómo funciona?

¿Cómo funciona SFTP?

Git Revert Commit:cómo deshacer la última confirmación

Cómo deshacer la última confirmación en Git

¿Qué es Docker? ¿Como funciona?

¿Cómo funciona el intercambio de memoria en Linux?