Ausführen von Git-Vorgängen für Databricks-Git-Ordner (Repos)

In diesem Artikel wird beschrieben, wie Sie allgemeine Git-Vorgänge in Ihrem Databricks-Arbeitsbereich mithilfe von Git-Ordnern ausführen, einschließlich Klonen, Verzweigen, Committen und Pushen.

Klonen eines mit einem Git-Remoterepository verbundenen Repositorys

  1. Wählen Sie auf der Randleiste Arbeitsbereich aus, und navigieren Sie dann zu dem Ordner, in dem Sie den Klon des Git-Repositorys erstellen möchten.

  2. Klicken Sie oben rechts im Arbeitsbereich neben Hinzufügen auf den Pfeil nach unten, und wählen Sie im Dropdownmenü Git-Ordner aus.

    Repositorybenutzeroberfläche hinzufügen.

  3. Geben Sie im Dialogfeld Git-Ordner erstellen die folgenden Informationen an:

    • URL des Git-Repositorys, das Sie klonen möchten, im Format https://example.com/organization/project.git
    • Git-Anbieter für das Repository, das Sie klonen möchten. Zu den Optionen gehören GitHub, GitHub Enterprise, GitLab und Azure DevOps (Azure Repos).
    • Name des Ordners in Ihrem Arbeitsbereich, der den Inhalt des geklonten Repositorys enthält
    • Angabe, ob Sparse Check-Out verwendet wird, bei dem nur mit einem Cone-Muster angegebene Unterverzeichnisse geklont werden

    Klonen über die Benutzeroberfläche für Git-Ordner

In dieser Phase haben Sie die Möglichkeit, nur eine Teilmenge der Verzeichnisse Ihres Repositorys mithilfe von Sparse Checkout zu klonen. Dies ist nützlich, wenn Ihr Repository größer als die von Databricks unterstützten Grenzwerte ist.

  1. Klicken Sie auf Git-Ordner erstellen. Die Inhalte des Remote-Repositorys wird im Databricks-Repository geklont, und Sie können sie mithilfe der unterstützten Git-Vorgänge über Ihren Arbeitsbereich verwenden.

Bewährte Methode: Zusammenarbeit in Git-Ordnern

Databricks-Git-Ordner verhalten sich effektiv wie eingebettete Git-Clients in Ihrem Arbeitsbereich, damit Benutzer mit Git-basierter Quellcodeverwaltung und Versionsverwaltung zusammenarbeiten können. Um die Zusammenarbeit im Team effektiver zu gestalten, verwenden Sie einen separaten Databricks-Git-Ordner, der einem Git-Remoterepository für die einzelnen Benutzer*innen zugeordnet ist, die in einem eigenen Entwicklungsbranch arbeiten. Obwohl mehrere Benutzer Inhalte zu einem Git-Ordner beitragen können, sollte nur ein festgelegter Benutzer Git-Vorgänge wie Pull-, Push-, Commit- und Verzweigungswechsel ausführen. Wenn mehrere Benutzer*innen Git-Vorgänge in einem Git-Ordner ausführen, kann die Branchverwaltung schwierig und fehleranfällig werden, etwa, wenn ein*eine Benutzer*in einen Branch wechselt und ihn unbeabsichtigt für alle anderen Benutzer*innen dieses Ordners wechselt.

Wichtig

Derzeit können Sie die Git-CLI nicht zum Ausführen von Git-Vorgängen in einem Git-Ordner verwenden. Wenn Sie ein Git Repo mithilfe der CLI über das Webterminal eines Clusters klonen, werden die Dateien nicht auf der Azure Databricks-Benutzeroberfläche angezeigt.

Zugreifen auf das Dialogfeld „Git“

Sie können über ein Notebook oder über den Browser für Databricks-Git-Ordner auf das Git-Dialogfeld zugreifen.

  • Klicken Sie in einem Notebook auf die Schaltfläche neben dem Namen des Notebooks, der den aktuellen Git-Branch angibt.

    Schaltfläche im Dialogfeld „Git“ im Notebook.

  • Klicken Sie im Browser für Databricks-Git-Ordner auf die Schaltfläche rechts neben dem Repositorynamen. Alternativ können Sie mit der rechten Maustaste auf den Namen des Repositorys klicken und im Menü Git... auswählen.

    Schaltfläche im Dialogfeld „Git“ und Menü „Git“ im Repositorybrowser.

