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
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.
Klicken Sie oben rechts im Arbeitsbereich neben Hinzufügen auf den Pfeil nach unten, und wählen Sie im Dropdownmenü Git-Ordner aus.
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
- URL des Git-Repositorys, das Sie klonen möchten, im Format
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.
- 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.
Um einen Git-Ordner für einen Mitarbeiter freizugeben, klicken Sie auf Link Kopieren, um den Git-Ordner im Banner oben im Arbeitsbereich „Databricks“ zu erstellen. Diese Aktion kopiert eine URL in die lokale Zwischenablage, die Sie an einen anderen Benutzer senden können. Wenn der Empfängerbenutzer diese URL in einem Browser lädt, wird er zum Arbeitsbereich weitergeleitet, in dem er seinen eigenen Git-Ordner erstellen kann, der aus demselben Remote-Git-Repository geklont wurde. Sie sehen das modale Dialogfeld Git-Ordner erstellen auf der Benutzeroberfläche, das bereits mit den Werten aus Ihrem eigenen Git-Ordner gefüllt ist. Wenn sie im modalen Modus auf die blaue Schaltfläche Git-Ordner erstellen klicken, wird das Git-Repository in den Arbeitsbereich unter ihrem aktuellen Arbeitsordner geklont, in dem sie jetzt direkt damit arbeiten können.
Wenn Sie auf den Git-Ordner einer anderen Person einem freigegebenen Arbeitsbereich zugreifen, klicken Sie im Banner oben auf Git-Ordner erstellen. Diese Aktion öffnet das Dialogfeld Git-Ordner erstellen für Sie, das bereits mit der Konfiguration für das Git-Repository, das es unterstützt, ausgefüllt wurde.
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.
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.
Sie sehen ein Dialogfeld im Vollbildmodus, in dem Sie Git-Vorgänge ausführen können.
- 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.
- Schaltfläche zum Erstellen eines neuen Branch.
- Die Liste der Dateiressourcen und Unterordner, die in Ihren aktuellen Branch eingecheckt sind.
- Eine Schaltfläche, über die Sie zu Ihrem Git-Anbieter gelangen und über die der aktuelle Branchverlauf angezeigt wird.
- Die Schaltfläche zum Pullen von Inhalten aus dem Git-Remoterepository.
- Textfeld, in dem Sie eine Commit-Nachricht und optionale erweiterte Beschreibung für Ihre Änderungen hinzufügen.
- 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ü , um zusätzliche Git-Branchvorgänge wie einen Kaltstart, einen Merge oder einen Rebasevorgang auszuwählen.
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:
Umschalten auf einen anderen Branch
Sie können mithilfe der Dropdownliste „Branch“ im Dialogfeld „Git“ zu einem anderen Branch wechseln (auschecken):
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.
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ü 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.
- 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ü 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:
- Commits in Ihrem aktuellen Branch werden in einem temporären Bereich gespeichert.
- Der aktuelle Branch wird auf den ausgewählten Branch zurückgesetzt.
- 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.
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:
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.
Wählen Sie im Optionsmenü Rebase ausführen aus.
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.
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.
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.
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.
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. Bmain
) 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:
Wählen Sie im Menü Branch auf der Benutzeroberfläche für Git-Ordner den Branch aus, den Sie zurücksetzen möchten.
Wählen Sie im Optionsmenü Zurücksetzen aus.
Wählen Sie den Branch aus, der zurückgesetzt werden soll.
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).
Öffnen Sie im Dialogfeld Git-Ordner hinzufügen die Option Erweitert aus.
Wählen Sie den Modus Sparse Checkout aus.
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.
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:
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:
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.