在 Databricks Git 資料夾上執行 Git 作業 (Repos)

本文說明如何使用 Git 資料夾在 Databricks 工作區中執行常見的 Git 作業,包括複製、分支、認可和推送。

複製連線至遠端 Git 存放庫的存放庫

  1. 在提要建立 Git 存放庫複製的資料夾中,選取 [工作區 ],然後流覽至您要建立 Git 存放庫複製的資料夾。

  2. 按兩下工作區右上角 [新增] 右邊的向下箭號,然後從下拉式清單中選取 [Git 資料夾]。

    新增存放庫 UI。

  3. 在 [ 建立 Git 資料夾] 對話框中,提供下列資訊:

    • 您想要複製之 Git 存放庫的 URL,格式為 https://example.com/organization/project.git
    • 您要複製之存放庫的 Git 提供者。 選項包括 GitHub、GitHub Enterprise、GitLab 和 Azure DevOps (Azure Repos)
    • 工作區中將包含所複製存放庫內容的資料夾名稱
    • 您是否要使用疏鬆結帳,其中只會複製使用圓錐模式指定的子目錄

    從 Git 資料夾 UI 複製。

在這個階段,您可以選擇只使用 疏鬆簽出複製存放庫目錄的子集。 如果您的存放庫大於 Databricks 支援 的限制,這會很有用

  1. 按兩下 [ 建立 Git 資料夾]。 遠端存放庫的內容會複製到 Databricks 存放庫,您可以透過工作區使用支援的 Git 作業開始使用它們。

最佳做法:在 Git 資料夾中共同作業

Databricks Git 資料夾實際上會作為工作區中的內嵌 Git 客戶端運作,讓使用者可以使用 Git 原始檔控制和版本控制共同作業。 若要讓小組共同作業更有效率, 請使用對應至遠端 Git 存放庫的個別 Databricks Git 資料夾,供在自己的開發分支 中工作的每位使用者使用。 雖然多個使用者可以將內容貢獻至 Git 資料夾,但只有 一個 指定的使用者應該執行 Git 作業,例如提取、推送、認可和分支切換。 如果多個使用者對 Git 資料夾執行 Git 作業,分支管理可能會變得困難且容易發生錯誤,例如當使用者切換分支,而無意中將分支切換給該資料夾的所有其他使用者時。

重要

目前您無法使用 Git CLI 在 Git 資料夾中執行 Git 作業。 如果您使用 CLI 透過叢集的 Web 終端機複製 Git 存放庫,檔案將不會顯示在 Azure Databricks UI 中。

存取 Git 對話框

您可以從筆記本或 Databricks Git 資料夾瀏覽器存取 Git 對話框。

  • 從筆記本中,按兩下可識別目前 Git 分支之筆記本名稱旁的按鈕。

    筆記本上的 Git 對話框按鈕。

  • 從 Databricks Git 資料夾瀏覽器,按下存放庫名稱右邊的按鈕。 您也可以以滑鼠右鍵按下存放庫名稱,然後從功能表中選取 [Git... ]。

    存放庫瀏覽器中的 Git 對話框按鈕和 Git 功能表。

您會看到一個全螢幕對話框,您可以在其中執行 Git 作業。

用來在 Databricks 工作區中執行 Git 作業的對話框。

  1. 您目前的工作分支。 您可以在這裡選取其他分支。 如果其他使用者可以存取此 Git 資料夾,變更分支也會在共用相同的工作區時變更其分支。 請參閱建議 的最佳做法 ,以避免此問題。
  2. 要建立新分支的按鈕。
  3. 簽入最新分支的檔案資產和子資料夾清單。
  4. 將您帶往 Git 提供者並顯示最新分支歷程記錄的按鈕。
  5. 從遠端 Git 存放庫提取內容的按鈕。
  6. 您可以在其中新增認可訊息的文字框,以及變更的選擇性展開描述。
  7. 將工作認可至工作分支的按鈕,並將更新的分支推送至遠端 Git 存放庫。