Sie sehen ein Dialogfeld im Vollbildmodus, in dem Sie Git-Vorgänge ausführen können.

Das Dialogfeld zum Ausführen von Git-Vorgängen in einem Databricks-Arbeitsbereich.

  1. Ihre aktuelle Arbeitsverzweigung. Sie können hier weitere Branches auswählen. Wenn andere Benutzer Zugriff auf diesen Git-Ordner haben, wird durch die Änderung des Branch der Branch auch für sie geändert, wenn sie denselben Arbeitsbereich nutzen. Hier können Sie sich eine bewährte Methode ansehen, um dieses Problem zu vermeiden.
  2. Schaltfläche zum Erstellen eines neuen Branch.
  3. Die Liste der Dateiressourcen und Unterordner, die in Ihren aktuellen Branch eingecheckt sind.
  4. Eine Schaltfläche, über die Sie zu Ihrem Git-Anbieter gelangen und über die der aktuelle Branchverlauf angezeigt wird.
  5. Die Schaltfläche zum Pullen von Inhalten aus dem Git-Remoterepository.
  6. Textfeld, in dem Sie eine Commit-Nachricht und optionale erweiterte Beschreibung für Ihre Änderungen hinzufügen.
  7. Schaltfläche, um Ihre Arbeit in der Arbeitsverzweigung zu übernehmen und den aktualisierten Branch an das Git-Remoterepository zu übertragen.

Klicken Sie oben rechts auf das Kebabmenü Kebab-Menü, um zusätzliche Git-Branchvorgänge wie einen Kaltstart, einen Merge oder einen Rebasevorgang auszuwählen.

Dropdownmenü im Dialogfeld „Git-Ordner“ für Branchvorgänge.

Dies ist Ihre Startseite zum Ausführen von Git-Vorgängen im Git-Ordner Ihres Arbeitsbereichs. Sie sind auf die Git-Vorgänge beschränkt, die auf der Benutzeroberfläche angezeigt werden.

Neuen Branch erstellen

Sie können im Git-Dialogfeld ausgehend von einem vorhandenen Branch einen neuen Branch erstellen:

Neuer Branch im Dialogfeld „Git“.

Umschalten auf einen anderen Branch

Sie können mithilfe der Dropdownliste „Branch“ im Dialogfeld „Git“ zu einem anderen Branch wechseln (auschecken):

Git-Dialogfeld zum Wechseln von Branches

Wichtig

Nachdem Sie einen Branch in einem Git-Ordner ausgecheckt haben, besteht immer die Möglichkeit, dass der Branch von einer anderen Person im Git-Remoterepository gelöscht wird. Wenn ein Branch im Remoterepository gelöscht wird, kann seine lokale Version noch bis zu 7 Tage lang im zugeordneten Git-Ordner vorhanden sein. Lokale Branches in Databricks können nicht gelöscht werden. Wenn Sie sie also entfernen müssen, müssen Sie das Repository neu klonen.

Committen und Pushen von Änderungen in ein Git-Remoterepository

Wenn Sie neue Notebooks oder Dateien hinzugefügt oder Änderungen an vorhandenen Notebooks oder Dateien vorgenommen haben, werden die Änderungen auf der Benutzeroberfläche für Git-Ordner hervorgehoben.

Dialogfeld „Git“ mit hervorgehobenen Änderungen.

Fügen Sie eine erforderliche Commitnachricht für die Änderungen hinzu, und klicken Sie auf Commiten und Pushen, um diese Änderungen per Push an das Git-Remoterepository zu übertragen.

Wenn Sie nicht über die Berechtigung zum Committen in den Standardbranch (etwa main-Branch) verfügen, erstellen Sie einen neuen Branch, und verwenden Sie Ihre Git-Anbieterschnittstelle, um einen Pull Request (PR) zu erstellen und ihn mit dem Standardbranch zusammenzuführen.

