诊断和解决 Databricks Git 文件夹中的错误

本页介绍将 Azure Databricks Git 文件夹与远程 Git 提供程序结合使用时的常见错误和意外行为,并按类别分组,以帮助你更快地识别原因。 如果此处的指南都无法解决问题,请参阅 “获取帮助”。

身份验证错误

当 Azure Databricks 无法与远程 Git 提供程序验证您的身份时,就会出现这些错误。

Invalid credentials

请尝试以下做法:

  • 确认 Git 集成设置(“设置”“关联帐户”)是否正确>。 必须输入 Git 提供程序的用户名和令牌。

  • 确认在“设置>”中选择了正确的 Git 提供程序。

  • 验证个人访问令牌或应用密码是否具有正确的存储库访问权限。

  • 如果您的 Git 提供商已启用单点登录 (SSO),请为单点登录授权您的令牌。

  • 使用命令行 Git 测试令牌。 替换尖括号中的文本字符串:

    git clone https://<username>:<personal-access-token>@github.com/<org>/<repo-name>.git
    

SSL 连接错误

<link>: Secure connection to <link> could not be established because of SSL problems

当Azure Databricks无法通过 HTTPS 访问 Git 服务器时,会发生此错误。 它通常表示组织的 Git 基础结构存在网络连接问题或 TLS 证书问题。

在联系Azure Databricks帐户团队之前,请准备好以下信息:

  • Git 服务器的 URL
  • 服务器是使用自签名证书还是专用 CA 证书
  • 同一工作区中的其他用户是否看到相同的错误

Microsoft Entra ID 凭据错误

Encountered an error with your :re[ms-entra-id] credentials. Try logging out of :re[ms-entra-id] and logging back in.

当组织最近启用多重身份验证(MFA)策略时,可能会出现此错误。 当 MFA 强制生效时,现有Microsoft Entra ID会话可能无法满足新的身份验证要求,并且连接失败。

若要解决该错误:

  1. 转到 portal.azure.cn并注销Microsoft Entra ID。
  2. 重新登录。 您应该会看到完成 MFA 验证的提示。

如果不起作用,请先注销所有Azure服务,然后再再次登录。

存储库状态错误

当本地 Git 文件夹达到阻止正常操作的状态时,会发生这些错误。

分离的头状态

在 Git 中,“head”是指提交历史记录中的当前位置,并且通常指向分支。 当头直接指向特定提交而不是分支时,存储库处于“分离头”状态。 Git 不会在任何分支上跟踪在此状态下所做的更改。 如果您没有先创建新分支就离开当前页面,这些更改可能会丢失。

Git 文件夹可以在以下情况下进入分离的头状态:

  • 有人删除远程分支。 Azure Databricks尝试通过将未提交的本地更改应用到默认分支来恢复未提交的本地更改。 如果存在冲突的更改,Azure Databricks 会将这些更改应用到默认分支的快照上,从而进入 detached HEAD 状态。
  • 用户或服务主体使用 update repo API 签出标记。

若要从此状态进行恢复:

  1. 单击“创建分支”以从当前提交创建分支,或单击“选择分支”以检出现有分支。
  2. 提交并推送以保留更改。 若要放弃更改,请单击“更改Kebab menu icon.Kebab menu icon.”下的。

存储库状态不一致

There was a problem with deleting folders. The repo could be in an inconsistent state and re-cloning is recommended.

此错误表示删除文件夹时出现问题。 存储库现在处于不一致状态。 删除并重新克隆存储库以重置其状态。

笔记本名称冲突

创建仓库或发起拉取请求时,文件名相同或相似的笔记本可能会导致错误:

Cannot perform Git operation due to conflicting names
A folder cannot contain a notebook with the same name as a notebook, file, or folder (excluding file extensions).

即使存在不同的文件扩展名,也会发生命名冲突。 例如,以下两个文件冲突:

  • notebook.ipynb
  • notebook.py

图示:笔记本、文件或文件夹的名称冲突。

若要修复冲突,请重命名导致错误状态的笔记本、文件或文件夹。 如果克隆存储库时出错,请重命名远程 Git 存储库中的笔记本、文件或文件夹。

意外行为

这些问题不会生成明确的错误消息,但它们是需要调查的问题的迹象。

系统超时错误

克隆大型存储库或签出大型分支等操作可能导致超时错误。 超时后,该操作仍可能在后台完成。

如果看到超时错误:

  1. 等待几分钟,然后刷新 Git 文件夹。 如果存在预期的文件或分支,则操作已成功完成。
  2. 如果工作区负载过大,请在负载减少后重试该操作。

为避免处理大型仓库时发生超时,请使用 稀疏检出,仅处理你需要的文件。

404 错误

如果在打开非笔记本文件时出现 404 错误,请等待几分钟,然后重试。 系统启用工作区时和 Web 应用选取配置之间存在短暂延迟。

笔记本在没有用户编辑的情况下显示为已修改

如果在没有任何用户编辑的情况下,笔记本的每一行都出现修改,则更改可能是由于行结束差异造成的。 Azure Databricks 使用 Linux 样式的换行符(LF),这可能与在 Windows 系统上提交的文件所使用的行尾格式(CRLF)不同。

若要诊断此问题,请检查是否有 .gitattributes 文件:

  • 它不能包含 * text eol=crlf
  • 如果不使用 Windows,请删除此设置。 您的开发环境和 Azure Databricks 都使用 Linux 换行符。
  • 如果使用 Windows,请将设置更改为 * text=auto。 然后,Git 在内部使用 Linux 样式的行结束符存储文件,但检出时会自动转换为平台特定的行结束符。

如果已将包含Windows行尾字符的文件提交到 Git 中:

  1. 清除所有未完成的更改。
  2. 请按照上述说明更新.gitattributes文件,以适应你的环境。
  3. 提交更改。
  4. 运行 git add --renormalize。 提交并推送所有更改。

恢复已删除的文件

文件可恢复性因作而异。 某些操作允许通过 回收站 文件夹进行恢复,而其他操作则不允许。 若要还原以前提交并推送到远程分支的文件,请使用远程存储库的 Git 提交历史记录:

Action 文件是否可恢复?
使用工作区浏览器删除文件 是,来自废纸篓文件夹
使用 Git 文件夹对话框放弃新文件 是,来自废纸篓文件夹
使用 Git 文件夹对话框放弃已修改的文件 否,文件已消失
reset(硬)用于未提交的文件修改 否,文件修改已消失
reset(硬性)针对未提交的新创建文件 否,文件修改已消失
使用 Git 文件夹对话框切换分支 是,来自远程 Git 存储库
Git 文件夹对话框中的其他 Git 操作,例如提交或推送 是,来自远程 Git 存储库
从 Repos API 更新 PATCH/repos/id 操作 是,来自远程 Git 存储库

获取帮助

如果此页上的任何指南都无法解决问题,请联系Azure Databricks支持人员。 联系支持人员时,请包括以下内容:

  • 确切的错误消息
  • Git 提供方的名称,以及仓库是公开还是私有
  • 问题是影响所有用户还是仅影响工作区中的某些用户
  • 已尝试的步骤