Compartir a través de


Actualización del código con captura, combinación y extracción

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Visual Studio 2019 | Visual Studio 2022

Cuando hay varios colaboradores en un proyecto, mantenga actualizado el repositorio de Git local descargando e integrando el trabajo que otros usuarios cargaron en el repositorio remoto del proyecto. Estos comandos de Git actualizan el repositorio local:

  • Git fetch descarga las confirmaciones nuevas que otros usuarios cargaron en el repositorio remoto. Las ramas de seguimiento remoto de la caché del repositorio local se actualizan; las ramas locales permanecen sin cambios.
  • La combinación de Git integra confirmaciones de una o varias ramas de origen en una rama de destino.
  • Git rebase integra confirmaciones de una rama de origen en una rama de destino, pero usa una estrategia diferente a la combinación de Git.
  • La extracción de Git realiza una captura y, a continuación, una combinación o una base de datos para integrar confirmaciones capturadas en la rama local actual.

Visual Studio usa un subconjunto de esos comandos de Git al sincronizar el repositorio local con un repositorio remoto.

Para obtener información general sobre el flujo de trabajo de Git, consulte tutorial de Git de Azure Repos.

En este artículo se proporcionan procedimientos para las siguientes tareas:

  • Descarga de cambios con fetch
  • Actualización de ramas con combinación o rebase
  • Descarga de cambios y actualizaciones de ramas con extracción

Descarga de cambios con fetch

Git fetch descarga confirmaciones de rama remota y objetos de archivo a los que se hace referencia que no existen en el repositorio local y actualiza las ramas de seguimiento remoto en la caché del repositorio local. Las ramas de seguimiento remoto se almacenan en caché localmente copias de solo lectura de ramas remotas y no son las ramas locales. La captura de Git no actualiza las ramas locales. Por ejemplo, si un repositorio remoto designado por tiene una origin rama, git fetch actualizará la rama de seguimiento remoto denominada bugfix3 y no la rama localorigin/bugfix3.bugfix3 Puede usar ramas de seguimiento remoto para:

  • Compare una rama de seguimiento remoto con una rama local para revisar los cambios capturados.
  • Combinar una rama de seguimiento remoto en una rama local.
  • Cree una nueva rama local desde una rama de seguimiento remoto.

Visual Studio 2022 proporciona una experiencia de control de versiones de Git mediante el menú Git , Cambios de Git y a través de menús contextuales en el Explorador de soluciones. La versión 16.8 de Visual Studio 2019 también ofrece la interfaz de usuario de Git de Team Explorer . Para obtener más información, consulte la pestaña Visual Studio 2019 - Team Explorer .

  1. En la ventana Cambios de Git , elija Capturar. A continuación, seleccione saliente/entrante para abrir la ventana Repositorio de Git .

    Captura de pantalla de los botones Capturar y el vínculo Entrante en la ventana Cambios de Git de Visual Studio 2019.

    También puede elegir Capturar en el menú Git.

    Captura de pantalla de la opción Capturar en el menú git de Visual Studio 2019.

  2. En la ventana Repositorio de Git , las confirmaciones capturadas aparecen en la sección Entrante . Seleccione una confirmación capturada para ver la lista de archivos modificados en esa confirmación. Seleccione un archivo modificado para ver una vista de diferencias del contenido cambiado.

    Captura de pantalla del menú Repositorio de Git en Visual Studio 2019.

Sugerencia

Fetch no eliminará las ramas de seguimiento remoto en la memoria caché del repositorio local que ya no tengan un homólogo remoto. Para configurar Visual Studio para eliminar ramas obsoletas de seguimiento remoto durante una captura:

  • Seleccione Opciones de herramientas>Configuración> global de Gitde control>de código fuente.
  • Establezca la opción Prune remote branches during fetch (Eliminar ramas remotas durante la captura) en .True

Después de una captura de Git, puede comparar una rama local con su rama de seguimiento remoto correspondiente para ver lo que ha cambiado en la rama remota. Si decide actualizar la rama local actual con cambios capturados, puede realizar una combinación de Git o una base de datos. O bien, puede ejecutar la extracción de Git, que combina una captura de Git con una combinación de Git o una rebase. Tanto la combinación de Git como la rebase de Git actualizan una rama de destino aplicando confirmaciones de una rama de origen a ella. Sin embargo, la combinación de Git y git vuelven a usar estrategias diferentes. Para obtener más información, consulte Actualización de ramas con combinación o rebase y Cuándo volver a base frente a combinación.

Actualización de ramas con combinación o rebase