Hinweis

  • Notizbuchausgaben sind standardmäßig nicht in Commits enthalten, wenn Notizbücher in Quelldateiformaten(.py, .scala, .sql, .r) gespeichert werden. Informationen zum Committen von Notebook-Ausgaben im IPYNB-Format finden Sie unter Steuern der Commits von IPYNB-Notebook-Ausgabeartefakten.

Pullen von Änderungen aus dem Git-Remoterepository

Zum Pullen von Änderungen aus dem Git-Remoterepository klicken Sie im Dialogfeld für Git-Vorgänge auf Pullen. Notebooks und andere Dateien werden automatisch auf die neueste Version in Ihrem Git-Remoterepository aktualisiert. Wenn die Änderungen, die aus dem Remoterepository gepullt wurden, mit den lokalen Änderungen in Databricks in Konflikt stehen, müssen Sie die Mergekonflikte lösen.

Wichtig

Durch Git-Vorgänge, die Upstreamänderungen abrufen, wird der Notebookzustand gelöscht. Weitere Informationen finden Sie unter Eingehende Änderungen löschen den Notebookzustand.

Verzweigungen zusammenführen

Greifen Sie auf den Git-Vorgang Merge zu, indem Sie ihn oben rechts im Dialogfeld für Git-Vorgänge aus dem Kebabmenü Kebab-Menü auswählen.

Die Mergefunktion in Databricks-Git-Ordnern führt einen Branch mittels git merge mit einem anderen zusammen. Ein Zusammenführungsvorgang ist eine Möglichkeit, den Commitverlauf von einem Branch in einem anderen Branch zu kombinieren. Der einzige Unterschied ist die dafür verwendete Strategie. Für Git-Neulinge empfehlen wir die Verwendung von „Zusammenführen“ (anstelle von „Rebase ausführen“), da dabei das Pushen in einen Branch nicht erzwungen werden muss und daher der Commitverlauf nicht neu geschrieben wird.

Weitere Informationen zu den Unterschieden zwischen dem Zusammenführen von Commits und dem Ausführen eines Rebase für Commits finden Sie in der Atlassian-Dokumentation zum Thema.

  • Wenn es einen Mergekonflikt gibt, lösen Sie ihn auf der Benutzeroberfläche für Git-Ordner.
  • Wenn kein Konflikt besteht, wird der Merge mittels git push an das Git-Remoterepository gepusht.

Rebase für einen Branch auf einen anderen Branch

Greifen Sie auf den Git-Vorgang Rebase ausführen zu, indem Sie ihn oben rechts im Dialogfeld für Git-Vorgänge im Kebabmenü Kebab-Menü auswählen.

Durch das Rebase wird der Commitverlauf eines Branchs geändert. Wie git merge integriert git rebase Änderungen von einem Branch in einen anderen. Bei einem Rebase passiert Folgendes:

  1. Commits in Ihrem aktuellen Branch werden in einem temporären Bereich gespeichert.
  2. Der aktuelle Branch wird auf den ausgewählten Branch zurückgesetzt.
  3. Jeder einzelne Commit, der zuvor auf dem aktuellen Branch gespeichert wurde, wird erneut angewendet, was zu einem linearen Verlauf führt, der Änderungen aus beiden Branches kombiniert.

Eine ausführliche Erläuterung finden Sie unter Git Rebase.

Warnung

Die Verwendung von Rebase kann zu Versionsproblemen für Projektmitarbeiter führen, die im selben Repository arbeiten.

Ein gängiger Workflow besteht darin, ein Rebase für ein Featurebranch auf den Standardbranch auszuführen.

So führen Sie ein Rebase eines Branchs auf einen anderen Branch aus:

  1. Wählen Sie im Menü Branch auf der Benutzeroberfläche für Git-Ordner den Branch aus, für den Sie den Rebasevorgang ausführen möchten.

  2. Wählen Sie im Optionsmenü Rebase ausführen aus.

    Git Rebase-Funktion im Optionsmenü.

  3. Wählen Sie den Branch aus, auf dem Sie ein Rebase ausführen möchten.

    Der Rebasevorgang integriert Änderungen aus dem hier ausgewählten Branch in den aktuellen Branch.

