在 Databricks Git 資料夾執行 Git 作業 (Repos)
本文說明如何使用 Git 資料夾在 Databricks 工作區中執行常見的 Git 作業,包括複製、分支、認可和推送。
複製連線至遠端 Git 存放庫的存放庫
在提要建立 Git 存放庫複製的資料夾中,選取 [工作區 ],然後流覽至您要建立 Git 存放庫複製的資料夾。
按兩下工作區右上角 [新增] 右邊的向下箭號,然後從下拉式清單中選取 [Git 資料夾]。
在 [ 建立 Git 資料夾] 對話框中,提供下列資訊:
- 您想要複製之 Git 存放庫的 URL,格式為
https://example.com/organization/project.git
- 您要複製之存放庫的 Git 提供者。 選項包括 GitHub、GitHub Enterprise、GitLab 和 Azure DevOps (Azure Repos)
- 工作區中將包含所複製存放庫內容的資料夾名稱
- 您是否要使用疏鬆結帳,其中只會複製使用圓錐模式指定的子目錄
- 您想要複製之 Git 存放庫的 URL,格式為
在這個階段,您可以選擇只使用 疏鬆簽出複製存放庫目錄的子集。 如果您的存放庫大於 Databricks 支援 的限制,這會很有用
- 按下 [建立 Git 資料夾]。 遠端存放庫的內容會複製到 Databricks 存放庫,您可以透過工作區使用支援的 Git 作業開始使用它們。
最佳做法:在 Git 資料夾中共同作業
Databricks Git 資料夾實際上會作為工作區中的內嵌 Git 客戶端運作,讓使用者可以使用 Git 原始檔控制和版本控制共同作業。 若要讓小組共同作業更有效率, 請使用對應至遠端 Git 存放庫的個別 Databricks Git 資料夾,供在自己的開發分支 中工作的每位使用者使用。 雖然多個使用者可以將內容貢獻至 Git 資料夾,但只有 一個 指定的使用者應該執行 Git 作業,例如提取、推送、認可和分支切換。 如果多個使用者對 Git 資料夾執行 Git 作業,分支管理可能會變得困難且容易發生錯誤,例如當使用者切換分支,而無意中將分支切換給該資料夾的所有其他使用者時。
若要與共同作業者共用 Git 資料夾,請按兩下 [複製] 連結,以在 Databricks 工作區頂端的橫幅中建立 Git 資料夾 。 此動作會將 URL 複製到本機剪貼簿,您可以傳送給其他使用者。 當收件者使用者在瀏覽器中載入該 URL 時,他們會被帶到工作區,以便從相同的遠端 Git 存放庫複製自己的 Git 資料夾。 他們會在UI中看到 [建立 Git 資料夾 強制回應] 對話框,並預先填入從您自己的 Git 資料夾取得的值。 當他們在強制回應中按兩下藍色 的 [建立 Git 資料夾 ] 按鈕時,Git 存放庫會複製到其目前工作資料夾下的工作區中,在那裡他們現在可以直接使用它。
在共用工作區中存取其他人的 Git 資料夾時,按兩下頂端橫幅中的 [ 建立 Git 資料夾 ]。 此動作會為您開啟 [ 建立 Git 資料夾 ] 對話框,並預先填入支援它的 Git 存放庫設定。
重要
目前您無法使用 Git CLI 在 Git 資料夾中執行 Git 作業。 如果您使用 CLI 透過叢集的 Web 終端機複製 Git 存放庫,檔案將不會顯示在 Azure Databricks UI 中。
存取 Git 對話框
您可以從筆記本或 Databricks Git 資料夾瀏覽器存取 Git 對話框。
從筆記本中,按兩下可識別目前 Git 分支之筆記本名稱旁的按鈕。
從 Databricks Git 資料夾瀏覽器,按下存放庫名稱右邊的按鈕。 您也可以以滑鼠右鍵按下存放庫名稱,然後從功能表中選取 [Git... ]。
您會看到一個全螢幕對話框,您可以在其中執行 Git 作業。
- 您目前的工作分支。 您可以在這裡選取其他分支。 如果其他使用者可以存取此 Git 資料夾,變更分支也會在共用相同的工作區時變更其分支。 請參閱建議 的最佳做法 ,以避免此問題。
- 要建立新分支的按鈕。
- 簽入最新分支的檔案資產和子資料夾清單。
- 將您帶往 Git 提供者並顯示最新分支歷程記錄的按鈕。
- 從遠端 Git 存放庫提取內容的按鈕。
- 您可以在其中新增認可訊息的文字框,以及變更的選擇性展開描述。
- 將工作認可至工作分支的按鈕,並將更新的分支推送至遠端 Git 存放庫。
按兩下右上方的Kebab,從其他 Git 分支作業中選擇,例如硬式重設、合併或重新基底。
這是您在工作區 Git 資料夾上執行 Git 作業的首頁。 您受限於使用者介面中顯示的 Git 作業。
建立新分支
您可以從 [Git] 對話框,根據現有的分支來建立新的分支:
切換至不同的分支
您可以使用 Git 對話框中的分支下拉式清單,切換至不同的分支:
重要
當您簽出 Git 資料夾中的分支之後,一律可能會讓其他人刪除遠端 Git 存放庫上的分支。 如果在遠端存放庫上刪除分支,本機版本最多可以保留在相關聯的 Git 資料夾中長達 7 天。 Databricks 中的本機分支無法刪除,因此,如果您必須移除它們,您也必須刪除並重新整理存放庫。
認可變更並推送至遠端 Git 存放庫
當您已新增筆記本或檔案,或對現有筆記本或檔案進行變更時,Git 資料夾 UI 會醒目提示變更。
新增變更所需的認可訊息,然後按兩下 [認可和推送 ] 將這些變更推送至遠端 Git 存放庫。
如果您沒有認可預設分支的許可權(例如 main
分支),請建立新的分支,並使用 Git 提供者的介面來建立提取要求 (PR) 將其合併至預設分支。
注意
- 當筆記本以原始程式檔格式儲存時,筆記本輸出預設不會包含在認可中(
.py
、.scala
、 。.sql
.r
如需使用IPYNB格式認可筆記本輸出的相關信息,請參閱 控制IPYNB筆記本輸出成品認可
從遠端 Git 存放庫提取變更
若要從遠端 Git 存放庫提取變更,請按兩下 [Git 作業] 對話方塊中的 [ 提取 ]。 筆記本和其他檔案會自動更新為遠端 Git 存放庫中的最新版本。 如果從遠端存放庫提取的變更與 Databricks 中的本機變更發生衝突,您需要解決 合併衝突。
重要
提取上游變更的 Git 作業會清除筆記本狀態。 如需詳細資訊,請參閱 傳入變更清除筆記本狀態。
合併分支
從 Git 作業對話框右上方的 Kebab 中選取 Git 合併作業,以存取 Git 合併作業。
Databricks Git 資料夾中的合併函式會使用 git merge
將一個分支合併到另一個分支。 合併作業是將認可歷程記錄從一個分支合併到另一個分支的方法;唯一的差異在於它用來達成此目的的策略。 針對 Git 初學者,我們建議使用合併 (過度重新基底),因為它不需要強制推送至分支,因此不會重寫認可歷程記錄。
- 如果發生合併衝突,請在 Git 資料夾 UI 中加以解決。
- 如果沒有衝突,合併會使用
git push
推送至遠端 Git 存放庫。
Rebase
另一個分支上的分支
從 Git 作業對話框右上方的 Kebab 功能表選取 Git Rebase 作業,以存取 Git Rebase 作業。
重新設定會改變分支的認可歷程記錄。 如同 git merge
, git rebase
會將一個分支的變更整合到另一個分支中。 Rebase 會執行下列動作:
- 將目前分支上的認可儲存到暫存區域。
- 將最新分支重設為所選分支。
- 重新套用先前儲存在最新分支上的每個個別認可,進而產生結合這兩個分支變更的線性歷程記錄。
警告
使用 Rebase 可能會讓共同作業者在同一存放庫中運作版本問題。
常見的工作流程是在主要分支上重新建立功能分支基底。
若要在另一個分支上重新建立分支基底:
從 Git 資料夾 UI 的 [ 分支 ] 選單中,選取您要重新建置的分支。
從 Kebab 功能表中選取 [重新基底 ]。
選取您要重新建立基礎的分支。
重新基底作業會將您在這裡選擇的分支變更整合到最新分支中。
Databricks Git 資料夾會執行 git commit
並 git push --force
更新遠端 Git 存放庫。
解決合併衝突
當 2 個以上的 Git 使用者嘗試將相同檔案的變更合併到一般分支,而 Git 無法選擇要套用的「正確」變更時,就會發生合併衝突。 當用戶嘗試從另一個分支提取或合併變更時,也會發生合併衝突,併產生未認可的變更。
如果提取、重新基底或合併之類的作業造成合併衝突,Git 資料夾 UI 會顯示具有衝突的檔案清單,以及解決衝突的選項。
您有兩個主要選項:
- 使用 Git 資料夾 UI 來解決衝突。
- 中止 Git 作業、手動捨棄衝突檔案中的變更,然後再次嘗試 Git 作業。
解決與 Git 資料夾 UI 的合併衝突時,您必須選擇手動解決編輯器中的衝突,或保留所有傳入或目前的變更。
保留所有目前 或 進行傳入變更
如果您只知道只想要保留所有目前或傳入的變更,請按下筆記本窗格中檔名右邊的Kebab,然後選取 [保留所有目前的變更] 或 [採取所有傳入變更]。 按兩下具有相同標籤的按鈕,認可變更並解決衝突。
提示
對選擇哪一個選項感到困惑? 每個選項的色彩都會符合其將保留在檔案中的個別程式代碼變更。
手動解決衝突
手動解決衝突可讓您判斷合併中應接受哪一行衝突。 針對合併衝突,您可以直接編輯檔案的內容與衝突來解決衝突。
若要解決衝突,請選取您想要保留的程式代碼行,並刪除其他所有專案,包括 Git 合併衝突標記。 完成時,請選取 [ 標示為已解決]。
如果您決定在解決合併衝突時做出錯誤選擇,請按兩下 [中止 ] 按鈕以中止程式並復原所有專案。 解決所有衝突之後,請按兩下 [ 繼續合併 ] 或 [繼續重新基底] 選項來解決衝突並完成作業。
Git reset
在 Databricks Git 資料夾中,您可以在 Azure Databricks UI 中執行 Git reset
。 Databricks Git 資料夾中的 Git 重設相當於 git reset --hard
與 git push --force
結合。
Git 重設會將分支內容和歷程記錄取代為另一個分支的最新狀態。 當編輯與上游分支發生衝突時,您可以使用此選項,而且當您重設為上游分支時,不介意遺失這些編輯。 深入瞭解 git reset –hard
。
重設為上游 (遠端) 分支
git reset
在此案例中:
- 您會將選取的分支 (例如,
feature_a
) 重設為不同的分支 (例如 ,main
)。 - 您也會將上游 (remote) 分支
feature_a
重設為 main。
重要
當您重設時,您會在分支的本機和遠端版本中遺失所有未認可和認可的變更。
若要將分支重設為遠端分支:
在 [分支] 功能表中的 [Git 資料夾] UI 中,選擇您要重設的分支。
從 Kebab 功能表選取 [ 重設 ]。
選取要重設的分支。
設定疏鬆結帳模式
疏鬆簽出是客戶端設定,可讓您只複製及處理 Databricks 中遠端存放庫目錄的子集。 如果您的存放庫大小超出 Databricks 支援 的限制,這特別有用。
您可以在新增 [複製] 新存放庫時,使用疏鬆結帳模式。
在 [ 新增 Git 資料夾] 對話框中,開啟 [ 進階]。
選取 [疏鬆簽出模式]。
在 [ 錐形模式] 方塊中,指定您想要的錐形結帳模式。 以換行符分隔多個模式。
此時,您無法停用 Azure Databricks 中存放庫的疏鬆簽出。
圓錐模式的運作方式
若要瞭解圓錐模式在疏鬆簽出模式中的運作方式,請參閱下圖,代表遠端存放庫結構。
如果您選取疏 鬆結帳模式,但未指定圓錐模式,則會套用預設圓錐模式。 這隻包含根目錄中的檔案,而且沒有子目錄,導致存放庫結構如下:
將疏鬆簽出圓錐模式設定為 parent/child/grandchild
會以遞歸方式包含目錄的所有內容 grandchild
。 也會包含 立即在和 /parent
/parent/child
根目錄中的檔案。 請參閱下圖中的目錄結構:
您可以新增多個以換行符分隔的模式。
注意
Git 圓錐模式語法中不支援排除行為 (!
)。
修改疏鬆結帳設定
建立存放庫之後,即可從 [設定 > 進階 > 錐體] 模式編輯疏鬆結賬錐形模式。
注意以下行為:
如果沒有任何未認可的變更,請從錐形模式移除資料夾, 會從 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。