La combinación de Git y la rebase de Git integran confirmaciones de una rama de origen en la rama local actual (rama de destino). La combinación de Git realiza una combinación rápida o una combinación sin avance rápido . La combinación sin avance rápido también se conoce como combinación triple o combinación verdadera . La rebase de Git es otro tipo de combinación. Estos tipos de combinación se muestran en el diagrama siguiente.

Diagrama que muestra las confirmaciones antes y después al usar merge y rebase.

La combinación de Git y la rebase de Git se usan ampliamente en el flujo de trabajo de Git. Al trabajar en una característica local o una rama de corrección de errores, es habitual:

  1. Mantenga la rama local main actual con su homólogo remoto mediante la extracción periódica para capturar y combinar confirmaciones remotas.
  2. Integre las actualizaciones de rama local main en la rama de características local mediante una rebase o combinación.
  3. Realice una copia de seguridad del trabajo en la rama de características local mediante la inserción en la rama remota correspondiente.
  4. Al finalizar la característica, cree una solicitud de incorporación de cambios para combinar la rama de características remota en la rama remota main .

Este enfoque le ayuda a:

  • Manténgase al tanto del trabajo reciente de otros usuarios que podrían afectar a su trabajo.
  • Resuelva rápidamente los conflictos entre su trabajo y el de otros.
  • Aplique la nueva característica sobre el contenido del proyecto de up-to-date.
  • Obtenga una revisión de la solicitud de incorporación de cambios del trabajo.

Fusionar

En el caso de la combinación de Git, si existe la sugerencia de la rama de destino dentro de la rama de origen, el tipo de combinación predeterminado será una combinación de avance rápido. De lo contrario, el tipo de combinación predeterminado será una combinación sin avance rápido.

Una combinación de Git de avance rápido nunca puede tener un conflicto de combinación porque Git no aplicará una combinación de avance rápido si la sugerencia de la rama de destino se ha divergido de la rama de origen. De forma predeterminada, Git usa una combinación de avance rápido siempre que sea posible. Por ejemplo, Git aplicará una combinación de avance rápido en una rama local que solo actualice mediante la extracción de su rama equivalente remota.

Una combinación de Git sin avance rápido genera una nueva rama de destino "merge commit" que integra los cambios de rama de origen con los cambios de rama de destino. Los cambios aplicables son los realizados después de la última confirmación que es común a ambas ramas. En el diagrama anterior, commit C es la última confirmación común en ambas ramas. Si algún cambio de rama de origen entra en conflicto con cualquier cambio de rama de destino, Git le pedirá que resuelva el conflicto de combinación. La confirmación de combinación (L) contiene la rama de origen integrada y los cambios de la rama de destino. Las sugerencias de rama de origen y destino (K y E) son los elementos primarios de la confirmación de combinación. En el historial de confirmaciones de la rama, una confirmación de combinación es un marcador útil para una operación de combinación y muestra claramente qué ramas se combinaron.

La combinación de Git solo modifica la rama de destino; la rama de origen permanece sin cambios. Cuando encuentre uno o varios conflictos de combinación, debe resolverlos para completar la combinación. O bien, puede cancelar la operación de combinación y devolver la rama de destino a su estado anterior.

Para obtener más información sobre las opciones y estrategias de combinación, consulte el manual de referencia de Git y las estrategias de combinación de Git.

Sugerencia

Si la rama de origen es una rama de seguimiento remoto, asegúrese de que la rama esté up-to-date ejecutando una captura de Git antes de la combinación.

  1. Elija Administrar ramas de Git > en la barra de menús para abrir la ventana Repositorio de Git.

    Captura de pantalla de la opción Administrar ramas en el menú Git de Visual Studio 2019.

  2. En la ventana Repositorio de Git , haga clic con el botón derecho en la rama de destino y seleccione Desproteger.

    Captura de pantalla de la opción Desprotección en la ventana Repositorio de Git de Visual Studio 2019.

  3. Haga clic con el botón derecho en la rama de origen y seleccione Combinar <rama> de origen en <la rama> de destino.

    Captura de pantalla de la opción Combinar en la ventana Repositorio de Git de Visual Studio 2019.

  4. Visual Studio mostrará un mensaje de confirmación después de una combinación correcta.

    Captura de pantalla del mensaje de confirmación de combinación en la ventana Repositorio de Git de Visual Studio 2019.

    Si la combinación se detiene debido a conflictos de combinación, Visual Studio le notificará. Puede resolver los conflictos o cancelar la combinación y volver al estado de combinación previa.

    Captura de pantalla del mensaje de conflicto de combinación en la ventana Repositorio de Git de Visual Studio 2019.

Rebase