Databricks-Git-Ordner führen git commit und git push --force aus, um das Git-Remoterepository zu aktualisieren.

Auflösen von Mergekonflikten

Mergekonflikte treten auf, wenn zwei oder mehr Git-Benutzer*innen versuchen, Änderungen an den gleichen Zeilen einer Datei in einem gemeinsamen Branch zusammenzuführen, und Git nicht die „richtigen“ Änderungen auswählen kann, die angewendet werden sollen. Mergekonflikte können auch auftreten, wenn Benutzer*innen versuchen, Änderungen aus einem anderen Branch in einen Branch mit ausgecheckten Änderungen zu pullen oder die Änderungen dort zusammenzuführen.

Animierte GIF-Datei, die einen allgemeinen Mergekonflikt zeigt, der aufgrund ausgecheckter Änderungen während eines Git-Pulls auftritt

Wenn ein Vorgang wie Pull, Rebase oder Merge einen Mergekonflikt verursacht, zeigt die Benutzeroberfläche für Git-Ordner eine Liste von Dateien mit Konflikten und Optionen zum Auflösen der Konflikte an.

Sie haben zwei wesentliche Optionen:

  • Verwenden Sie die Benutzeroberfläche für Git-Ordner, um den Konflikt zu beheben.
  • Beenden Sie den Git-Vorgang, verwerfen Sie die Änderungen in der in Konflikt stehenden Datei manuell, und führen Sie den Git-Vorgang erneut aus.

Animierte GIF-Datei mit einem Mergekonflikt auf der Benutzeroberfläche für Databricks-Git-Ordner

Beim Lösen von Mergekonflikten über die Benutzeroberfläche für Git-Ordner müssen Sie zwischen der manuellen Lösung der Konflikte im Editor und dem Beibehalten aller eingehenden oder aktuellen Änderungen wählen.

Alle aktuellen Änderungen beibehalten oder Eingehende Änderungen übernehmen

Wenn Sie wissen, dass Sie nur alle aktuellen oder eingehenden Änderungen beibehalten möchten, klicken Sie rechts neben dem Dateinamen im Notebook-Bereich auf das Optionsmenü, und wählen Sie entweder Alle aktuellen Änderungen beibehalten oder Alle eingehenden Änderungen übernehmen aus. Klicken Sie auf die Schaltfläche mit derselben Bezeichnung, um die Änderungen zu committen und den Konflikt zu lösen.

Der Bereich für die Benutzeroberfläche für Databricks-Notebooks mit den Dropdownoptionen für die Lösung von Mergekonflikten

Tipp

Sie wissen nicht, welche Option Sie auswählen sollen? Die Farbe der einzelnen Optionen entspricht den jeweiligen Codeänderungen, die in der Datei beibehalten werden.

Manuelles Beheben von Konflikten

Bei der manuellen Konfliktlösung können Sie bestimmen, welche der in Konflikt stehenden Zeilen bei der Zusammenführung akzeptiert werden sollen. Bei Mergekonflikten lösen Sie den Konflikt, indem Sie den Inhalt der Datei mit den Konflikten direkt bearbeiten.

Animierte GIF-Datei mit manueller Lösung eines Mergekonflikts

Um den Konflikt zu beheben, wählen Sie die Codezeilen aus, die Sie beibehalten möchten, und löschen Sie alles andere, einschließlich der Git-Mergekonfliktmarkierungen. Wenn Sie fertig sind, wählen Sie Als gelöst markieren aus.

Wenn Sie beim Lösen von Mergekonflikten die falschen Entscheidungen getroffen haben, klicken Sie auf die Schaltfläche Abbrechen, um den Prozess abzubrechen und alle Vorgänge rückgängig zu machen. Nachdem alle Konflikte gelöst wurden, klicken Sie auf die Option Zusammenführen fortsetzen oder Rebase fortsetzen, um den Konflikt zu lösen und den Vorgang abzuschließen.

