Ejecución de operaciones de Git en carpetas de Git de Databricks (Repositorios)

En el artículo se describe cómo realizar operaciones comunes de Git en el área de trabajo de Databricks mediante carpetas de Git, incluida la clonación, la bifurcación, la confirmación y la inserción.

Clonar un repositorio conectado a un repositorio de Git remoto

  1. En la barra lateral, seleccione Área de trabajo y, después, explorador a la carpeta donde desea crear el clon del repositorio de Git.

  2. Haga clic en la flecha abajo situada a la derecha de Agregar en la esquina superior derecha del área de trabajo y seleccione Carpeta Git en la lista desplegable.

    Agregue UI de repositorio.

  3. En el cuadro de diálogo Crear carpeta Git, proporcione la siguiente información:

    • Dirección URL del repositorio de Git que desea clonar, en el formato https://example.com/organization/project.git
    • Proveedor de Git para el repositorio que desea clonar. Entre las opciones se incluyen GitHub, GitHub Enterprise, GitLab y Azure DevOps (Azure Repos)
    • Nombre de la carpeta del área de trabajo que contendrá el contenido del repositorio clonado
    • Si va a usar o no la desprotección dispersa, en la que solo se clonan los subdirectorios especificados mediante un patrón de cono

    Clone desde la interfaz de usuario de la carpeta Git.

En esta etapa, tiene la opción de clonar solo un subconjunto de los directorios de su repositorio mediante restauración de sparse. Esto es útil si tu repositorio es más grande que los límites soportados por Databricks.

  1. Haga clic en Crear carpeta Git. El contenido del repositorio remoto se clona en el repositorio de Databricks y puede empezar a trabajar con ellos mediante operaciones de Git admitidas a través del área de trabajo.

Procedimiento recomendado: Colaborar en carpetas de Git

Las carpetas de Git de Databricks se comportan eficazmente como clientes de Git insertados en el área de trabajo para que los usuarios puedan colaborar con el control de código fuente basado en Git y el control de versiones. Para que la colaboración en equipo sea más eficaz, use una carpeta de Git de Databricks independiente asignada a un repositorio de Git remoto para cada usuario que trabaje en su propia rama de desarrollo. Aunque varios usuarios pueden contribuir al contenido de una carpeta de Git, solo un usuario designado debe realizar operaciones de Git como extracción, inserción, confirmación y cambio de rama. Si varios usuarios realizan operaciones de Git en una carpeta de Git, la administración de ramas puede ser difícil y propensa a errores, como cuando un usuario cambia una rama y la cambia involuntariamente para todos los demás usuarios de esa carpeta.

Importante

Actualmente no puede usar la CLI de Git para realizar operaciones de Git en una carpeta de Git. Si clona un repositorio de Git mediante la CLI a través del terminal web de un clúster, los archivos no se mostrarán en la interfaz de usuario de Azure Databricks.

Acceso al cuadro de diálogo de Git

Puede acceder al cuadro de diálogo de Git desde un cuaderno o desde el explorador de carpetas de Git de Databricks.

  • Desde un cuaderno, haga clic en el botón situado junto al nombre del cuaderno que identifica la rama Git actual.

    Botón de cuadro de diálogo de Git en el cuaderno.

  • En el explorador de carpetas de Git de Databricks, haga clic en el botón situado a la derecha del nombre del repositorio. También puedes hacer clic con el botón derecho en el nombre del repositorio y seleccionar Git... en el menú.

    Botón de diálogo Git y menú Git en el navegador de repositorios.

Verá un cuadro de diálogo de pantalla completa donde puede realizar operaciones de Git.

Cuadro de diálogo que se usa para realizar operaciones de Git en un área de trabajo de Databricks.

  1. La rama de trabajo actual. Puede seleccionar otras ramas aquí. Si otros usuarios tienen acceso a esta carpeta de Git, al cambiar la rama también se cambiará la rama para ellos si comparten la misma área de trabajo. Consulte un procedimiento recomendado procedimientos recomendados para evitar este problema.
  2. Botón para crear una nueva rama.
  3. La lista de recursos de archivo y subcarpetas activadas en la rama actual.
  4. Un botón que le lleva al proveedor de Git y le muestra el historial de la rama actual.
  5. Botón para extraer contenido del repositorio de Git remoto.
  6. Cuadro de texto donde agrega un mensaje de confirmación y una descripción expandida opcional para los cambios.
  7. El botón para confirmar el trabajo en la rama de trabajo e insertar la rama actualizada en el repositorio de Git remoto.

Haga clic en el Kebab kebab en la esquina superior derecha para elegir entre otras operaciones de rama de Git, como un restablecimiento duro, una combinación o una base de datos.

Menú desplegable en el cuadro de diálogo de carpetas de Git para las operaciones de rama.