Kebab 功能表按兩下右上方的Kebab,從其他 Git 分支作業中選擇,例如硬式重設、合併或重新基底。

分支作業之 Git 資料夾對話框的下拉功能表。

這是您在工作區 Git 資料夾上執行 Git 作業的首頁。 您受限於使用者介面中顯示的 Git 作業。

建立新分支

您可以從 [Git] 對話框,根據現有的分支來建立新的分支:

Git 對話框新分支。

切換至不同的分支

您可以使用 Git 對話框中的分支下拉式清單,切換至不同的分支:

Git 對話框切換至不同的分支

重要

當您簽出 Git 資料夾中的分支之後,一律可能會讓其他人刪除遠端 Git 存放庫上的分支。 如果在遠端存放庫上刪除分支,本機版本最多可以保留在相關聯的 Git 資料夾中長達 7 天。 Databricks 中的本機分支無法刪除,因此,如果您必須移除它們,您也必須刪除並重新整理存放庫。

認可變更並推送至遠端 Git 存放庫

當您已新增筆記本或檔案,或對現有筆記本或檔案進行變更時,Git 資料夾 UI 會醒目提示變更。

已醒目提示變更的 Git 對話框。

新增變更所需的認可訊息,然後按兩下 [認可和推送 ] 將這些變更推送至遠端 Git 存放庫。

如果您沒有認可預設分支的許可權(例如 main 分支),請建立新的分支,並使用 Git 提供者的介面來建立提取要求 (PR) 將其合併至預設分支。

