Git 集成中的基本概念
本文介绍基本的 Git 概念以及将 Git 与 Microsoft Fabric 工作区集成的过程。
权限
- 若要使用 Git 集成,组织的管理员必须启用它。
- 如果工作区和 Azure Repos 位于两个不同的区域,则租户管理员必须启用跨地区导出。 此限制不适用于 GitHub。
- 可以对工作区执行的操作取决于在工作区和 Git 中拥有的权限,如后续部分中所列。
常用操作所需的 Git 权限
下表显示了根据 Git 存储库权限的不同工作区角色可以执行哪些操作:
- 管理员:可以在工作区上执行任何操作,仅受其 Git 角色的限制。
- 成员/参与者:连接到工作区后,成员/参与者可以提交和更新更改,具体取决于其 Git 角色。 对于与工作区连接相关的操作(例如,连接、断开连接或切换分支),请向管理员寻求帮助。
- 查看者:无法执行任何操作。 查看者在工作区中看不到任何 Git 相关信息。
常用操作所需的 Fabric 权限
工作区角色
下表描述了在 Fabric 工作区中执行各种常见操作所需的权限:
操作 | 工作区角色 |
---|---|
将工作区连接到 Git 存储库 | 管理员 |
将工作区与 Git 存储库同步 | 管理员 |
断开工作区与 Git 存储库的连接 | 管理员 |
在工作区中切换分支(或连接设置中的任何更改) | 管理员 |
查看 Git 连接详细信息 | 管理员、成员、参与者 |
查看工作区“Git 状态” | 管理员、成员、参与者 |
从 Git 更新 | 以下所有项: 工作区中的参与者(对所有项的 WRITE 权限) 项的所有者(如果租户开关阻止了非所有者的更新) 对外部依赖项的 BUILD(在适用的情况下) |
将工作区更改提交到 Git | 以下所有项: 工作区中的参与者(对所有项的 WRITE 权限) 项的所有者(如果租户开关阻止了非所有者的更新) 对外部依赖项的 BUILD(在适用的情况下) |
在 Fabric 中创建新的 Git 分支 | 管理员 |
扩展延伸到新工作区 | 管理员、成员、参与者 |
Git 角色
下表描述了执行各种常见操作所需的 Git 权限:
操作 | Git 权限 |
---|---|
将工作区连接到 Git 存储库 | Read=Allow |
将工作区与 Git 存储库同步 | Read=Allow |
断开工作区与 Git 存储库的连接 | 无需任何权限 |
在工作区中切换分支(或连接设置中的任何更改) | Read=Allow(在目标存储库/目录/分支中) |
查看 Git 连接详细信息 | 读取或无 |
查看工作区“Git 状态” | Read=Allow |
从 Git 更新 | Read=Allow |
将工作区更改提交到 Git | Read=Allow Contribute=Allow 分支策略应允许直接提交 |
在 Fabric 中创建新的 Git 分支 | Role=Write Create branch=Allow |
扩展延伸到新工作区 | Read=Allow Create branch=Allow |
连接和同步
只有工作区管理员可以将工作区连接到 Git 存储库,但连接后,具有权限的任何人都可以在工作区中工作。 如果你不是管理员,请向管理员请求有关连接的帮助。
将工作区连接到 Git 时,Fabric 将在两个位置之间同步,使它们具有相同的内容。 在此初始同步期间,如果工作区或 Git 分支其中一个为空,另一个有内容,则会将内容从非空位置复制到空位置。 如果工作区和 Git 分支都有内容,则你必须确定同步的方向。
- 如果将工作区提交到 Git 分支,则所有支持的工作区内容都会导出到 Git 并覆盖当前 Git 内容。
- 如果用 Git 内容更新工作区,则会覆盖工作区内容,并且会丢失工作区内容。 由于 Git 分支始终可以还原到上一阶段,而工作区不能,因此,如果选择此选项,系统会要求你进行确认。
如果未选择要同步的内容,则无法继续工作。
连接到共享工作区
如果尝试连接到已连接到 Git 的工作区,可能会收到以下消息:
转到“源代码管理”面板右侧的“帐户”选项卡,选择一个帐户,并连接到该帐户。
Git 状态
连接后,工作区会显示一个 Git 状态列,指示工作区中每个项相对于远程分支中的项的同步状态。
每个项都具有以下状态之一:
- 已同步(项在工作区和 Git 分支中是相同的)
- 冲突(同时在工作区和 Git 分支中更改了项)
- 不受支持的项
- 工作区中未提交的更改
- 需要从 Git 更新
- 项在两个位置相同,但需要更新到上次提交
同步信息
只要你已连接,屏幕底部就会显示以下信息:
- 连接的分支
- 上次同步的时间
- 工作区同步到的最后一个提交的链接
“源代码管理”窗格
屏幕顶部是“源代码管理”图标。 它显示了工作区和 Git 分支中不同的项数。 对工作区或 Git 分支进行更改时,将更新该数字。 当工作区与 Git 分支同步时,源代码管理图标将显示 0。
选择“源代码管理”图标以打开“源代码管理”面板。
“源代码管理”面板在一侧有三个选项卡:
提交并更新
对工作区或 Git 分支进行更改时,源代码管理图标会显示不同的项数。 选择“源代码管理”图标以打开“源代码管理”面板。
“提交和更新”面板有两个部分。
“更改”显示工作区中已更改且需要提交到 Git 的项目数。
“更新”显示 Git 分支中已修改且需要更新到工作区的项目数。
在每个部分中,都会列出已更改的项,并带有一个指示状态的图标:
- 新增内容
- 已修改
- 已删除
- 冲突
面板顶部的“刷新”按钮可更新更改和更新列表。
提交
- 已更改的工作区中的项目列在“更改”部分。 当有多个已更改的项目时,你可以选择要提交到 Git 分支的项。
- 如果对 Git 分支进行了更新,则会禁用提交,直到更新工作区。
更新
- 与提交和撤消不同,更新命令会始终更新整个分支并同步到最新的提交。 无法选择特定的项进行更新。
- 如果在工作区和 Git 分支中对相同的项进行了更改,在解决冲突之前,将会禁用更新。
详细了解如何提交和更新。 详细了解更新过程以及如何解决冲突。
分支
使用“源代码管理”面板的“分支”选项卡,可以管理分支并执行分支相关操作。 它有两个主要部分:
可以在当前分支上采取的操作:
- 扩展延伸到新工作区(任何角色):基于连接到当前工作区的分支的最后一次提交创建新工作区和新分支。 它连接到新的工作区和新分支。
- 签出新分支(必须是工作区管理员):基于工作区中上次同步的提交创建新分支,并更改当前工作区中的 Git 连接。 它不会更改工作区内容。
- 切换分支(必须是工作区管理员):将工作区与另一个新的或现有的分支同步,并使用选定分支的内容替代工作区中的所有项。
相关分支。
“分支”选项卡还包含一系列相关工作区,你可以选择并切换到这些工作区。 相关工作区与当前分支具有相同的连接属性,例如同一组织、项目、存储库和 git 文件夹。
这样,你无需在 Fabric 工作区列表中查找它们就可以导航到与其他分支连接的工作区,而这些分支与你的当前工作上下文相关。
单击列表中的某个项目可打开相关工作区。
有关详细信息,请参阅扩展延伸限制。
帐户详细信息
“帐户详细信息”选项卡会显示用户所连接的 GitHub 帐户的详细信息。 共包含两个部分。 显示 Git 提供程序和帐户名称的顶部部分, 以及显示工作区所连接的存储库和分支的底部部分。 目前,此选项卡仅适用于连接到 GitHub 的工作区。
GitHub 帐户详细信息包括:
Git 帐户详细信息
- 提供程序
- 帐户名
Git 存储库
分支
注意事项和限制
常规 Git 集成限制
- Fabric 中的身份验证方法必须至少与 Git 的身份验证方法一样强大。 例如,如果 Git 需要多重身份验证,则 Fabric 也需要多重身份验证。
- 目前不支持连接到 Analysis Services 的 Power BI 数据集。
- 安装了模板应用的工作区无法连接到 Git。
- 目前不支持主权云。
GitHub Enterprise 限制
不支持某些 GitHub Enterprise 设置。 例如:
- IP 允许列表
- 专用网络
- 自定义域
工作区限制
- 只有工作区管理员可以管理与 Git 存储库的连接,例如连接、断开连接或添加分支。
连接后,具有权限的任何人都可以在工作区中工作。 - 工作区文件夹结构不会反映在 Git 存储库中。 文件夹中的工作区项将导出到根目录。
分支和文件夹限制
- 分支名称的最大长度为 244 个字符。
- 文件名的完整路径的最大长度为 250 个字符。 过长的名称会失败。
- 文件大小上限为 25 MB。
- 使用 Git 集成部署报表/数据集后,无法从服务下载 .pbix 格式的报表/数据集。
- 如果项目的显示名称如下,Git 文件夹在类型之前使用逻辑 ID (Guid) 作为前缀:
- 超过 256 个字符
- 以 . 或空格结尾
- 包含以下任意字符:" / : < > \ * ? |
扩展延伸限制
- 扩展延伸需要权限表中列出的权限。
- 必须有可用容量可供此操作使用。
- 所有工作区和分支命名限制在扩展延伸到新工作区时适用。
- 扩展延伸时,会创建新工作区,并且不会复制原始工作区中的设置。 调整任何设置或定义,以确保新工作区符合组织策略。
- 新工作区中仅提供 Git 支持的项目。
- 相关分支列表仅显示你有权查看的分支和工作区。
- 必须启用 Git 集成。
同步和提交限制
- 一次只能向一个方向同步。 无法同时提交和更新。
- 不支持敏感度标签,可能会禁用导出具有敏感度标签的项。 若要在不带敏感度标签的情况下提交具有敏感度标签的项,请向管理员寻求帮助。
- 适用于受限项。 将忽略文件夹中不受支持的项。
- 不允许出现重复名称。 即使 Power BI 允许出现重复名称,更新、提交或撤消操作也会失败。
- 不支持 B2B。
- 冲突解决已在 Git 中部分完成。
- 在提交到 Git 的过程中,Fabric 服务将删除项文件夹中不属于项定义的文件。 不会删除不在项目文件夹中的不相关文件。
- 提交更改后,你可能会注意到未对项进行的一些意外更改。 这些更改在语义上是微不足道的,可能出于多种原因而发生。 例如:
- 手动更改项定义文件。 这些更改是有效的,但可能与通过编辑器完成的更改不同。 例如,如果在 Git 中重命名语义模型列并将此更改导入工作区,则下次向语义模型提交更改时,bim 文件将注册为已更改,修改后的列将推送到
columns
数组的后面。 这是因为生成 bim 文件的 AS 引擎会将重命名的列推送到数组的末尾。 此更改不会影响项的操作方式。 - 提交使用 CRLF 换行符的文件。 该服务使用 LF(行摘要)换行符。 如果在 Git 存储库中有带 CRLF 换行符的项文件,则从服务提交时,这些文件将更改为 LF。 例如,如果在桌面中打开报表,请保存 .pbip 项目并使用 CRLF 将其上传到 Git。
- 手动更改项定义文件。 这些更改是有效的,但可能与通过编辑器完成的更改不同。 例如,如果在 Git 中重命名语义模型列并将此更改导入工作区,则下次向语义模型提交更改时,bim 文件将注册为已更改,修改后的列将推送到
- 使用增强刷新 API 刷新语义模型会导致每次刷新后产生 Git 差异。