ノートブックの Git バージョン管理 (レガシ)
Note
Azure Databricks での作業をリモート Git リポジトリと同期するために、Databricks では、Git と Databricks Repos の統合を使用することをお勧めします。
この記事では、ノートブックの Git バージョン管理 (レガシ機能) を設定する方法について説明します。 Databricks CLI または Workspace API 2.0 を使用して、ノートブックをインポートおよびエクスポートしたり、ローカル開発環境で Git 操作を実行したりすることもできます。
Git バージョン管理を有効および無効にする
既定では、バージョン コントロールが有効になっています。 この設定を切り替えるには:
- [詳細] セクションで、[Notebook Git のバージョン管理] トグルをクリックします。
- [Confirm](確認) をクリックします。
Git のバージョン管理を無効にした場合、[ユーザー設定] 画面で [Git 統合] タブを使用できなくなります。
バージョン コントロールを構成する
バージョン コントロールを構成するには、Git プロバイダーでアクセス資格情報を作成し、その資格情報を Azure Databricks に追加します。
ノートブックの変更履歴の操作
履歴パネルでノートブックの変更履歴を操作します。 ノートブックの右上にある [リビジョン履歴] をクリックして、履歴パネルを開きます。
Note
履歴パネルを開いている間、ノートブックを変更することはできません。
ノートブックを GitHub にリンクする
ノートブックの右上にある [リビジョン履歴] をクリックします。 Git ステータス バーに [GitHub: リンクされていません] と表示されます。
[GitHub: リンクされていません] をクリックします。
Git ユーザー設定ダイアログが表示されます。 ノートブックを初めて開くと、"状態" は [リンク解除] となっています。GitHub にノートブックがないからです。
"状態" フィールドで、[リンク] をクリックします。
"リンク" フィールドに、GitHub リポジトリの URL を貼り付けます。
"ブランチ" のドロップダウンをクリックし、ブランチを選択するか、新しいブランチの名前を入力します。
"Git リポジトリのパス" フィールドで、リポジトリ内のファイルを保存する場所を指定します。
Python ノートブックには、推奨される既定のファイル拡張子
.py
があります。.ipynb
を使用すると、ノートブックは iPython ノートブック形式で保存します。 GitHub にファイルがすでにある場合は、そのファイルの URL を直接コピーして貼り付けることができます。[保存] をクリックして、ノートブックのリンク設定を完了します。 このファイルが以前に存在しなかった場合は、このファイルを自分の GitHub ファイルに保存するオプションが表示されます。
メッセージを入力して、[保存] をクリックします。
ノートブックを GitHub に保存する
ノートブックに加えた変更は自動的に Azure Databricks に保存されますが、GitHub には自動的に保存されません。
ノートブックの右上にある [リビジョン履歴 ] をクリックして、履歴パネルを開きます。
[Save Now](今すぐ保存) をクリックして、ノートブックを GitHub に保存します。 [Save Notebook Revision] ダイアログが表示されます。
必要に応じて、行った変更を説明するメッセージを入力します。
[Also commit to Git] が選択されていることを確認してください。
[保存] をクリックします。
GitHub でノートブックのバージョンを元に戻すまたは更新する
ノートブックをリンクすると、履歴パネルを開くたびに、Azure Databricks は履歴を Git と同期します。 Git と同期するバージョンには、エントリの一部としてコミット ハッシュがあります。
ノートブックの右上にある [リビジョン履歴 ] をクリックして、履歴パネルを開きます。
履歴パネルでエントリを選択します。 Azure Databricks に、そのバージョンが表示されます。
[このバージョンの復元] をクリックします。
[確認] をクリックして、復元したいのがそのバージョンであることを確認します。
ノートブックのリンクを解除する
ノートブックの右上にある [リビジョン履歴 ] をクリックして、履歴パネルを開きます。
Git ステータス バーに [Git: 同期済み] と表示されます。
[Git: 同期済み] をクリックします。
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 を作成することができます。 [Create PR] (PR の作成) リンクは、親リポジトリの既定のブランチで作業していない場合にのみ表示されます。
トラブルシューティング
GitHub 履歴の同期に関連するエラーが発生した場合は、以下を確認してください。
- ノートブックは、空ではない初期化された Git リポジトリにのみリンクできます。 Web ブラウザーで URL をテストします。
- GitHub 個人用アクセス トークンはアクティブである必要があります。
- プライベート GitHub リポジトリを使用するには、そのリポジトリの読み取りアクセス許可が必要です。
- 名前が変更された GitHub ブランチにノートブックがリンクされている場合、その変更は Azure Databricks に自動的に反映されません。 手動でノートブックをブランチに再リンクする必要があります。