本页面假定您的项目已设置为使用版本控制。如果您看到 Configure Git 按钮,而不是本页面上所述的选项,则需要先为项目设置 Git。
Looker 使用 Git 记录更改并管理文件版本。每个 LookML 项目都对应于一个 Git 代码库,每个开发者分支都与一个 Git 分支相关联。
Looker 可配置为与许多 Git 提供商(例如 GitHub、GitLab 和 Bitbucket)搭配使用。如需了解如何为 Looker 项目设置 Git,请参阅设置和测试 Git 连接文档页面。
使用 Git 分支
Git 的一个主要优势是,Looker 开发者可以在分支(文件代码库的隔离版本)中工作。您可以在不影响其他用户的情况下进行开发和测试。作为 Looker 中的开发者,每当您处于开发模式时,都会使用 Git 分支。
Git 的另一个主要功能是,它可以让您轻松与其他开发者协作。您可以创建分支并(如有需要)进行更改,然后其他开发者可以切换到该分支来审核该分支或对其进行更改。如果其他开发者已向分支提交了更改,Looker 会显示拉取远程更改按钮。您应先将已提交的更改拉取到分支,然后再进行其他更改。
个人分支
首次进入开发模式时,Looker 会自动创建您的个人 Git 分支。您的个人分支以 dev-
开头,并包含您的姓名。
您的个人分支仅供您使用,无法删除。您的个人分支对所有其他开发者都是只读的。如果您与其他开发者在项目中进行协作,则可能需要创建新分支,以便其他人也能切换到该分支并贡献更改。
创建新的 Git 分支
如果您要解决简单的问题,并且不会与其他开发者协作,则个人分支通常是理想的工作场所。您可以使用个人分支进行快速更新,然后提交更改并将其推送到生产环境。
不过,除了个人分支之外,您可能还需要创建新的 Git 分支。在以下情况下,创建新的 Git 分支很有用:
- 您与其他开发者合作。由于其他开发者只能对您的个人分支进行读取,因此如果您想与他人协作,则应创建一个新的 Git 分支,以便其他开发者可以向该分支写入内容。与他人协作时,请务必在每次恢复工作时拉取更改。这样,您就可以在继续工作之前了解所有开发者的最新动态。
- 您同时处理多组功能。有时,您可能正在处理一个大型项目,但想要解决一个小问题或快速修复一个问题。在这种情况下,您可以将更改提交到当前分支,然后创建或切换到其他分支,以处理另一组功能。您可以在新分支中进行修复,然后将该分支的更改部署到生产环境,然后再继续在原始分支中工作。
在创建新分支之前,请先完成以下事项:
- 如果当前分支存在合并冲突,您必须先解决冲突,然后才能创建新分支。
- 如果当前分支上有任何未提交的更改,您必须先提交当前分支上的更改,然后才能创建新分支。
- 如果您想从现有开发分支(而非生产分支)开始创建分支,请先切换到该开发分支以获取该开发分支的最新版本,然后拉取远程更改以同步该分支的本地版本。
如需创建新的 Git 分支,请执行以下操作:
- 确认您已开启开发者模式。
在 Develop 菜单中前往项目文件。
选择左侧图标菜单中的 Git 图标,以打开 Git 操作面板。
选择查看分支下拉菜单。
选择 New Branch。
在新建分支窗口中,为分支输入名称。请注意,Git 分支名称存在限制;如需了解命名要求,请参阅本页中的Git 分支命名规则。
选择 Create From(从中创建)下拉菜单,然后选择一个现有分支作为新分支的起点。
选择创建以创建分支。
或者,您也可以通过项目设置的分支管理标签页创建 Git 分支。
Git 分支命名规则
Looker 使用 Git 指定的分支命名惯例要求。
Git 分支名称不得:
- 包含空格字符
- 包含双句点:
..
- 包含反斜线:
\
- 包含序列:
@{
- 包含问号:
?
- 包含左方括号:
[
- 包含 ASCII 控制字符:
~
、\^
或:
- 以英文句号开头:
.
- 以前缀
dev-
开头(预留给 Looker 开发者的个人分支) - 以正斜杠结尾:
/
- 以扩展名
.lock
结尾
此外,分支名称只能包含星号 (*
),前提是星号代表整个路径组件(例如 foo/*
或 bar/*/baz
),在这种情况下,星号会被解读为通配符,而不是实际分支名称的一部分。
切换到其他 Git 分支
如果您当前的分支存在合并冲突,则必须先解决冲突,然后才能切换到其他分支。
此外,如果您当前分支上有未提交的更改,则必须先提交更改,然后才能切换到现有分支。
如需切换到其他 Git 分支,请按以下步骤操作:
- 在项目中,选择左侧图标菜单中的 Git 图标,前往 Git 操作面板。
- 在 Git 操作面板中,选择当前 Git 分支名称右侧的 Git 分支下拉菜单。
- 在菜单中选择要切换到的分支,或在搜索框中输入分支名称。分支名称搜索不区分大小写。例如,您可以搜索“DEV”,然后查看名称中包含“dev”“DEV”“Dev”等字样的所有分支。
管理 Git 分支
项目设置的分支管理标签页会显示一个表格,其中包含 Looker 项目的所有 Git 分支。如需打开分支管理标签页,请先从左侧图标菜单中选择设置图标,进入项目设置。接下来,选择分店管理标签页。
在分支管理标签页中,您可以执行以下操作:
- 选择 New Branch 按钮以创建新分支。如需了解详情,请参阅本页中的创建新的 Git 分支部分。
- 在搜索栏中搜索分支名称。
- 选择刷新按钮以刷新表格。
- 选择列名称对表格进行排序。
表格包含以下信息:
- 名称:Git 分支的名称。Looker 开发者的个人分支以
dev-
开头,并包含开发者的名字和姓氏。 - 状态:分支的本地版本与分支的远程版本之间的差异。例如,状态为
3 commits behind
表示分支的本地版本比远程版本落后了 3 个提交。由于 Looker 始终使用远程主分支,因此分支管理标签页不会显示主分支本地版本的状态。主分支始终可以被视为是最新的。 - 上次更新时间:Looker 开发者向分支提交代码后经过的时间。
- 操作:用于删除分支的按钮,或分支不符合删除条件的原因。
删除 Git 分支
在分支管理标签页中,您可以删除表格中带有删除按钮的分支。您无法删除以下分支:
- 主分支
- 您当前的分支
- Looker 开发者的个人分支
在表格中,这些分支没有 Delete 按钮。相反,表格的操作列会显示无法删除分支的原因。
分支一经删除,便无法恢复。删除分支后,Looker 会同时移除分支的本地版本和远程版本。
不过,如果分支是由其他 Looker 开发者创建的,或者其他开发者已检出该分支,那么这些开发者仍会保留其本地版本的分支。如果 Looker 开发者对分支的本地版本进行提交并将其推送到生产环境,您将再次看到分支的远程版本。如果您确实想恢复分支,这会很有用。否则,当您删除某个分支时,所有其他 Looker 开发者都应删除该分支,以确保有人将其推送到远程仓库时不会意外重新显示该分支。
如需从项目中删除一个或多个 Git 分支,请先从左侧图标菜单中选择设置图标,前往项目设置。然后,选择分店管理标签页。在分支管理标签页中,您可以通过以下两种方式删除分支:
- 如需删除多个分支,请先选中分支复选框,然后选择删除所选分支。
- 如需删除单个分支,请选择分支名称旁边的删除。
在 Looker 中执行 Git 命令
Looker 有一个内置界面,可与您的 Git 服务集成。Looker 会在 LookML IDE 的右上角显示 Git 按钮。
Git 按钮会显示不同的选项,具体取决于您在更改和部署到生产环境的过程中所处的位置。一般来说,按钮上显示的选项是您下一步行动的最佳指南。
如果开发者分支与生产分支同步,Git 按钮会显示已更新消息,并且无法选择。
为项目配置 Git 后,您可以选择 Git 操作按钮以打开 Git 操作面板。
Git 操作面板上提供的命令取决于您在进行更改并部署到生产环境的过程中所处的位置。
将更改推送到生产环境
使用默认的 Looker Git 集成时,Looker 会提示开发者完成以下 Git 工作流:
- 将更改提交到开发者的当前开发分支(如果您的项目设置为部署前需要进行测试,则还会运行数据测试)
- 将开发分支合并到生产分支(默认称为
master
) - 将生产分支部署到将向 Looker 最终用户展示的 Looker 生产环境
这意味着,使用默认的 Git 集成时,所有开发者都会将其更改合并到名为 master
的分支中,并且 master
分支上的最新提交内容将用于 Looker 的生产环境。
对于高级 Git 实现,您可以自定义此工作流:
- 您可以让开发者为您的 Git 生产分支提交拉取请求,而不是允许开发者通过 Looker IDE 合并其更改。如需了解详情,请参阅配置项目版本控制设置文档页面。
- 您可以使用 Git 正式版分支名称字段指定 Looker 应将 Git 代码库中的哪个分支用作将 Looker 开发者的分支合并到的目标分支。如需了解详情,请参阅配置项目版本控制设置文档页面。
- 您可以使用高级部署模式指定要部署到 Looker 生产环境的其他提交 SHA 或标记名称,而不是使用生产分支上的最新提交。(如果您想部署其他分支中的提交,可以使用高级部署模式 webhook 或 API 端点。)如需了解详情,请参阅高级部署模式文档页面。
如果您看到 Configure Git 按钮,而不是本部分中所述的选项,则需要先为项目设置 Git。
查看未提交的更改
当您处于开发模式且有未提交的更改时,LookML IDE 会显示多个指示器,如 Looker IDE 概览文档页面中的标记添加、更改和删除操作部分所述。
您可以从 Git 操作面板中选择查看未提交的更改选项,获取所有文件的差异摘要。
在对项目的未提交更改窗口中,Looker 会显示项目所有文件中所有未提交的已保存更改的摘要。对于每项更改,Looker 都会显示以下内容:
- 被替换文件的名称和添加文件的名称。
- 被替换文件的名称(用
---
表示)和添加的文件的名称(用+++
表示)。在许多情况下,这可能会显示同一文件的不同版本,修订版由--- a/
和+++ b/
标识。 - 已删除的文件显示为替换了 null 文件 (
+++ /dev/null
)。 - 添加的文件显示为替换 null 文件 (
--- /dev/null
)。
- 被替换文件的名称(用
- 更改开始的行号。例如,
-101,4 +101,4
表示在文件的第 101 行,移除了 4 行并添加了 4 行。如果删除的文件包含 20 行,则会显示-1,20 +0,0
,表示文件的第一行中移除了 20 行,并将其替换为 0 行。 - 更新后的文本:
- 已删除的行会以红色显示。
- 添加的行会显示为绿色。
如需显示单个文件的差异摘要,请从该文件的菜单中选择查看更改选项。
提交更改
对 LookML 项目进行更改并保存后,IDE 可能会要求您验证 LookML。在这种情况下,Git 按钮会显示 Validate LookML 文本。
是否需要执行此操作取决于项目的代码质量设置。如需详细了解内容验证器,请参阅验证 LookML 文档页面。
如果自您上次更新本地分支以来,其他开发者对生产分支进行了更改,Looker 会要求您从生产分支中拉取这些更新。在这种情况下,Git 按钮会显示从生产环境拉取文本。
如果您的项目启用了高级部署模式,Git 按钮将改为显示从主分支拉取文本。
保存更改(并根据需要修正所有 LookML 警告或错误)并从生产环境拉取(如果需要)后,Git 按钮会显示提交更改并推送字样。
如有需要,您可以先查看未提交的更改,然后再提交。
准备好提交更改后,请使用 Git 按钮将这些更改提交到当前分支。Looker 会显示 Commit 对话框,其中列出了已添加、更改或删除的文件。
输入一条简要说明所做更改的消息,然后取消选中您不想同步的任何文件旁边的复选框。然后,选择提交以提交更改。
检查是否有未构建的 PDT
如果您更改了项目中的任何 PDT,最好在部署到生产环境时构建所有 PDT,以便表格可以立即用作生产版本。如需查看项目中的 PDT 状态,请选择 Project Health 图标以打开 Project Health 面板,然后选择 Validate PDT Status 按钮。
如需详细了解如何在 LookML 项目中检查未构建的 PDT,以及如何在开发模式下使用派生表,请参阅 Looker 中的派生表文档页面。
运行数据测试
您的项目可能包含一个或多个 test
参数,用于定义数据测试以验证 LookML 模型的逻辑。如需了解如何在项目中设置数据测试,请参阅 test
参数文档页面。
如果您的项目包含数据测试,并且您处于开发模式,则可以通过多种方式启动项目的数据测试:
- 如果您的项目设置配置为要求数据测试通过,然后才能将文件部署到生产环境,那么在您提交对项目所做的更改后,IDE 会显示运行测试按钮,以便运行项目的所有测试,无论是哪个文件定义了测试。您必须先通过数据测试,然后才能将更改部署到生产环境。
- 在项目健康状况面板中,选择运行数据测试按钮。Looker 会运行项目中的所有数据测试,无论是哪个文件定义了测试。
- 从文件菜单中选择 Run LookML Tests 选项。Looker 只会运行当前文件中定义的测试。
运行数据测试后,项目健康状况面板会显示进度和结果。
- 如果测试的断言对测试查询中的每一行都为真,则数据测试会通过。如需详细了解如何设置测试断言和查询,请参阅
test
参数文档页面。 - 如果数据测试失败,Project Health 面板会提供有关测试失败原因的信息,例如测试是否在模型逻辑中发现了错误,或者测试本身是否无效。
- 在数据测试结果中,您可以选择数据测试的名称,直接前往该数据测试的 LookML;也可以选择 Explore Query 按钮,打开一个包含数据测试中定义的查询的“探索”页面。
部署到生产环境
将更改提交到分支后,Looker IDE 会提示您将更改合并到主分支。您在 IDE 中看到的提示类型取决于项目的配置:
- 如果您的项目配置为高级部署模式,IDE 会提示您将更改合并到主分支。合并提交内容后,具有
deploy
权限的 Looker 开发者可以使用 Looker IDE 部署管理器,或者使用Webhook 或 API 端点将提交内容部署到生产环境。 - 如果您的项目配置为使用拉取请求进行 Git 集成,系统会提示您使用 Git 提供商的界面打开拉取请求。
- 否则,如果您使用默认的 Looker Git 集成,并且拥有
deploy
权限,Looker IDE 会提示您将更改合并到生产分支,并将更改部署到 Looker 实例的生产版本。
高级部署模式
使用默认的 Looker Git 集成时,Looker 开发者会将更改提交到开发分支,然后将开发分支合并到生产分支。然后,当您部署到 Looker 环境时,Looker 会使用生产分支上的最新提交。(如需了解默认 Git 工作流程以及适用于高级 Git 实现的其他选项,请参阅本页中的将更改发布到生产环境部分。)
如果您不希望始终为 Looker 环境使用生产分支上的最新提交,则拥有 deploy
权限的开发者可以使用高级部署模式指定要为 Looker 环境使用的确切提交。这在多环境开发者工作流中非常有用,因为每个环境都指向代码库的不同版本。此外,它还可让一位或多位开发者或管理员更好地控制部署到生产环境的更改。
启用高级部署模式后,Looker IDE 不会提示开发者将其更改部署到生产环境。而是提示开发者将更改合并到生产分支。之后,您只能通过以下方式部署更改:
如需了解详情,请参阅高级部署模式文档页面。
查看更改的影响
向组织提供更改后,您可以使用内容验证功能,确保自己没有使任何信息中心或已保存的主题外观失效。您将有机会修正这些问题(如果有)。
处理典型问题
在处理模型时,您可能需要:
舍弃更改
有时,您可能需要放弃数据建模更改。如果尚未保存,您只需刷新或离开该页面,然后接受警告提示即可。如果您已保存更改,则可以按照还原未提交的更改部分中所述的方式还原未提交的更改。
处理与其他开发者工作的合并冲突
如果有多个开发者在处理您的数据模型,Git 通常可以处理这种情况。不过,Git 有时需要人为解决合并冲突。
某些更改(例如更改字段名称)可能会影响现有的信息中心和外观。如前所述,在向组织提供更改后,您可以使用内容验证检查内容并解决所有问题。
还原未提交的更改
在个人开发分支中工作时,如果您不想部署已保存的未提交更改,可以将其还原。您可以还原项目中所有文件的所有未提交更改,也可以仅还原单个文件中的更改。
如需还原所有文件的未提交更改,请执行以下操作:
- 在 Git 操作面板中,选择还原为...选项。
- 选择还原选项:
- 如需仅还原未提交的更改,请选择还原未提交的更改。您还可以选择查看更改链接,查看要还原的更改。
- 如需还原所有更改(包括未提交和已提交的更改),请选择还原为正式版
- 如要完成还原流程,请选择确认。
如需还原单个文件内容中的任何添加或删除内容,请从该文件的菜单中选择还原更改选项:
重命名文件时,您实际上是删除原始文件,并使用新名称创建新文件。由于涉及多个文件,因此您无法使用还原文件选项撤消文件的重命名操作。如果您想撤消文件重命名操作,请使用 Git 操作面板中的还原为...选项。
此外,如果您删除了某个文件,该文件将不再显示在 IDE 文件浏览器中。如果您想还原已删除的文件,请使用 Git 操作面板中的 Revert to... 选项。
解决合并冲突
通常,Git 可以自动将您的新更改与 LookML 文件的生产版本合并。当 Git 遇到冲突的更改且无法确定应保留哪些更改时,就会发生合并冲突。通常,当其他开发者在您上次拉取代码后进行了更改,而您也在同一区域进行了更改时,就会发生这种情况。如果您的代码存在合并冲突,在您提交更改并从生产环境拉取后,Looker 会显示合并冲突警告。
当 Looker 显示合并冲突警告时,我们建议您先解决合并冲突,然后再进行任何进一步更改。将合并冲突推送到生产环境会导致解析错误,这可能会阻止您探索数据。如果您是高级 Git 用户,并且想要继续推送更改,请选择不解析按钮。
在 LookML 文件本身中,存在冲突的行会标记为这样:
<<<<<<< HEAD
Your code
=======
Production code
>>>>>>> branch 'master'
Looker 会显示以下合并标记来指示合并冲突:
- <<<<<<<
HEAD
标记了冲突行开头的位置。 - >>>>>>>
branch 'master'
标记冲突行的结尾。 - ======= 用于分隔代码的各个版本,以便您进行比较。
在上面的示例中,your code
表示您提交的更改,production code
表示 Git 无法自动合并更改的代码。
如需解决合并冲突,请执行以下操作:
- 找到存在合并冲突的文件。Looker 会将这些文件标记为红色,您也可以搜索项目以查找合并标记(例如 <<<< 或
HEAD
),以便查找项目中的所有冲突。您也可以在 Git 操作面板中显示的合并警告中选择文件链接,找到受影响的文件。 - 在文件中,找到存在合并冲突的行,然后删除您不想保留的文本版本,并删除所有合并冲突标记。
保存文件,然后对标记为合并冲突的任何其他文件重复上述步骤。
现在,您已解决合并冲突并将解决方案推送到生产环境,其他开发者可以从生产环境拉取代码,并照常继续工作。
Git 垃圾回收
Git 垃圾回收功能会清理不必要的文件并压缩文件修订版本,以优化您的 Git 代码库。更新或重启 Looker 实例时,系统会自动运行 Git 垃圾回收 (git gc
)。为避免过于频繁地运行 git gc
,Looker 会在上次运行 git gc
后等待 30 天,然后在下次重新启动时运行 git gc
。
在极少数情况下,您可能会尝试在 git gc
运行时将更改推送到远程或将分支推送到远程。如果 Looker 显示错误,请等待一两分钟,然后再次尝试推送更改。