Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Servicios de Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Visual Studio 2019 | Visual Studio 2022
Sugerencia
Puede usar la inteligencia artificial para ayudar con las tareas de Azure DevOps. Consulte Habilitar la asistencia de IA con Azure DevOps MCP Server para comenzar.
Al combinar o volver a basar, le indica a Git que integre los cambios realizados en una rama con los cambios realizados en otra. A menudo, Git completa automáticamente una combinación o un rebase sin tu ayuda. Sin embargo, si Git detecta que un cambio realizado en una rama entra en conflicto con un cambio realizado en otro, le pedirá que resuelva el conflicto. Un conflicto de combinación puede producirse cuando las ramas combinadas editan la misma línea de archivo de forma diferente o cuando una rama modifica un archivo y otra rama la elimina. El proceso para resolver conflictos de combinación se aplica tanto a la fusión mediante combinación como a la fusión mediante cambio de base de Git.
Puede resolver conflictos de combinación en Visual Studio o mediante la línea de comandos y cualquier editor de texto.
Para obtener información general sobre el flujo de trabajo de Git, consulte tutorial de Git de Azure Repos.
Prerrequisitos
| Categoría | Requisitos |
|---|---|
| Acceso al proyecto | Miembro de un proyecto. |
| Permisos | - Ver código en proyectos privados: al menos acceso básico. - Clonar o contribuir al código en proyectos privados: ser miembro del grupo de seguridad Contribuidores o contar con los permisos correspondientes en el proyecto. - Establecer permisos de rama o repositorio: administre permisos para la rama o el repositorio. - Establezca directivas de rama, comprobaciones de estado o cambie la rama predeterminada: edite el permiso de directivas para el repositorio o rama o la pertenencia al grupo de seguridad administradores de Project. - Importar un repositorio: miembro del grupo de seguridad de Administradores de proyecto o repositorio Git a nivel de proyecto Crear repositorio con la opción Permitir. Para obtener más información, consulte Establecimiento de permisos de repositorio de Git. |
| Servicios | Repositorios habilitados. |
| Herramientas | Optional. Uso de az repos comandos: CLI de Azure DevOps. |
| Categoría | Requisitos |
|---|---|
| Acceso al proyecto | Miembro de un proyecto. |
| Permisos | - Ver código: al menos acceso básico. - Clonar o contribuir al código: Miembro de la Colaboradores grupo de seguridad o los permisos correspondientes en el proyecto. |
| Servicios | Repositorios habilitados. |
Descripción de los conflictos de combinación
El comando Git merge o rebase integra los commits de una rama fuente en tu rama local actual (rama de destino). Git fusión realiza una fusión rápida o una fusión sin avance rápido. La combinación sin avance rápido también se conoce como combinación triple o verdadera. Git rebase es otro tipo de fusión. Estos tipos de combinación se muestran en el diagrama siguiente.
En el caso de la fusión de Git, si la punta de la rama de destino se encuentra en la rama de origen, el tipo de fusión predeterminado será una fusión rápida. De lo contrario, el tipo de combinación predeterminado será una combinación sin avance rápido.
Una combinación de avance rápido nunca puede tener un conflicto de combinación porque Git no aplicará una combinación de avance rápido si el extremo de la rama de destino ha divergido de la rama de origen. De forma predeterminada, Git usa una fusión mediante combinación de avance rápido siempre que sea posible. Por ejemplo, Git aplicará una fusión rápida en una rama local que solo actualizas mediante descarga desde su rama remota equivalente.
Una combinación sin avance rápido genera una nueva rama de destino "confirmación de combinación" que integra los cambios de la rama de origen con los cambios de la 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, el commit C es el último commit 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 los cambios integrados de la rama de origen y de la rama de destino. Los extremos de la 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.
Git rebase reordena el historial de confirmaciones de la rama de destino para que contenga todas las confirmaciones de la rama de origen, seguidas de todas las confirmaciones de la rama de destino desde la última confirmación común. En el diagrama anterior, el commit C es el último commit común en ambas ramas. Otra manera de interpretarlo es que una fusión mediante cambio de base 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. Al igual que con la combinación de avance rápido, una fusión mediante cambio de base no crea una confirmación de combinación. En particular, una fusión mediante cambio de base cambia la secuencia de 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 merge y rebase solo modifican 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 fusión mediante combinación o la fusión mediante cambio de base. O bien, puede cancelar la operación merge/rebase 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.
Cuándo resolver conflictos de fusión
Git merge y Git rebase 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:
- Mantener la rama local
mainactualizada con respecto a su homóloga remota mediante la incorporación de cambios periódica para recuperar cambios y combinar confirmaciones remotas. - Integrar las actualizaciones de la rama local
mainen la rama de características local con una fusión mediante cambio de base o una fusión mediante combinación. - Realice una copia de seguridad del trabajo en la rama de características local insertándola en la rama remota correspondiente.
- Al finalizar la característica, cree una PR para combinar la rama de características remota en la rama
mainremota.
Al integrar con frecuencia los cambios remotos en el repositorio local, puede mantenerse al tanto del trabajo reciente de otros usuarios y resolver rápidamente los conflictos de combinación que surjan.
Resolución de conflictos de combinación
El proceso para resolver conflictos de combinación se aplica tanto a Git merge como a Git rebase. Aunque los pasos siguientes describen cómo resolver conflictos de combinación durante una fusión mediante combinación, puede resolver de forma similar conflictos de fusión mediante cambio de base.
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 una combinación. Ejecute el comando Git pull, que combina un Git fetch con un Git merge.
- Visual Studio 2022
- Visual Studio 2019: menú Git
- Visual Studio 2019: Team Explorer
- Línea de comandos de Git
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 .
En el panel Ramas de la ventana Repositorio de Git , consulte la rama de destino. A continuación, haga clic con el botón derecho en la rama de origen y elija Combinar <rama> de origen en <la rama> de destino.
Visual Studio le notificará si Git detuvo la combinación debido a conflictos. En ese caso, puede resolver los conflictos o cancelar la combinación y volver al estado anterior a la combinación. En la sección Cambios no combinados de la ventana Cambios de Git se enumeran los archivos con conflictos de combinación. Para un archivo con conflictos de combinación en su contenido, haga doble clic en el archivo para abrirlo en el editor de mezcla.
En el editor de mezcla, el panel Entrante muestra la versión del archivo de rama de origen, el panel Actual muestra la versión del archivo de rama de destino y el panel Resultado muestra el archivo de combinación resultante. Para aplicar cambios específicos de la rama de origen o de destino, active la casilla situada junto a las líneas en conflicto que desea conservar. También puede editar directamente el archivo de combinación en el panel Resultado . Elija Aceptar combinación después de resolver todos los conflictos de combinación en el archivo actual. Repita este paso para cada archivo con conflictos de contenido.
Para un archivo que se editó en una rama y se eliminó en la otra, haga clic con el botón derecho en el archivo y seleccione la acción de rama que desee.
En la ventana Cambios de Git, escriba un mensaje de confirmación y elija Confirmar elementos almacenados provisionalmente para completar la combinación, después de resolver todos los conflictos de combinación de todos los archivos.