注意

  • 當筆記本以原始程式檔格式儲存時,筆記本輸出預設不會包含在認可中(.py.scala、 。 .sql.r 如需使用IPYNB格式認可筆記本輸出的相關信息,請參閱 控制IPYNB筆記本輸出成品認可

從遠端 Git 存放庫提取變更

若要從遠端 Git 存放庫提取變更,請按兩下 [Git 作業] 對話方塊中的 [ 提取 ]。 筆記本和其他檔案會自動更新為遠端 Git 存放庫中的最新版本。 如果從遠端存放庫提取的變更與 Databricks 中的本機變更發生衝突,您需要解決 合併衝突

重要

提取上游變更的 Git 作業會清除筆記本狀態。 如需詳細資訊,請參閱 傳入變更清除筆記本狀態

合併分支

Kebab 功能表 Git 作業對話框右上方的 Kebab 中選取 Git 合併作業,以存取 Git 合併作業。

Databricks Git 資料夾中的合併函式會使用 git merge將一個分支合併到另一個分支。 合併作業是將認可歷程記錄從一個分支合併到另一個分支的方法;唯一的差異在於它用來達成此目的的策略。 針對 Git 初學者,我們建議使用合併 (過度重新基底),因為它不需要強制推送至分支,因此不會重寫認可歷程記錄。

若要深入了解合併與重新處理認可之間的差異,請參閱 Atlassian 關於此主題的檔。

  • 如果發生合併衝突,請在 Git 資料夾 UI 中加以解決。
  • 如果沒有衝突,合併會使用 git push推送至遠端 Git 存放庫。

Rebase 另一個分支上的分支

Kebab 功能表 Git 作業對話框右上方的 Kebab 功能表選取 Git Rebase 作業,以存取 Git Rebase 作業。

重新設定會改變分支的認可歷程記錄。 如同 git mergegit rebase 會將一個分支的變更整合到另一個分支中。 Rebase 會執行下列動作:

  1. 將目前分支上的認可儲存到暫存區域。
  2. 將最新分支重設為所選分支。
  3. 重新套用先前儲存在最新分支上的每個個別認可,進而產生結合這兩個分支變更的線性歷程記錄。

如需重新basing的深入說明,請參閱 git rebase

警告

使用 Rebase 可能會讓共同作業者在同一存放庫中運作版本問題。

常見的工作流程是在主要分支上重新建立功能分支基底。

若要在另一個分支上重新建立分支基底:

  1. 從 Git 資料夾 UI 的 [ 分支 ] 選單中,選取您要重新建置的分支。

  2. 從 Kebab 功能表中選取 [重新基底 ]。

    Kebab 功能表上的 Git rebase 函式。

  3. 選取您要重新建立基礎的分支。

    重新基底作業會將您在這裡選擇的分支變更整合到最新分支中。

Databricks Git 資料夾會執行 git commitgit push --force 更新遠端 Git 存放庫。

解決合併衝突

當 2 個以上的 Git 使用者嘗試將相同檔案的變更合併到一般分支,而 Git 無法選擇要套用的「正確」變更時,就會發生合併衝突。 當用戶嘗試從另一個分支提取或合併變更時,也會發生合併衝突,併產生未認可的變更。

動畫 GIF,顯示 Git 提取期間未認可的變更所產生的常見合併衝突

如果提取、重新基底或合併之類的作業造成合併衝突,Git 資料夾 UI 會顯示具有衝突的檔案清單,以及解決衝突的選項。

您有兩個主要選項:

  • 使用 Git 資料夾 UI 來解決衝突。
  • 中止 Git 作業、手動捨棄衝突檔案中的變更,然後再次嘗試 Git 作業。

顯示 Databricks Git 資料夾 UI 中合併衝突的動畫 GIF

解決與 Git 資料夾 UI 的合併衝突時,您必須選擇手動解決編輯器中的衝突,或保留所有傳入或目前的變更。

保留所有目前進行傳入變更

如果您只知道只想要保留所有目前或傳入的變更,請按下筆記本窗格中檔名右邊的Kebab,然後選取 [保留所有目前的變更] 或 [採取所有傳入變更]。 按兩下具有相同標籤的按鈕,認可變更並解決衝突。

Databricks Notebook UI 的窗格,顯示合併衝突解決的下拉式清單選項

提示

對選擇哪一個選項感到困惑? 每個選項的色彩都會符合其將保留在檔案中的個別程式代碼變更。

手動解決衝突

手動解決衝突可讓您判斷合併中應接受哪一行衝突。 針對合併衝突,您可以直接編輯檔案的內容與衝突來解決衝突。

顯示合併衝突手動解決的動畫GIF

若要解決衝突,請選取您想要保留的程式代碼行,並刪除其他所有專案,包括 Git 合併衝突標記。 完成時,請選取 [ 標示為已解決]。

如果您決定在解決合併衝突時做出錯誤選擇,請按兩下 [中止 ] 按鈕以中止程式並復原所有專案。 解決所有衝突之後,請按兩下 [ 繼續合併 ] 或 [繼續重新基底] 選項來解決衝突並完成作業。

Git reset

在 Databricks Git 資料夾中,您可以在 Azure Databricks UI 中執行 Git reset 。 Databricks Git 資料夾中的 Git 重設相當於 git reset --hardgit push --force結合。

Git 重設會將分支內容和歷程記錄取代為另一個分支的最新狀態。 當編輯與上游分支發生衝突時,您可以使用此選項,而且當您重設為上游分支時,不介意遺失這些編輯。 深入瞭解 git reset –hard

重設為上游 (遠端) 分支

git reset在此案例中:

  • 您會將選取的分支 (例如, feature_a) 重設為不同的分支 (例如 , main)。
  • 您也會將上游 (remote) 分支 feature_a 重設為 main。

重要

當您重設時,您會在分支的本機和遠端版本中遺失所有未認可和認可的變更。

若要將分支重設為遠端分支:

  1. 在 [分支] 功能表中的 [Git 資料夾] UI 中,選擇您要重設的分支。

    Git 資料夾 UI 中的分支選取器。

  2. 從 Kebab 功能表選取 [ 重設 ]。

    Kebab 功能表上的 Git 重設作業。

  3. 選取要重設的分支。

    Git 重設 --hard 對話框。

設定疏鬆結帳模式

疏鬆簽出是客戶端設定,可讓您只複製及處理 Databricks 中遠端存放庫目錄的子集。 如果您的存放庫大小超出 Databricks 支援 的限制,這特別有用。

您可以在新增 [複製] 新存放庫時,使用疏鬆結帳模式。

  1. 在 [ 新增 Git 資料夾] 對話框中,開啟 [ 進階]。

  2. 選取 [疏鬆簽出模式]。

    [新增 Git 資料夾] 對話框中的疏鬆簽出選項。

  3. 在 [ 錐形模式] 方塊中,指定您想要的錐形結帳模式。 以換行符分隔多個模式。

此時,您無法停用 Azure Databricks 中存放庫的疏鬆簽出。

圓錐模式的運作方式

若要瞭解圓錐模式在疏鬆簽出模式中的運作方式,請參閱下圖,代表遠端存放庫結構。

沒有疏鬆簽出的遠端存放庫結構。

如果您選取疏 鬆結帳模式,但未指定圓錐模式,則會套用預設圓錐模式。 這隻包含根目錄中的檔案,而且沒有子目錄,導致存放庫結構如下:

疏鬆簽出:預設圓錐模式。

將疏鬆簽出圓錐模式設定為 parent/child/grandchild 會以遞歸方式包含目錄的所有內容 grandchild 。 也會包含 立即在和 /parent/parent/child 根目錄中的檔案。 請參閱下圖中的目錄結構:

疏鬆簽出:指定父孫子資料夾錐形模式。

您可以新增多個以換行符分隔的模式。

注意

Git 圓錐模式語法中不支援排除行為 (!)。

修改疏鬆結帳設定

建立存放庫之後,即可從 設定 進>階 > Cone 模式編輯疏鬆結帳錐形模式

注意以下行為:

  • 如果沒有任何未認可的變更,請從錐形模式移除資料夾, 會從 Databricks 中移除它。

  • 透過編輯疏鬆結帳錐形模式新增資料夾,會將它新增至 Databricks,而不需要額外的提取。

  • 當該資料夾中有未認可的變更時,無法變更疏鬆簽出模式來移除資料夾。

    例如,使用者編輯資料夾中的檔案,而且不會認可變更。 然後,她嘗試將疏鬆結帳模式變更為不包含此資料夾。 在此情況下,會接受模式,但不會刪除實際的資料夾。 她必須還原模式以包含該資料夾、認可變更,然後重新套用新的模式。

注意

您無法針對已啟用疏鬆簽出模式所建立的存放庫停用疏鬆簽出。

使用疏鬆結帳進行和推送變更

您可以編輯現有的檔案,並從 Git 資料夾推送它們。 建立檔案的新資料夾時,請將它們包含在您為該存放庫指定的圓錐模式中。

在認可和推送作業期間,在圓錐模式外部加入新資料夾會導致錯誤。 若要修正此問題,請編輯錐形模式,以包含您嘗試認可和推送的新資料夾。

存放庫組態檔的模式

認可輸出組態檔會使用類似 gitignore 模式的 模式,並執行下列動作:

  • 正模式可讓輸出包含比對筆記本。
  • 負模式會停用包含相符筆記本的輸出。
  • 系統會針對所有筆記本評估模式。
  • 忽略無法解析至 .ipynb 筆記本的路徑或路徑無效。

正模式: 若要包含筆記本路徑 folder/innerfolder/notebook.ipynb的輸出,請使用下列模式:

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

負模式: 若要排除筆記本的輸出,請檢查未比對正模式,或在組態檔的正確位置中新增負模式。 負數(排除)模式的開頭為 !

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

疏鬆結帳限制

疏鬆結帳目前不適用於大小超過 4 GB 的 Azure DevOps 存放庫。

新增存放庫並稍後從遠端連線

若要以程式設計方式管理和使用 Git 資料夾,請使用 Git 資料夾 REST API