本页介绍如何在 Azure Databricks 工作区中使用 Git 文件夹执行常见的 Git 操作,包括克隆、分支、提交和推送。
本指南涵盖以下Git操作:
| 安装和配置 | 每日工作流 | 高级操作 |
|---|---|---|
克隆存储库
克隆远程存储库时,Databricks 会在工作区中创建一个 Git 文件夹,其中包含存储库内容并跟踪更改。 可以使用 Azure Databricks UI 或 Web 终端创建 Git 文件夹。
注意
- 您必须在希望创建 Git 文件夹的父文件夹上具有
CAN MANAGE的权限。 - 您的工作区必须配置 Git 凭据。 请参阅 将 Git 提供程序连接到 Databricks。
从用户界面克隆
在边栏中,选择 “工作区 ”并浏览到要在其中创建 Git 存储库克隆的文件夹。
单击“ 创建>Git”文件夹。
在“创建 Git 文件夹”对话框中提供以下信息:
领域 Description Git 存储库 URL 要克隆的 Git 存储库的 URL,格式 https://example.com/organization/project.git为 。Git 服务提供商 要克隆的存储库的 Git 提供程序。 Git 文件夹名称 工作区中包含克隆存储库内容的文件夹的名称。 稀疏签出模式 是否使用稀疏签出,即使用圆锥模式仅克隆存储库中的部分目录。 如果存储库超出 大小限制,这非常有用。 使用 Git CLI (Beta 版) 允许直接从 Azure Databricks 终端运行标准 Git 命令。 这提供了对高级操作的访问,例如预提交挂钩、Git 子模块和大型文件存储(LFS)。 请参阅“使用 Git CLI”命令(Beta 版)。 单击“创建 Git 文件夹”。 远程存储库的内容已克隆到您的工作区,您可以开始使用受支持的 Git 操作。
从 Web 终端克隆
还可以直接从 Web 终端创建具有 CLI 访问权限的 Git 文件夹:
访问 Web 终端。 请参阅在 Azure Databricks Web 终端中运行 Shell 命令。
导航到
/Workspace的父目录。cd /Workspace/Users/<your-email>/<project>注意
无法使用 Git CLI 访问权限
/Repos在或现有 Git 文件夹中创建 Git 文件夹。克隆存储库:
git clone <remote-url>该
git clone命令使用工作区中配置的 Git 凭据。 请参阅 将 Git 提供程序连接到 Databricks。刷新浏览器以查看工作区文件浏览器中的新文件夹。
使用 Git CLI 命令(Beta 版)
重要
此功能在 Beta 版中。 工作区管理员可以从 预览 页控制对此功能的访问。 请参阅 管理 Azure Databricks 预览版。
通过 Git CLI 访问的 Git 文件夹,可以直接从 Azure Databricks 终端运行标准 Git 命令。 您可以:
- 运行任何 Git 命令,包括
git stash和git pull --forcegit rebase -i。 - 将 linting 和代码扫描与预提交挂钩集成。
- 使用超越标准 Git 文件夹 2 GB 内存限制和 4 GB 磁盘限制的存储库。
- 使用 Git 子模块和大型文件存储(LFS)。
- 在本地分阶段暂存多个提交记录,然后再推送到远程存储库。
若要使用 Git CLI 访问权限,工作区必须在环境版本 4 或更高版本中启用 无服务器计算 。
使用 Git CLI 访问权限创建 Git 文件夹
若要创建具有 CLI 访问权限的 Git 文件夹,
创建具有 CLI 访问权限的 Git 文件夹后,从 Web 终端运行任何标准 Git 命令:
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 命令忽略阻止提交笔记本输出的管理员设置。
- 具有 CLI 访问权限的 Git 文件夹不支持 Repos API。
- 无法为现有 Git 文件夹启用 Git CLI 访问。
排查Git CLI操作问题
- 终端在每次操作时提示输入凭据:工作区上未启用 Git CLI 功能。 请与工作区管理员联系,验证预览是否已启用。
- 无法启用 CLI 访问:具有远程 URL 允许列表的工作区无法使用 Git CLI 功能。 请联系工作区管理员查看工作区的网络配置。
-
Git 操作失败,出现权限错误:请验证您对父文件夹是否具有
CAN MANAGE权限,以及您的工作区 Git 凭证是否有效。 请参阅 将 Git 提供程序连接到 Databricks。
访问 Git 对话框
从笔记本或 Azure Databricks Git 文件夹浏览器访问 Git 对话框。
在笔记本中,单击标识当前 Git 分支的笔记本名称旁边的按钮。
在 Azure Databricks Git 文件夹浏览器中,单击存储库名称旁边的 Git 。
会显示一个全屏对话框,您可以在其中执行 Git 操作。
- 当前工作分支。 在此处可以选择其他分支。 如果其他用户有权访问此 Git 文件夹,并且他们共享同一工作区,那么更改分支后,他们的分支也会随之更改。 请参阅建议的最佳做法以避免此问题。
- 新建分支。
- 签入您当前分支的文件资产和子文件夹。
- 显示当前分支历史记录。
- 从远程 Git 存储库拉取内容。
- 为更改添加提交消息和可选的扩展说明。
- 将工作提交到工作分支,并将更新的分支推送到远程 Git 存储库。
单击 ,Kebab 菜单可从其他 Git 分支操作中进行选择,例如硬重置、合并或变基。
创建新分支
若要创建新分支,请执行以下操作:
- 打开 Git 对话框。
- 单击“创建分支”。
- 输入新分支的名称,然后选择基分支。
- 单击 “创建” 。
切换到其他分支
若要切换到其他分支,请使用 Git 对话框中的分支下拉列表:
如果未提交的更改与新分支上的代码不冲突,则当前分支上的未提交更改将延续并显示为未提交的更改。 如果不打算保留未提交的更改,请在分支切换前后放弃这些更改。
删除远程分支后,分支的本地版本可以保留在关联的 Git 文件夹中长达 30 天。 若要完全删除 Git 文件夹中的本地分支,请删除存储库。
重要
当新分支不包含这些资产时,切换分支可能会删除工作区资产。 切换回当前分支会使用新 ID 和 URL 重新创建已删除的资产。 无法撤消此更改。
如果从 Git 文件夹中共享或为资产添加书签,请先在新分支上验证资产是否存在,然后再切换。
提交和推送更改
添加新的笔记本或文件时,或者对现有笔记本或文件进行更改时,Git 文件夹 UI 会突出显示所做的更改。
为更改添加所需的提交消息,然后单击“ 提交”和“推送 ”将更改推送到远程 Git 存储库。
如果无权提交到默认分支,请创建新分支并使用 Git 提供程序的接口创建拉取请求并将其合并到默认分支。
注意
默认情况下,当笔记本以源文件格式(.py、.scala.sql、.r) 保存时,笔记本输出不会包含在提交中。 有关使用 IPYNB 格式提交笔记本输出的信息,请参阅 控制 IPYNB 笔记本输出项目提交。
拉取更改
若要从远程 Git 存储库拉取更改,请单击 Git 操作对话框中的“拉取”。 笔记本和其他文件会自动更新到远程 Git 存储库中的最新版本。 如果从远程存储库提取的更改与 Azure Databricks 中的本地更改冲突,请解决 合并冲突。
重要
从上游拉取更改的 Git 操作会清除笔记本状态。 请参阅 传入的更改会清除笔记本状态。
在 Git 文件夹中进行协作
Azure Databricks Git 文件夹在工作区中充当嵌入的 Git 客户端,允许你通过基于 Git 的源代码管理和版本控制进行协作。 对于有效的团队协作:
- 每个团队成员都有自己的 Git 文件夹,这些文件夹映射到远程 Git 存储库,他们可在自己的开发分支中工作。
- 每个 Git 文件夹只有一个用户执行 Git 操作。 在同一文件夹中执行 Git操作的多个用户可能会导致分支管理问题,例如一个用户无意间为所有人切换了分支。
若要与协作者共享 Git 文件夹配置,请执行以下作:
- 单击“共享”。
- 单击 “复制”链接以创建 Git 文件夹。
- 将 URL 发送给协作者。
- 当协作者打开 URL 时,他们会看到预填充了 Git 文件夹配置的对话框。
- 单击创建 Git 文件夹,将存储库克隆到他们当前工作文件夹下的个人工作区中。
合并分支
Azure Databricks Git 文件夹中的合并函数用于 git merge 将提交历史记录从一个分支合并到另一个分支。 对于 Git 初学者,Databricks 建议使用合并而不是存储库,因为它不需要强制推送,也不会重写提交历史记录。
若要将一个分支合并到另一个分支,请单击 烤肉串菜单,然后选择“ 合并”。
- 如果存在合并冲突,请在 Git 文件夹 UI 中解决它。
- 如果没有冲突,合并将使用
git push推送到远程 Git 存储库。
解决合并冲突
当 Git 无法自动协调来自不同源的相同文件行的更改(例如在拉取、重新数据库或合并作期间)时,会发生合并冲突。
若要解决合并冲突,请使用显示冲突文件和解决选项的 Git 文件夹 UI。
- 手动编辑文件以选择要保留的更改。
- 选择 “保留所有当前更改 ”或 “获取所有传入更改 ”以完全接受一个版本。
- 中止操作并放弃冲突的更改以重试。
手动解决冲突
通过手动冲突解决,可以确定要接受的冲突行。 直接编辑文件内容以解决冲突。
要解决冲突,请选择要保留的代码行并删除所有其他代码行,包括 Git 合并冲突标记。 完成后,选择“标记为已解决”。
如果在解决合并冲突时做出了错误选择,请单击“ 中止 ”以中止进程并撤消所有内容。 解决所有冲突后,单击 “继续合并” 或 “继续 Rebase” 以解决冲突并完成该操作。
分支变基
Azure Databricks Git 文件夹中的 rebase 函数使用 git rebase 将一个分支的更改重新应用于目标分支之上,从而集成到另一个分支,创建线性历史记录。
若要在另一个分支上重新设置分支的基数,请单击 烤肉串菜单并选择 “Rebase”,然后选择目标分支。
- 在变基之后,运行 Git 命令
git commit和git push --force来更新远程存储库。 - 重新定基重写提交历史记录,这可能会导致同一存储库中工作的协作者出现版本控制问题。
重置分支
从 Git 文件夹 UI 执行 Git 重置。 此操作等同于 git reset --hard 与 git push --force.
Git reset 会将分支内容和历史记录替换为另一个分支的最新状态。 当编辑与上游分支冲突时,可以使用此功能,在重置到上游分支时不介意丢失这些编辑。
了解更多有关 git reset --hard的信息。
重置为远程分支
在这种情况下使用 git reset:
- 将所选分支(例如
feature_a)重置为其他分支(例如main)。 - 此外,您还将上游(远程)分支
feature_a重置为 main。
重要
重置时,会丢失分支本地版本和远程版本中所有未提交和已提交的更改。
若要将分支重置为远程分支,请执行以下操作:
在 Git 文件夹 UI 的“分支”菜单中,选择要重置的分支。
从 中选择Kebab menu icon.“重置”。烤肉串菜单。
选择要重置的分支,然后单击“ 运行 Git 重置”。
配置稀疏签出模式
稀疏检出是一种客户端设置,允许您在 Azure Databricks 中仅克隆并使用远程存储库的一部分目录。 如果存储库的大小超过 Azure Databricks 支持 的限制,则这尤其有用。
克隆新存储库时启用稀疏签出模式。 启用后,无法禁用稀疏签出模式。
在“ 创建 Git 文件夹 ”对话框中,启用 稀疏签出模式。
在“锥形模式”框中,指定所需的锥形签出模式。 用换行符分隔多个模式。
锥形模式的工作原理
若要了解圆锥模式在稀疏签出模式下的工作原理,请参阅下图,该图表示远程存储库结构。
如果选择 稀疏签出模式,但未指定圆锥模式,则应用默认圆锥模式。 这只包括根目录中的文件,没有子目录,导致存储库结构如下所示:
设置稀疏签出锥形模式为 parent/child/grandchild 将递归包含目录 grandchild 的所有内容。 文件会立即包含在/parent、/parent/child和根目录中。 参阅以下示意图中的目录结构:
注意
Git cone 模式语法不支持排除行为(!)。
修改稀疏签出设置
创建存储库后,请从设置>锥形模式>中编辑稀疏签出锥形模式。
注意以下行为:
如果不存在未提交的更改,则从圆锥模式中删除文件夹会将其从 Azure Databricks 中删除。
通过编辑稀疏检出锥形模式添加文件夹,将其直接添加到 Azure Databricks,而无需额外执行拉取操作。
如果文件夹中存在未提交的更改,则无法更改稀疏签出模式以删除该文件夹。
例如,如果编辑文件夹中的文件且未提交更改,请尝试更改稀疏签出模式以排除该文件夹,则会接受该模式,但不会删除该文件夹。 需要还原模式以包含该文件夹、提交更改,然后重新应用新模式。
使用稀疏签出的方式进行更改
编辑现有文件,并从 Git 文件夹提交并推送它们。 创建新文件夹时,请将它们包含在为该存储库指定的锥形模式中。
在锥形模式之外包含新文件夹会导致执行提交和推送操作期间出错。 若要修复此问题,请编辑圆锥模式以包含尝试提交和推送的新文件夹。
稀疏签出限制
- 稀疏签出不适用于大于 4 GB 的 Azure DevOps 存储库。
- 无法为启用了稀疏签出的存储库禁用稀疏签出。
以编程方式管理 Git 文件夹
若要使用 API 管理 Git 文件夹,请参阅 Repos API 参考。
删除 Git 文件夹
若要从工作区中删除 Git 文件夹,请执行以下作:
- 右键单击 Git 文件夹,然后选择 “移动到回收站”。
- 单击“ 确认”并移动到回收站。
后续步骤
- 设置身份验证以将 Azure Databricks 连接到 Git 提供程序。 请参阅 将 Git 提供程序连接到 Databricks。
- 了解 Git 文件夹的大小限制和其他约束。 请参阅 Databricks Git 文件夹限制和参考。
- 为 Git 集成配置工作区级设置。 请参阅 设置 Databricks Git 文件夹。