Este es el hogar para realizar operaciones de Git en la carpeta Git del área de trabajo. Está limitado a las operaciones de Git presentadas en la interfaz de usuario.

Creación de una rama

Puede crear una nueva rama a partir de una rama existente en el cuadro de diálogo de Git:

Rama nueva del cuadro de diálogo de Git.

Cambio a otra rama

Puede cambiar a (desproteger) otra rama mediante la lista desplegable de ramas en el cuadro de diálogo de Git:

Cambio de cuadro de diálogo de Git a otra rama

Importante

Después de hacer una comprobación de una rama en una carpeta de Git, siempre existe la posibilidad de que otra persona elimine la rama en el repositorio de Git remoto. Si se elimina una rama en el repositorio remoto, la versión local puede permanecer presente en la carpeta Git asociada durante un máximo de 7 días. Las ramas locales de Databricks no se pueden eliminar, por lo que si debe quitarlas, también debe eliminar y volver a incluir el repositorio.

Confirme e inserte estos cambios en el repositorio de Git remoto.

Cuando haya agregado nuevos cuadernos o archivos, o haya realizado cambios en los archivos o cuadernos existentes, la interfaz de usuario de la carpeta Git resalta los cambios.

Cuadro de diálogo de Git con los cambios resaltados.

Agregue un mensaje de confirmación necesario para los cambios y haga clic en Confirmar e insertar para insertar estos cambios en el repositorio de Git remoto.

Si no tiene permiso para confirmar en la rama predeterminada (por ejemplo, la rama main), cree una nueva rama y use la interfaz del proveedor de Git para crear una solicitud de cambios (PR) para combinarla en la rama predeterminada.

Nota:

  • Las salidas del cuaderno no se incluyen en confirmaciones de forma predeterminada cuando los cuadernos se guardan en formatos de archivo de origen (.py, .scala, .sql, .r). Para obtener información sobre cómo confirmar salidas de cuaderno con el formato IPYNB, consulte Control de confirmaciones de artefactos de salida del cuaderno IPYNB

Extracción de cambios del repositorio de Git remoto

Para extraer los cambios del repositorio de Git remoto, haga clic en Pull en el cuadro de diálogo operaciones de Git. Los cuadernos y otros archivos se actualizan automáticamente a la versión más reciente del repositorio de Git remoto. Si los cambios extraídos del repositorio remoto entran en conflicto con los cambios locales en Databricks, debe resolver los conflictos de combinación de.

Importante

Las operaciones de Git que incorporan cambios ascendentes borran el estado del cuaderno. Para más información, consulte Cambios entrantes que borran el estado del cuaderno.

Combinación de ramas

Acceda a la operación combinar de Git seleccionándola en el Kebab kebab en la esquina superior derecha del cuadro de diálogo operaciones de Git.

La función combinar de las carpetas de Git de Databricks combina una rama en otra mediante git merge. Una operación de combinación es una manera de combinar el historial de confirmaciones de una rama en otra; la única diferencia es la estrategia que usa para lograr esto. Para principiantes de Git, se recomienda usar la combinación (sobre la base) porque no requiere forzar la inserción en una rama y, por lo tanto, no vuelve a escribir el historial de confirmaciones.

Para obtener más información sobre las diferencias entre las confirmaciones de combinación y rebasificación, vea documentación de Atlassian sobre el tema.

  • Si hay un conflicto de fusión, resuélvelo en la interfaz de carpetas de Git.
  • Si no hay ningún conflicto, la combinación se inserta en el repositorio de Git remoto mediante git push.

Rebase la rama en otra rama

Para acceder a la operación de Rebase de Git, selecciónela en el Kebab menú kebab de la esquina superior derecha del cuadro de diálogo operaciones de Git.

La fusión mediante cambio de base altera el historial de operaciones commit de una rama. Al igual que git merge, git rebase integra los cambios de una rama en otra. La operación de fusionar mediante cambio de base realiza lo siguiente:

  1. Guarda las confirmaciones en la rama actual en un área temporal.
  2. Restablece la rama actual a la rama elegida.
  3. Vuelve a guardar cada confirmación individual previamente en la rama actual, lo que da lugar a un historial lineal que combina los cambios de ambas ramas.

Para obtener una explicación detallada de la operación de fusionar mediante cambio de base, consulte git rebase.

Advertencia

El uso de una operación de fusionar mediante cambio de base puede provocar problemas de control de versiones para los colaboradores que trabajan en el mismo repositorio.

Un flujo de trabajo común consiste en fusionar mediante cambio de base una rama de características en la rama principal.