Git reset

In Databricks-Git-Ordnern können Sie auf der Azure Databricks-Benutzeroberfläche den Git-Befehl reset ausführen. „git reset“ in Databricks-Git-Ordnern entspricht dem Vorgang git reset --hard in Kombination mit git push --force.

„Git reset“ ersetzt den Branchinhalt und den -verlauf durch den neuesten Status eines anderen Branchs. Sie können diesen Befehl verwenden, wenn Bearbeitungen in Konflikt mit dem Upstreambranch stehen und Sie keine Bedenken haben, diese Bearbeitungen zu verlieren, wenn Sie den Upstreambranch zurücksetzen. Erfahren Sie mehr zu „git“ reset –hard.

Zurücksetzen auf einen Upstream- bzw. Remotebranch

Mit git reset in diesem Szenario:

  • Sie setzen den ausgewählten Branch (z. B feature_a) auf einen anderen Branch (z. B main) zurück.
  • Außerdem setzen Sie den Upstream (Remote-)Branch feature_a auf Standard zurück.

Wichtig

Beim Zurücksetzen verlieren Sie alle nicht ausgecheckten und committeten Änderungen sowohl in der lokalen als auch in der Remoteversion des Branchs.

So setzen Sie einen Branch auf einen Remotebranch zurück:

  1. Wählen Sie im Menü Branch auf der Benutzeroberfläche für Git-Ordner den Branch aus, den Sie zurücksetzen möchten.

    Branchauswahl auf der Benutzeroberfläche für Git-Ordner

  2. Wählen Sie im Optionsmenü Zurücksetzen aus.

    Vorgang „Get reset“ im Optionsmenü.

  3. Wählen Sie den Branch aus, der zurückgesetzt werden soll.

    Dialogfeld„Git reset --hard“.

Konfigurieren des Modus „Sparse Checkout“

„Sparse Checkout“ ist eine clientseitige Einstellung, die es Ihnen ermöglicht, nur eine Teilmenge der Verzeichnisse der Remoterepositorys in Databricks zu klonen und damit zu arbeiten. Dies ist besonders nützlich, wenn die Größe Ihres Repositorys die von Databricks unterstützten Grenzwerte überschreitet.

Sie können den Modus „Sparse Checkout“ verwenden, wenn Sie ein neues Repository hinzufügen (klonen).

  1. Öffnen Sie im Dialogfeld Git-Ordner hinzufügen die Option Erweitert aus.

  2. Wählen Sie den Modus Sparse Checkout aus.

    Option „Sparse Checkout“ im Dialogfeld „Git-Ordner hinzufügen“.

  3. Geben Sie im Feld Cone-Muster die gewünschten Cone-Auscheckmuster an. Trennen Sie mehrere Muster durch Zeilenumbrüche.

Derzeit können Sie „Sparse Checkout“ für ein Repository in Azure Databricks nicht deaktivieren.

Funktionsweise von Cone-Mustern

Informationen zur Funktionsweise von Cone-Mustern im Modus „Sparse Checkout“ finden Sie im folgenden Diagramm, das die Remoterepositorystruktur darstellt.

Remoterepositorystruktur ohne „Sparse Checkout“.

Wenn Sie den Modus Sparse Checkout auswählen, aber kein Cone-Muster angeben, wird das standardmäßige Cone-Muster angewendet. Dies umfasst nur die Dateien im Stammverzeichnis und keine Unterverzeichnisse, was zu einer Repositorystruktur wie der folgenden führt:

Sparse Checkout: standardmäßiges Cone-Muster.

Das Festlegen des Cone-Musters für „Sparse Checkout“ auf parent/child/grandchild führt dazu, dass alle Inhalte des Verzeichnisses grandchild rekursiv einbezogen werden. Die Dateien, die sich unmittelbar in den Verzeichnissen /parent, /parent/child und im Stammverzeichnis befinden, werden ebenfalls einbezogen. Sehen Sie sich die Verzeichnisstruktur im folgenden Diagramm an:

