メインコンテンツまでスキップ

Databricks Git フォルダーで Git 操作を実行する

このページでは、Git フォルダーを使用して、複製、分岐、コミット、プッシュなどの一般的な Git 操作を Databricks ワークスペースで実行する方法について説明します。

このガイドでは、次の Git 操作について説明します。

リポジトリをクローンする

リモート リポジトリのクローンを作成すると、 Databricksワークスペースにリポジトリのコンテンツを含むGitフォルダーを作成し、変更を追跡します。 Databricks UI または Web ポータルを使用してGitフォルダーを作成できます。

注記

UIからクローン

  1. サイドバーで 「ワークスペース」 を選択し、Git リポジトリのクローンを作成するフォルダーを参照します。

  2. [作成] > [Git フォルダー] をクリックします。

  3. 「Git フォルダーの作成 」ダイアログで、以下の情報を入力します。

フィールド

説明

GitリポジトリのURL

クローンを作成する Git リポジトリの URL (形式はhttps://example.com/organization/project.git )。

Gitプロバイダー

クローンを作成するリポジトリの Git プロバイダー。

Gitフォルダ名

クローンされたリポジトリの内容が含まれるワークスペース内のフォルダーの名前。

スパースチェックアウトモード

コーンパターンを使用してリポジトリのディレクトリのサブセットのみをクローンするスパースチェックアウトを使用するかどうか。これは、リポジトリのサイズ制限を超えた場合に役立ちます。

Git CLI を使用する(ベータ版)

Databricks ターミナルから直接標準の Git コマンドを実行できるようにします。これにより、コミット前フック、Git サブモジュール、大容量ファイル ストレージ (LFS) などの高度な操作にアクセスできるようになります。「Git CLI コマンドの使用 (ベータ版)」を参照してください。

  1. 「Git フォルダーの作成」を クリックします。リモート リポジトリの内容がワークスペースに複製され、サポートされている Git 操作を開始できます。

Webターミナルからクローンする

Web ターミナルから直接CLIアクセスしてGitフォルダーを作成することもできます。

  1. Webポータルにアクセスします。 Databricks Web ポータルの実行シェル コマンドを参照してください。

  2. /Workspaceの親ディレクトリに移動します:

    Bash
    cd /Workspace/Users/<your-email>/<project>
注記

/Reposまたは既存の Git フォルダー内にGit CLI アクセスを使用して Git フォルダーを作成することはできません。

  1. リポジトリをクローンします:

    Bash
    git clone <remote-url>

    git cloneコマンドは、ワークスペースで構成された Git 資格情報を使用します。「Git プロバイダーを Databricks に接続する」を参照してください。

  2. ブラウザを更新すると、ワークスペース ファイル ブラウザに新しいフォルダが表示されます。

Git CLI コマンドを使用する (ベータ版)

備考

ベータ版

この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。「Databricks プレビューの管理」を参照してください。

Git CLI アクセスを備えた Git フォルダーを使用すると、Databricks ターミナルから直接標準の Git コマンドを実行できます。あなたはできる:

  • git stashgit pull --forcegit rebase -iを含む任意の Git コマンドを実行します。
  • コミット前のフックにリンティングとコードスキャンを統合します。
  • 標準の Git フォルダーの 2 GB のメモリと 4 GB のディスク制限を超えるリポジトリを操作します。
  • Git サブモジュールと Large File Storage (LFS) を使用します。
  • リモート リポジトリにプッシュする前に、複数のコミットをローカルでステージングします。

Git CLIアクセスを使用するには、ワークスペースの環境バージョン 4 以降でサーバレス コンピュートが有効になっている必要があります。

Git CLI アクセスで Git フォルダを作成する

CLI アクセスで Git フォルダーを作成するには:

  • Web ポータルを使用している場合、クローンを作成したリポジトリには自動的にGit CLIアクセスが許可されます。
  • UIを使用する場合は、Git フォルダーを作成するときに 「Git CLI を使用する」 を有効にします。

CLIアクセスでGitフォルダーを作成した後、Web ターミナルから標準のGitコマンドを実行します。

Bash
cd /Workspace/Users/<your-email>/<project>/my-repo

# Interactive rebase
git rebase -i main

# Stash uncommitted changes
git stash

# Work with submodules
git submodule update --init --recursive

Git CLI の制限

CLI アクセスが可能な Git フォルダーには次の制限があります。

  • リモート URL 許可リストが有効になっているワークスペースでは、Git CLI 機能を使用できません。
  • Git CLI コマンドは、ノートブックの出力のコミットをブロックする管理者設定を無視します。
  • Repos API は、CLI アクセスが可能な Git フォルダーではサポートされていません。
  • 既存の Git フォルダーに対して Git CLI アクセスを有効にすることはできません。

Git CLI 操作のトラブルシューティング

  • ターミナルですべての操作の資格情報が要求されます : ワークスペースで Git CLI 機能が有効になっていません。プレビューが有効になっていることを確認するには、ワークスペース管理者に問い合わせてください。
  • CLI アクセスを有効にできません : リモート URL 許可リストを持つワークスペースでは Git CLI 機能を使用できません。ワークスペースのネットワーク構成を確認するには、ワークスペース管理者に問い合わせてください。
  • Git 操作が権限エラーで失敗しました : 親フォルダーに対するCAN MANAGE権限があること、およびワークスペースの Git 資格情報が有効であることを確認してください。「Git プロバイダーを Databricks に接続する」を参照してください。

Git ダイアログにアクセスする

ノートブックまたは Databricks Git フォルダー ブラウザーから Git ダイアログにアクセスします。

  • ノートブックから、現在の Git ブランチを識別するノートブック名の横にあるボタンをクリックします。

    ノートブックの Git ダイアログ ボタン。

  • Databricks Git フォルダー ブラウザーで、リポジトリ名の横にある Git をクリックします。

Git 操作を実行できる全画面ダイアログが表示されます。

Databricks ワークスペースで Git 操作を実行するために使用されるダイアログ。

  1. 現在の作業ブランチ。ここで他のブランチを選択できます。他のユーザーがこの Git フォルダーにアクセスできる場合、同じワークスペースを共有しているときは、ブランチを変更すると、そのユーザーのブランチも変更されます。この問題を回避するには、推奨されるベスト プラクティスを参照してください。
  2. 新しいブランチを作成します。
  3. 現在のブランチにチェックインされたファイル アセットとサブフォルダー。
  4. 現在のブランチ履歴を表示します。
  5. リモート Git リポジトリからコンテンツをプルします。
  6. 変更に対するコミット メッセージとオプションの詳細な説明を追加します。
  7. 作業を作業ブランチにコミットし、更新されたブランチをリモート Git リポジトリにプッシュします。

クリックケバブメニューのアイコン。ケバブ メニューを使用して、ハードリセット、マージ、リベースなどの追加の Git ブランチ操作を選択します。

ブランチ操作用の Git フォルダー ダイアログのメニュー。

新しいブランチを作る

新しいブランチを作成するには:

  1. Git ダイアログを開きます。
  2. 「ブランチの作成」を クリックします。
  3. 新しいブランチの名前を入力し、ベース ブランチを選択します。
  4. 作成 をクリックします。

Git ダイアログの新しいブランチ。

別のブランチに切り替える

別のブランチをチェックアウトするには、Git ダイアログのブランチ ドロップダウンを使用します。

Git ダイアログを別のブランチに切り替える

現在のブランチのコミットされていない変更は、新しいブランチのコードと競合しない場合は、新しいブランチに引き継がれ、コミットされていない変更として表示されます。コミットされていない変更を引き継ぐつもりがない場合は、ブランチ切り替えの前後の変更を破棄します。

ブランチのローカル バージョンは、リモート ブランチを削除した後も、関連付けられている Git フォルダー内に最大 30 日間残ります。Git フォルダー内のローカル ブランチを完全に削除するには、リポジトリを削除します。

重要

ブランチを切り替えると、新しいブランチにワークスペース アセットが含まれていない場合、ワークスペース アセットが削除される可能性があります。現在のブランチに戻すと、削除されたアセットが新しい ID と URL で再作成されます。この変更は元に戻せません。

Git フォルダーからアセットを共有またはブックマークした場合は、切り替える前に新しいブランチにアセットが存在することを確認してください。

変更をコミットしてプッシュする

新しいノートブックまたはファイルを追加したり、既存のノートブックまたはファイルに変更を加えたりすると、Git フォルダー UI で変更が強調表示されます。

変更が強調表示された Git ダイアログ。

変更に必要なコミット メッセージを追加し、 [コミット & プッシュ] をクリックして変更をリモートGitリポジトリにプッシュします。

デフォルト ブランチにコミットする権限がない場合は、新しいブランチを作成し、Git プロバイダーのインターフェースを使用してプル リクエストを作成し、それをデフォルト ブランチにマージします。

注記

ノートブックがソース ファイル形式 ( .py.scala.sql.r ) で保存されている場合、ノートブックの出力はコミットに含まれません。 ipynb形式を使用したノートブックのコミット出力については、 ipynbノートブック出力のアーティファクトコミットの制御」を参照してください。

変更をプルする

リモート Git リポジトリから変更をプルするには、Git 操作ダイアログで [プル] をクリックします。ノートブックやその他のファイルは、リモート Git リポジトリ内の最新バージョンに自動的に更新されます。リモート リポジトリから取得された変更が Databricks のローカルの変更と競合する場合は、マージの競合を解決します。

重要

アップストリームの変更をプルする Git 操作により、ノートブックの状態がクリアされます。「受信した変更によってノートブックの状態がクリアされる」を参照してください。

Gitフォルダで共同作業する

Databricks Git フォルダーはワークスペース内の埋め込み Git クライアントとして動作し、Git ベースのソース管理とバージョン管理を通じて共同作業を行うことができます。効果的なチームコラボレーションのために:

  • 各チーム メンバーには、リモート Git リポジトリにマップされた独自の Git フォルダーがあり、そこで各自の開発ブランチで作業します。
  • 各 Git フォルダーに対して Git 操作を実行できるのは 1 人のユーザーのみです。複数のユーザーが同じフォルダーに対して Git 操作を実行すると、1 人のユーザーが意図せず全員のブランチを切り替えてしまうなど、ブランチ管理の問題が発生する可能性があります。

Git フォルダ構成を共同作業者と共有するには:

  1. [共有] をクリックします。
  2. 「リンクをコピー」をクリックして Git フォルダーを作成します
  3. URL を共同作業者に送信します。
  4. 共同作業者が URL を開くと、Git フォルダー構成が事前に入力されたダイアログが表示されます。
  5. 「Git フォルダーの作成」を クリックして、リポジトリを現在の作業フォルダーの下の自分のワークスペースに複製します。

ブランチのマージ

Databricks Git フォルダーのマージ関数は、 git mergeを使用して、あるブランチのコミット履歴を別のブランチに結合します。Git 初心者の場合、強制プッシュを必要とせず、コミット履歴を書き換えることもないため、Databricks では rebase ではなく merge を使用することをお勧めします。

ブランチを別のブランチにマージするには、ケバブメニューのアイコン。ケバブメニューをクリックして、 マージ を選択します。

  • マージの競合がある場合は、Git フォルダー UI で解決します。
  • 競合がない場合、マージはgit pushを使用してリモート Git リポジトリにプッシュされます。

マージ競合の解決

マージ競合は、プル、リベース、マージ操作中など、Git が異なるソースからのファイルの同じ行への変更を自動的に調整できない場合に発生します。

マージの競合を解決するには、競合するファイルと解決オプションを表示する Git フォルダー UI を使用します。

  • 手動でファイルを編集し、保持する変更を選択します。
  • 1 つのバージョンを完全に受け入れるには、 「現在のすべての変更を保持」 または 「受信したすべての変更を取得」 を選択します。
  • 操作を中止し、競合する変更を破棄して再試行してください。

Git フォルダ UI でのマージ競合を示すアニメーション GIF

手動で競合を解決する

手動での競合解決により、どの競合行を受け入れるかを決定できます。競合を解決するには、ファイルの内容を直接編集します。

マージ競合の手動解決を示すアニメーション GIF

競合を解決するには、保持するコード行を選択し、Git マージ競合マーカーを含む他のすべての行を削除します。完了したら、[ 解決済みとしてマーク] を選択します。

マージの競合を解決するときに間違った選択をした場合は、 [中止] をクリックしてプロセスを中止し、すべてを元に戻します。すべての競合が解決されたら、 「マージを続行」 または 「リベースを続行」 をクリックして競合を解決し、操作を完了します。

ブランチをリベースする

Databricks Git フォルダーの rebase 関数は、 git rebaseを使用して、ターゲット ブランチの上にコミットを再適用し、線形履歴を作成することで、あるブランチから別のブランチに変更を統合します。

ブランチを別のブランチにリベースするには、ケバブメニューのアイコン。ケバブ メニューをクリックし、 Rebase を選択してから、ターゲット ブランチを選択します。

  • リベース後、Git フォルダーはgit commitgit push --forceを実行してリモート リポジトリを更新します。
  • Rebase はコミット履歴を書き換えるため、同じリポジトリで作業している共同作業者にとってバージョン管理の問題が発生する可能性があります。

ブランチをリセットする

Git フォルダー UI から Git リセットを実行します。この操作は、 git reset --hardgit push --forceを組み合わせたものと同じです。

Git リセットは、ブランチの内容と履歴を別のブランチの最新の状態に置き換えます。編集内容が上流ブランチと競合し、上流ブランチにリセットしたときにそれらの編集内容が失われても構わない場合にこれを使用できます。git reset --hardについての詳細をご覧ください

リモートブランチにリセットする

このシナリオの git reset を使用すると、次のようになります。

  • 選択したブランチ ( feature_aなど) を別のブランチ ( mainなど) にリセットした
  • また、アップストリーム (リモート) ブランチ feature_a を main にリセットします。
重要

リセットすると、ブランチのローカルバージョンとリモートバージョンの両方で、コミットされていない変更とコミットされた変更がすべて失われます。

ブランチをリモートブランチにリセットするには:

  1. Git フォルダー UI の [ブランチ ] メニューで、リセットするブランチを選択します。

  2. リセット を選択するケバブメニューのアイコン。ケバブメニュー。

    ケバブメニューのGitリセット操作。

  3. リセットするブランチを選択し、 「実行Gitリセット」 をクリックします。

スパースチェックアウトモードを設定してください

スパース チェックアウトは、Databricks 内のリモート リポジトリのディレクトリのサブセットのみを複製して操作できるようにするクライアント側の設定です。これは、リポジトリのサイズが Databricks でサポートされている制限を超える場合に特に便利です。

新しいリポジトリを複製するときにスパース チェックアウト モードを有効にします。スパースチェックアウトモードは、一度有効にすると無効にすることはできません。

  1. 「Git フォルダーの作成」 ダイアログで、 スパース チェックアウト モード を有効にします。

    [Git フォルダの追加] ダイアログの [スパース チェックアウト] オプション。

  2. [コーンパターン] ボックスで、必要なコーンチェックアウトパターン を指定します。 複数のパターンを改行で区切ります。

コーンパターンのしくみ

スパース チェックアウト モードでのコーン パターンの動作を理解するには、リモート リポジトリ構造を表す次の図を参照してください。

スパース チェックアウトのないリモート リポジトリ構造。

スパースチェックアウトモード を選択しても、コーンパターンを指定しない場合は、デフォルトのコーンパターンが適用されます。これにはルート内のファイルのみが含まれ、サブディレクトリは含まれないため、リポジトリ構造は次のようになります。

スパース チェックアウト: デフォルト コーン パターン。

スパースチェックアウトコーンパターンをparent/child/grandchildに設定すると、 grandchildディレクトリのすべての内容が再帰的に含められます。/parent/parent/child 、およびルート ディレクトリの直下にあるファイルも含まれます。次の図のディレクトリ構造を参照してください。

スパース チェックアウト: 親子フォルダーのコーンパターンを指定します。

注記

除外動作 ( ! ) は、Git コーン パターン構文ではサポートされていません。

スパース チェックアウトの設定を変更する

リポジトリを作成した後、 [設定] > [詳細設定] > [コーン パターン] からスパース チェックアウト コーン パターンを編集します。

次の動作に注意してください。

  • コーンパターンからフォルダーを削除すると、コミットされていない変更がない場合、Databricks から削除されます。

  • スパース チェックアウト コーン パターンを編集してフォルダーを追加すると、追加のプルを必要とせずにフォルダーが Databricks に追加されます。

  • フォルダー内にコミットされていない変更がある場合、スパース チェックアウト パターンを変更してフォルダーを削除することはできません。

    たとえば、フォルダー内のファイルを編集して変更をコミットしない場合、そのフォルダーを除外するようにスパース チェックアウト パターンを変更しようとすると、パターンは受け入れられますが、フォルダーは削除されません。そのフォルダーを含めるようにパターンを元に戻し、変更をコミットしてから、新しいパターンを再度適用する必要があります。

スパースチェックアウトで変更を加える

既存のファイルを編集し、Git フォルダーからコミットしてプッシュします。新しいファイルのフォルダーを作成するときは、そのリポジトリに指定したコーン パターンにそれらを含めます。

コーン パターンの外側に新しいフォルダーを含めると、コミットおよびプッシュ操作中にエラーが発生します。これを修正するには、コミットしてプッシュしようとしている新しいフォルダーを含めるようにコーン パターンを編集します。

スパースチェックアウトの制限

  • スパース チェックアウトは、4 GB を超える Azure DevOps リポジトリでは機能しません。
  • スパース チェックアウトを有効にして作成されたリポジトリのスパース チェックアウトを無効にすることはできません。

Gitフォルダをプログラムで管理する

API を使用して Git フォルダーを管理するには、 Repos API リファレンスを参照してください。

Gitフォルダを削除する

ワークスペースから Git フォルダーを削除するには:

  1. Git フォルダーを右クリックし、 [ゴミ箱に移動] を選択します。
  2. 「確認してゴミ箱へ移動」を クリックします。

次のステップ