La base de Git vuelve a ejecutar el historial de confirmaciones de la rama de destino para que contenga todas las confirmaciones de rama de origen, seguidas de todas las confirmaciones de rama de destino desde la última confirmación común. Otra manera de verlo es que una base de Git reproduce los cambios en la rama de destino sobre el historial de la rama de origen. Si algún cambio de rama de origen entra en conflicto con cualquier cambio de rama de destino, Git le pedirá que resuelva el conflicto de combinación. Git rebase no crea una confirmación de combinación. En concreto, Git rebase cambia la secuencia de las confirmaciones de la rama de destino existente, que no es el caso de las otras estrategias de combinación. En el diagrama anterior, la confirmación K' contiene los mismos cambios que K, pero tiene un nuevo identificador de confirmación porque se vincula a la confirmación E en lugar de C.

Git rebase solo modifica la rama de destino; la rama de origen permanece sin cambios. Cuando encuentre uno o varios conflictos de combinación, debe resolverlos para completar la base. O bien, puede cancelar la operación de rebase y devolver la rama de destino a su estado anterior.

Si es la única persona que trabaja en la rama de característica o de corrección de errores, considere la posibilidad de usar la base de git para integrar nuevas main confirmaciones de rama en ella. De lo contrario, use la combinación de Git. Para obtener más información sobre la rebase de Git y cuándo usarlo, consulte Aplicación de cambios con rebase y Rebase frente a combinación.

Sugerencia

Si la rama de origen es una rama de seguimiento remoto, asegúrese de que la rama esté up-to-date mediante la ejecución de una captura de Git antes de la rebase.

  1. Elija Administrar ramas de Git > para abrir la ventana Repositorio de Git.

    Captura de pantalla de la opción Administrar ramas en el menú Git de Visual Studio 2019.

  2. En la ventana Repositorio de Git , haga clic con el botón derecho en la rama de destino y seleccione Desproteger.

    Captura de pantalla de la opción Desprotección en el menú contextual de la rama en la ventana Repositorio de Git de Visual Studio 2019.

  3. Haga clic con el botón derecho en la rama de origen y seleccione Rebase <target-branch en >source-branch<>.

    Captura de pantalla de la opción Rebase en el menú contextual de la rama en la ventana Repositorio de Git de Visual Studio 2019.

  4. Visual Studio mostrará un mensaje de confirmación después de una base correcta.

    Captura de pantalla del mensaje de confirmación de rebase en la ventana Repositorio de Git de Visual Studio 2019.

    Si la rebase se detiene debido a conflictos de combinación, Visual Studio le notificará. Puede resolver los conflictos o cancelar la base de datos y volver al estado anterior a la base.

    Captura de pantalla del mensaje de conflicto de rebase en la ventana Repositorio de Git de Visual Studio 2019.

Descarga de cambios y actualizaciones de ramas con extracción

De forma predeterminada, la extracción de Git combina una captura de Git y una combinación de Git para actualizar la rama local actual desde su homólogo remoto. Opcionalmente, la extracción de Git puede realizar una rebase de Git en lugar de una combinación de Git.

A diferencia de la captura de Git, la extracción de Git actualizará la rama local actual inmediatamente después de descargar nuevas confirmaciones desde el repositorio remoto. Use git pull cuando sepa que desea actualizar la rama local actual justo después de una captura de Git.

Sugerencia

Para configurar Visual Studio para que se vuelva a base en lugar de combinar al extraer:

  1. En el menú Git, vaya a Herramientas>Opciones decontrol de código fuente> global de Git>
  2. Establezca la rama local Rebase al extraer la opción en True.
  1. En la ventana Cambios de Git , elija Extraer.

    Captura de pantalla del botón Extraer de la ventana Cambios de Git de Visual Studio 2019.

    También puede elegir Extraer en el menú Git.

    Captura de pantalla de la opción Extracción en el menú Git de Visual Studio 2019.

  2. Se muestra un mensaje de confirmación cuando se completa la operación de extracción.

    Captura de pantalla del mensaje de confirmación de extracción en la ventana Cambios de Git en Visual Studio 2019.

    Si hay conflictos durante la parte de combinación de la operación de extracción, Visual Studio le notificará. Puede resolver los conflictos o cancelar la combinación y volver al estado de combinación previa.

    Captura de pantalla del mensaje de conflicto de extracción en la ventana Cambios de Git en Visual Studio 2019.

Nota:

En Visual Studio, Sync realiza una extracción y, a continuación, una inserción para sincronizar una rama local y remota. Para obtener más información sobre la sincronización, consulte Uso de git fetch, pull, push and sync para el control de versiones en Visual Studio.

Pasos siguientes