ノートブックの Git バージョン管理 (レガシ)
重要
レガシ ノートブックの Git 統合のサポートは、2024 年 1 月 31 日に削除されました。 Databricks での作業をリモート Git リポジトリと同期するために、Databricks は、Databricks Git フォルダーを使用することをお勧めしています。
この記事では、ノートブックの Git バージョン管理 (レガシ機能) を設定する方法について説明します。 Databricks CLI または Workspace API を使用して、ノートブックをインポートおよびエクスポートしたり、ローカル開発環境で Git 操作を実行したりすることもできます。
Git バージョン管理を有効および無効にする
既定では、バージョン コントロールが有効になっています。 この設定を切り替えるには:
- [設定]、[ワークスペース設定] の順に移動します。
- [詳細] セクションで、[Notebook Git Versioning] (Notebook Git のバージョン管理) トグルを選択解除します。
バージョン コントロールを構成する
バージョン コントロールを構成するには、Git プロバイダーでアクセス資格情報を作成し、その資格情報を Azure Databricks に追加します。
ノートブックのバージョンを操作する
履歴パネルでノートブックのバージョンを操作します。 右側のサイドバーの をクリックして履歴パネルを開きます。
Note
履歴パネルを開いている間、ノートブックを変更することはできません。
ノートブックを GitHub にリンクする
右側のサイドバーの をクリックします。 Git ステータス バーに [Git: リンクされていません] と表示されます。
[Git: リンクされていません] をクリックします。
Git ユーザー設定ダイアログが表示されます。 ノートブックを初めて開くと、"状態" は [リンク解除] となっています。GitHub にノートブックがないからです。
"状態" フィールドで、[リンク] をクリックします。
"リンク" フィールドに、GitHub リポジトリの URL を貼り付けます。
"ブランチ" のドロップダウンをクリックし、ブランチを選択するか、新しいブランチの名前を入力します。
[Git フォルダーのパス] フィールドに、リポジトリ内のファイルを保存する場所を指定します。
Python ノートブックには、推奨される既定のファイル拡張子
.py
があります。.ipynb
を使用すると、ノートブックは iPython ノートブック形式で保存します。 GitHub にファイルがすでにある場合は、そのファイルの URL を直接コピーして貼り付けることができます。[保存] をクリックして、ノートブックのリンク設定を完了します。 このファイルが以前に存在しなかった場合は、このファイルを自分の GitHub ファイルに保存するオプションが表示されます。
メッセージを入力して、[保存] をクリックします。
ノートブックを GitHub に保存する
ノートブックに加えた変更は Azure Databricks のバージョン履歴に自動的に保存されますが、変更は GitHub に自動的に保持されません。
右側のサイドバーの をクリックして履歴パネルを開きます。
[Save Now](今すぐ保存) をクリックして、ノートブックを GitHub に保存します。 [ノートブックのバージョンの保存] ダイアログが表示されます。
必要に応じて、変更を説明するメッセージを入力します。
[Also commit to Git] (Git へのコミットも実行) が選択されていることを確認してください。
[保存] をクリックします。
GitHub でノートブックのバージョンを元に戻すまたは更新する
ノートブックをリンクすると、履歴パネルを開くたびに、Azure Databricks は履歴を Git と同期します。 Git と同期するバージョンには、エントリの一部としてコミット ハッシュがあります。
右側のサイドバーの をクリックして履歴パネルを開きます。
履歴パネルでエントリを選択します。 Azure Databricks に、そのバージョンが表示されます。
[Restore this version] (このバージョンの復元) をクリックします。
[確定] をクリックして、そのバージョンを復元することを確定します。
ノートブックのリンクを解除する
右側のサイドバーの をクリックして履歴パネルを開きます。
Git のステータス バーに [Git: 同期済み] と表示されます。
[Git: 同期済み] をクリックします。
[Git Preferences] (Git ユーザー設定) ダイアログで、[リンク解除] をクリックします。
[保存] をクリックします。
[確定] をクリックして、バージョン管理からそのノートブックのリンクを解除することを確定します。
ブランチを使用する
リポジトリ内の任意のブランチで作業し、Azure Databricks 内に新しいブランチを作成することができます。
ブランチを作成する
右側のサイドバーの をクリックして履歴パネルを開きます。
Git ステータス バーをクリックして、GitHub パネルを開きます。
"ブランチ" のドロップダウンをクリック します。
ブランチ名を入力します。
ドロップダウンの下部にある [ブランチの作成] オプションを選択します。 親ブランチが示されます。 現在選択しているブランチから常に分岐します。
pull request を作成する
右側のサイドバーの をクリックして履歴パネルを開きます。
Git ステータス バーをクリックして、GitHub パネルを開きます。
[Create PR] (PR の作成) をクリックします。 GitHub でブランチの pull request ページが開きます。
ブランチをリベースする
Azure Databricks 内でブランチをリベースすることもできます。 親ブランチで新しいコミットが使用できる場合、リベースリンクが表示されます。 親リポジトリの既定のブランチに統合するリベースだけがサポートされています。
たとえば、databricks/reference-apps
で作業している場合を想定します。 それを自身のアカウント (たとえば、brkyvz
) にフォークし、my-branch
というブランチで作業を開始します。 新しい更新プログラムが databricks:master
にプッシュされると、Rebase
ボタンが表示され、変更をブランチ brkyvz:my-branch
にプルできるようになります。
リベースの動作は、Azure Databricks では少し異なります。 次のブランチ構造を想定します。
リベースの後のブランチ構造は次のように表されます。
ここでの違いは、コミットの C5 と C6 が C4 への統合に適用されない点です。 これは、ノートブックではローカルの変更として表示されます。 マージの競合は次のように表示されます。
[Save Now](今すぐ保存) ボタンを使用して、もう一度 GitHub にコミットすることができます。
自身がリベースしたばかりのブランチから他のユーザーが分岐した場合は、どうなるでしょうか?
そのブランチ (たとえば、branch-a
) が他のブランチ (branch-b
) のベースで、リベースした場合、心配する必要はありません。 ユーザーも branch-b
をリベースすると、すべてが機能します。この状況のベスト プラクティスは、ノートブックごとに個別のブランチを使用する方法です。
コード レビューのベスト プラクティス
Azure Databricks は Git ブランチをサポートしています。
- リポジトリ内の任意のブランチにノートブックをリンクできます。 Azure Databricks はノートブックごとに個別のブランチを使用することを推奨しています。
- 開発中、ノートブックをリポジトリのフォークへリンクすることや、メイン リポジトリの既定以外のブランチへリンクすることが可能です。 変更をアップストリームに統合するには、Azure Databricks で Git ユーザー設定 ダイアログの PR の作成 リンクを使用して、GitHub pull request を作成することができます。 [PR の作成] リンクは、親リポジトリの既定のブランチで作業していない場合にのみ表示されます。
トラブルシューティング
GitHub 履歴の同期に関連するエラーが発生した場合は、次を確認してください。
- ノートブックは、空ではない初期化された Git リポジトリにのみリンクできます。 Web ブラウザーで URL をテストします。
- GitHub 個人用アクセス トークンはアクティブである必要があります。
- プライベート GitHub リポジトリを使用するには、そのリポジトリの読み取りアクセス許可が必要です。
- 名前が変更された GitHub ブランチにノートブックがリンクされている場合、その変更は Azure Databricks に自動的に反映されません。 手動でノートブックをブランチに再リンクする必要があります。
Databricks Git フォルダーへの移行
従来の Git バージョン コントロールから Databricks Git フォルダーに移行する必要があるユーザーは、次のガイドを使用できます。