Para fusionar mediante cambio de base una rama en otra rama:

  1. En el menú Rama de la interfaz de usuario de carpetas de Git, seleccione la rama que desea volver a base.

  2. Seleccione Fusionar mediante cambio de base en el menú de tres puntos.

    Función git rebase function en el menú de tres puntos.

  3. Seleccione la rama sobre la que desea fusionar mediante cambio de base.

    La operación de fusionar mediante cambio de base integra los cambios de la rama que elija aquí, en la rama actual.

Las carpetas de Git de Databricks se ejecutan git commit y git push --force para actualizar el repositorio de Git remoto.

Resolución de conflictos de combinación

Los conflictos de combinación se producen cuando 2 o más usuarios de Git intentan combinar cambios en las mismas líneas de un archivo en una rama común y Git no puede elegir los cambios “adecuados” que se van a aplicar. Los conflictos de mezcla también pueden producirse cuando un usuario intenta extraer o combinar cambios de otra rama en una rama con cambios no confirmados.

GIF animado que muestra un conflicto de combinación común derivado de cambio pendiente de confirmación durante una extracción de Git

Si una operación como extracción, rebase o combinación provoca un conflicto de combinación, la interfaz de usuario de carpetas de Git muestra una lista de archivos con conflictos y opciones para resolver los conflictos.

Tiene dos opciones principales:

  • Use la interfaz de usuario de carpetas de Git para resolver el conflicto.
  • Anule la operación de Git, descarte manualmente los cambios en el archivo en conflicto e intente de nuevo la operación de Git.

GIF animado que muestra un conflicto de combinación en una interfaz de usuario de carpetas de Git de Databricks

Al resolver conflictos de combinación con la interfaz de usuario de carpetas de Git, debe elegir entre resolver manualmente los conflictos en el editor o mantener todos los cambios entrantes o actuales.

mantener todos los actuales o realizar cambios entrantes

Si sabe que solo desea mantener todos los cambios actuales o entrantes, haga clic en el kebab a la derecha del nombre de archivo en el panel del cuaderno y seleccione Mantener todos los cambios actuales o Realizar todos los cambios entrantes. Haga clic en el botón con la misma etiqueta para confirmar los cambios y resolver el conflicto.

Panel de la interfaz de usuario del cuaderno de Databricks, en el que se muestran las opciones desplegables para la resolución de conflictos de combinación

Sugerencia

¿Confundida acerca de qué opción elegir? El color de cada opción coincide con los cambios de código respectivos que mantendrá en el archivo.

Resolución manual de conflictos

La resolución manual de conflictos permite determinar cuál de las líneas en conflicto se debe aceptar en la combinación. Para los conflictos de combinación, puede resolver el conflicto editando directamente el contenido del archivo con los conflictos.

GIF animado que muestra una resolución manual de un conflicto de combinación

Para resolver el conflicto, seleccione las líneas de código que desea conservar y eliminar todo lo demás, incluidos los marcadores de conflicto de combinación de Git. Cuando haya terminado, seleccione Marcar como resuelto.

Si decide que ha realizado las opciones incorrectas al resolver conflictos de combinación, haga clic en el botón Anular para anular el proceso y deshacer todo. Una vez resueltos todos los conflictos, haga clic en la opción Continue Merge o Continue Rebase para resolver el conflicto y completar la operación.

Gitreset

En las carpetas de Git de Databricks, puede realizar una reset de Git en la interfaz de usuario de Azure Databricks. El restablecimiento de Git en carpetas de Git de Databricks equivale a git reset --hard combinado con git push --force.

El restablecimiento de Git reemplaza el contenido y el historial de la rama por el estado más reciente de otra rama. Puede emplearlo cuando las ediciones estén en conflicto con la rama ascendente y no le importe perder esas modificaciones al restablecer la rama ascendente. Más información sobre Gitreset –hard.

Restablecimiento a una rama ascendente (remota)

Con git reset en este escenario:

  • Debe restablecer la rama seleccionada (por ejemplo, feature_a) a otra rama (por ejemplo, main).
  • También restablezca la rama feature_a ascendente (remota) a main.

Importante

Cuando se restablece, se pierden todos los cambios no confirmados y confirmados en la versión local y remota de la rama.

Para restablecer una rama a una rama remota:

  1. En la interfaz de usuario de carpetas de Git del menú Rama, elija la rama que desea restablecer.

    Selector de rama en la interfaz de usuario de carpetas de Git.

  2. Seleccione Restablecer en el menú de tres puntos.

    Operación restablecer de Git en el menú de tres puntos.

  3. Seleccione la rama que se va a restablecer.

    Cuadro de diálogo de Git reset --hard.

Configuración del modo de desprotección dispersa

La desprotección dispersa es un ajuste del lado cliente que permite clonar y trabajar solo con un subconjunto de los directorios de los repositorios remotos en Databricks. Esto es especialmente útil si el tamaño del repositorio supera los límites admitidos de Databricks.