Sparse Checkout: Angeben des Cone-Ordnermusters „Übergeordnetes Element-Untergeordnetes Element zweiter Ordnung-Untergeordnetes Element“.

Sie können mehrere Muster durch Zeilenumbrüche getrennt hinzufügen.

Hinweis

Ausschlussverhalten (!) werden in der Git-Cone-Mustersyntax nicht unterstützt.

Ändern von Einstellungen von „Sparse Checkout“

Sobald ein Repository erstellt wurde, kann das Cone-Muster „Sparse Checkout“ über Einstellungen > Erweitert > Cone-Muster bearbeitet werden.

Beachten Sie das folgende Verhalten:

  • Wenn Sie einen Ordner aus dem Cone-Muster entfernen, wird er aus Databricks entfernt, wenn keine ausgecheckten Änderungen vorhanden sind.

  • Beim Hinzufügen eines Ordners über die Bearbeitung des Cone-Musters für „Sparse Checkout“ wird dieser zu Databricks hinzugefügt, ohne dass ein zusätzlicher Pull erforderlich ist.

  • „Sparse Checkout“-Muster können nicht so geändert werden, dass ein Ordner entfernt wird, wenn ausgecheckte Änderungen in diesem Ordner vorhanden sind.

    Angenommen, eine Benutzerin bearbeitet eine Datei in einem Ordner und committet die Änderungen nicht. Anschließend versucht sie, das „Sparse Checkout“-Muster so zu ändern, dass dieser Ordner nicht einbezogen wird. In diesem Fall wird das Muster akzeptiert, aber der tatsächliche Ordner nicht gelöscht. Sie muss das Muster so wiederherstellen, das dieser Ordner einbezogen wird, Änderungen committen und dann das neue Muster erneut anwenden.

Hinweis

Sie können „Sparse Checkout“ für ein Repository nicht deaktivieren, das mit aktiviertem Modus „Sparse Checkout“ erstellt wurde.

Vornehmen und Pushen von Änderungen mit Sparse Checkout

Sie können vorhandene Dateien bearbeiten und über den Git-Ordner committen und pushen. Wenn Sie neue Ordner mit Dateien erstellen, schließen Sie sie in das Cone-Muster ein, das Sie für dieses Repository angegeben haben.

Das Einbeziehen eines neuen Ordners außerhalb des Cone-Musters führt während des Commit- und Pushvorgangs zu einem Fehler. Um dies zu korrigieren, bearbeiten Sie das Cone-Muster, sodass der neue Ordner einbezogen wird, den Sie committen und pushen möchten.

Muster für eine Repositorykonfigurationsdatei

Die Commitausgabe-Konfigurationsdatei verwendet Muster, die gitignore-Mustern ähneln, und führt folgendes aus:

  • Positive Muster aktivieren die Aufnahme von Ausgaben für übereinstimmende Notebooks.
  • Negative Muster deaktivieren die Aufnahme von Ausgaben für übereinstimmende Notebooks.
  • Muster werden der Reihe nach für alle Notebooks ausgewertet.
  • Ungültige Pfade oder Pfade, die nicht in .ipynb-Notebooks aufgelöst werden, werden ignoriert.

Positives Muster: Um z. B. Ausgaben aus dem Notebookpfad folder/innerfolder/notebook.ipynb einzuschließen, verwenden Sie die folgenden Muster:

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

Negatives Muster: Um Ausgaben für ein Notizbuch auszuschließen, überprüfen Sie, dass keines der positiven Muster übereinstimmt oder fügen Sie ein negatives Muster an der richtigen Stelle der Konfigurationsdatei hinzu. Negative Muster (Ausschluss) beginnen mit !:

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

Sparse Ceckout-Einschränkung

„Sparse Ceckout“ funktioniert derzeit nicht für Azure DevOps-Repositorys, die größer als 4 GB sind.

Hinzufügen eines Repositorys und spätere Herstellung einer Remoteverbindung

Um Git-Ordner programmgesteuert zu verwalten und zu nutzen, verwenden Sie die REST-API für Git-Ordner.