Puede usar el modo de desprotección dispersa al agregar (clonar) un nuevo repositorio.

  1. En el cuadro de diálogo Agregar carpeta Git, abra Avanzado.

  2. Seleccione Modo de desprotección dispersa.

    Opción de desprotección dispersa en el cuadro de diálogo Agregar carpeta Git.

  3. En el cuadro Patrones de cono, especifique los patrones de desprotección de cono que desee. Separe diferentes patrones por saltos de línea.

En este momento, no puede deshabilitar la desprotección dispersa en un repositorio de Azure Databricks.

Funcionamiento de los patrones de cono

Para comprender cómo funciona el patrón de cono en el modo de desprotección dispersa, consulte el diagrama siguiente que representa la estructura del repositorio remoto.

Estructura del repositorio remoto sin desprotección dispersa.

Si selecciona el modo de desprotección dispersa, pero no especifica un patrón de cono, se aplica el patrón de cono predeterminado. Esto incluye solo los archivos en raíz y ningún subdirectorio, lo que da como resultado una estructura de repositorio como esta:

Desprotección dispersa: patrón de cono predeterminado.

Establecer el patrón de cono de desprotección disperso como parent/child/grandchild se traduce en que todo el contenido del directorio grandchild se incluye de forma recursiva. También se incluyen los archivos en los directorios /parent, /parent/child y raíz. Consulte la estructura de los directorios en el diagrama siguiente:

Desprotección dispersa: especificación del patrón de cono de carpeta principal-terciario-secundario.

Puede agregar varios patrones separados por saltos de línea.

Nota:

Los comportamientos de exclusión (!) no se admiten en la sintaxis del patrón de cono de Git.

Modificación de la configuración de desprotección dispersa

Una vez creado un repositorio, el patrón de cono de desprotección dispersa se puede editar en Configuración > Avanzado > Patrones de cono.

Tenga en cuenta el siguiente comportamiento:

  • Al quitar una carpeta del patrón de cono, se elimina de Databricks si no hay cambios pendientes de confirmación.

  • Al agregar una carpeta mediante la edición del patrón de cono de desprotección dispersa, se agrega a Databricks sin necesidad de una incorporación de cambios adicional.

  • Los patrones de desprotección dispersa no se pueden cambiar para quitar una carpeta si no se han confirmado cambios en esa carpeta.

    Por ejemplo, un usuario edita un archivo en una carpeta y no confirma los cambios. Luego, intenta cambiar el patrón de restauración dispersa para no incluir esta carpeta. En este caso, se acepta el patrón, pero no se elimina la carpeta en sí. Debe revertir el patrón para incluir esa carpeta, confirmar los cambios y, a continuación, volver a aplicar el nuevo patrón.

Nota:

No se puede deshabilitar la desprotección dispersa de un repositorio que se creó con el modo de desprotección dispersa habilitado.

Realizar e insertar cambios con la desprotección dispersa

Puede editar los archivos existentes y confirmarlos e insertarlos desde la carpeta Git. Al crear nuevas carpetas de archivos, inclúyelas en el patrón de cono que ha especificado para ese repositorio.

La inclusión de una nueva carpeta fuera del patrón de cono produce un error durante la operación de confirmación e inserción. Para solucionarlo, edite el patrón del cono para incluir la nueva carpeta que está intentando confirmar y enviar.

Patrones para un archivo de configuración de repositorio

El archivo de configuración de salidas de commit usa patrones similares a los patrones de gitignore y hace lo siguiente:

  • Los patrones positivos permiten la inclusión de salidas para cuadernos coincidentes.
  • Los patrones negativos deshabilitan la inclusión de salidas para cuadernos coincidentes.
  • Los patrones se evalúan para todos los cuadernos.
  • Se omiten las rutas de acceso no válidas o las rutas de acceso que no se resuelven en cuadernos .ipynb.

Patrón positivo: para incluir salidas de una ruta de acceso de cuaderno folder/innerfolder/notebook.ipynb, use los siguientes patrones:

**/*
folder/**
folder/innerfolder/note*

Patrón negativo: para excluir salidas de un cuaderno, compruebe que ninguno de los patrones positivos coincida o agregue un patrón negativo en un lugar correcto del archivo de configuración. Los patrones negativos (excluir) comienzan por !:

!folder/innerfolder/*.ipynb
!folder/**/*.ipynb
!**/notebook.ipynb

Limitación de la desprotección dispersa

Actualmente, la desprotección dispersa no funciona para los repositorios de Azure DevOps de más de 4 GB de tamaño.

Agregar un repositorio y conectarse de forma remota más adelante

Para administrar y trabajar con carpetas de Git mediante programación, use la API de REST de carpetas de Git.