使用版本控制管理项目
您可使用版本控制来管理数据项目的开发,并跟踪更改。
使用版本控制时,您可以在设计过程中提交项目的版本。这允许您查看项目两个版本之间的更改。您还可以使用分支策略开发数据项目。这让您可以在每个工作区或分支中处理项目的独立版本。工作区可以由多个用户共享。然后,您可以将工作区中的更改合并到主分支中,以便部署到生产环境。
GitHub 被用作版本控制的提供者。
入门
-
在 GitHub 中创建一个用户,租户可以使用该用户访问 GitHub。这可能已经由管理员为您创建。
用户必须具有以下作用域:
-
repo
-
read:org
-
read:user
-
read:project
-
-
您需要对计划更改的存储库具有写访问权限。
-
您必须创建一个 GitHub 个人访问令牌(经典)。不支持细粒度的个人访问令牌。
有关更多信息,请参阅 GitHub 文档:管理您的个人访问令牌。
-
在 GitHub 配置中,必须设置组织。
-
您需要在项目所在的空间中具有“可以编辑”角色才能执行版本控制操作。
-
在开始使用版本控制之前,您必须设置一个配置,以便使用您创建的 GitHub 用户连接到 GitHub。
-
当您设置了与 GitHub 的连接后,您可以将项目连接到存储库。
为 GitHub 设置配置
所有想要使用版本控制的用户都必须设置一个配置,以便使用 GitHub 用户帐户连接到 GitHub。
GitHub 连接

您可以在项目中配置 GitHub。请确保您已根据 入门 做好准备。
-
单击
,然后单击 GitHub 配置。
-
使用您的组织和 入门 中描述的 GitHub 个人访问令牌设置身份验证。
-
单击确定。
现在,您可以将项目连接到存储库。
将项目连接到存储库
您必须先将项目与存储库连接,然后才能开始使用版本控制。请确保您已建立与 GitHub 的连接。
将项目连接到版本控制。

-
在项目中,单击项目上 ... ,选择连接到版本控制。
-
选择要与项目关联的存储库。
-
添加基本目录路径。
如果您想连接到 GitHub 中的现有项目,必须使用相同的路径。
-
您可以选择提交项目,并在连接后将项目推送到远程存储库。输入提交消息。
如果不提交和推送,将在工作区中创建一个主分支,但不会在远程存储库中创建。
-
单击连接。
项目现在已连接到所选存储库。这在项目卡的底部用 、存储库的名称和当前分支表示。
打开项目时,标题行将包含一个带有版本控制选项的 GitHub 菜单。项目名称还将附加当前分支的名称。
开发具有版本控制的项目
您可以使用不同的方法进行版本控制:
-
直接在主要分支工作。这主要适用于项目中想要跟踪更改的单个开发人员,但也可以由一组同步工作的开发人员使用。
-
采用分支策略,可以让多个开发人员做出贡献。您还可以创建分支,以将新特性或更改相互隔离。
简化单个开发人员项目的工作流程
您可以直接在项目的主分支上工作。这种方法更简单,包含的操作更少,但仍然可以让您跟踪更改。如果有多个开发人员,他们需要小心保持同步。
当您对要应用的项目进行更改后,只需进行提交和推送。
多开发人员项目的工作流
如果有多个开发人员在处理一个项目,或者您想隔离更改,则可以使用此工作流。这涉及创建一个可以与其他用户共享的开发分支。通过此工作流,开发人员可以跟踪彼此的更改,并决定何时将更改合并到主分支。
具有版本控制的多开发人员项目的工作流

-
创建新分支
从主分支创建一个新的开发分支。您可以与更多用户共享该分支。
-
开发
对项目进行所有必要的更改。
信息注释版本控制中不维护数据库架构和连接。 -
应用远程更改
将其他分支的远程更改应用于您的工作区域,以确保您了解其他分支的最新更改。这有助于避免或减轻冲突的变化。
如果您有两个分支包含可能冲突的更改,解决方法是:
-
对两个工作领域进行更改。
-
将两个分支合并到主分支。
-
再次应用远程更改。
-
-
提交并推送
将您的更改提交并推送到开发分支。所有对象都将被推送,因此在提交项目之前验证项目是不错的做法。
-
打开拉取请求并合并
当您准备好进行开发时,那么是时候将工作区的更改合并到主分支了。要将开发分支合并到主分支,必须在 GitHub 中通过打开拉取请求来执行。您可以设置将分支合并到主分支的审批。有关更多信息,请参阅 GitHub 拉取请求文档
创建新分支
-
在项目中,单击项目上的 ...,然后选择创建新分支。
该项目必须连接到版本控制。您还必须拥有项目目标连接所在空间的权限。
-
选择以从主分支创建分支。
-
输入分支的名称。
-
在所有模式的分支前缀中设置要添加到项目中所有模式的前缀。这允许对所有模式进行唯一命名,以避免命名冲突。
-
单击创建。
从主分支创建一个新分支,并从存储库中签出。该分支包含项目的新版本,所有任务都处于“新建”状态。也就是说,它们没有准备好,也不包含任何数据。
应用远程更改
您可以将远程存储库中的更改应用于您的工作区域。这可能是在 Qlik Cloud 集成版本控制之外创建的更改,例如在 GitHub 或其他工具中创建的更改。这有助于您在将更改提交并推送到分支时避免冲突。
-
在项目中,单击项目上的 ...,选择应用远程更改。
如果发现更改,将显示将远程更改应用于工作区对话框。
-
现在,您可以选择要应用更改的任务并检查更改。对于每次更改,您可以选择使用哪个版本,即远程版本或工作区中的版本。
-
单击应用远程更改
如果更改包括新的数据任务,则必须添加源连接和目标连接。
提交并推送
您可以将更改提交并推送到分支。由于未应用于工作区的远程更改可能会被覆盖,因此您应该在提交和推送之前执行应用远程更改。
-
在项目中,单击项目上的 ...,选择提交并推送。
如果发现更改,将显示提交并推送对话框。
-
添加一条提交消息,帮助您跟踪更改的内容。
-
单击提交并推送
删除分支
将更改合并到主分支后,可以删除分支。
-
在项目中,单击要删除的分支上的 ...,选择删除分支。
您也可以选择在版本控制中删除远程分支。
如果有未提交的更改,您需要确认在删除分支时这些更改将丢失。
删除项目的版本控制
您可以断开项目与版本控制的连接。如果存在现有分支,则必须先删除它们,然后才能断开项目的连接。
-
在项目中,单击要断开连接的项目上的 ...,然后选择与 GitHub 断开连接。
与其他空间或租户共享项目
您可以与同一租户或另一租户上的不同空间共享项目的一个版本。当您想创建两个环境时,这很有用,例如一个用于开发,一个用于生产。
-
创建一个与原始项目同名的新项目。
设置相同的用例和平台类型。您可以使用不同的连接。
-
将新项目连接到与原始项目相同的存储库和基本目录路径。
信息注释请勿选择提交并推送选项。 -
如果平台连接指向与原始项目相同的目标,请确保更改数据任务的数据库或模式。更改所有任务的模式的一种方法是在应用远程更改之前,在元数据项目设置中更改所有模式的前缀。这可确保所有任务都使用此前缀创建。
-
应用远程更改,选择所有文件。
-
为所有登陆任务添加缺失的源连接。
在登陆任务中单击选择源数据,选择连接,然后单击保存。
信息注释连接必须来自同一类型的源,并指向与原始项目中同名的表。 -
为所有复制任务添加缺失的源和目标连接。
这将创建另一个工作区。您可以在其中一个工作区中对项目进行更改,并使用应用远程更改同步另一个工作区。
安全考虑事项
确保在 Qlik Talend Data Integration 和 GitHub 之间保持同步的安全配置。
-
在Qlik Talend Data Integration 中,权限基于可能包含多个项目的空间。在 GitHub 中,权限基于也可能包含多个项目的存储库。最佳做法是将它们对齐,并将一个空间中的所有项目连接到同一个存储库。
-
请记住,Qlik Talend Data Integration 和 GitHub 为用户使用不同的权限和角色。
最佳实践
以下是使用版本控制处理项目时的一些通用最佳实践。
-
在 GitHub 中添加一个描述存储库的 README 文件。有关更多信息,请参阅关于 README。
如果您从一个空储存库开始,Qlik Talend Cloud 版本控制会自动添加一个空的 README.md文件。
-
一般来说,你应该让Qlik Talend Cloud 版本控制来管理 GitHub 儲存库。
-
只提交有效且经过测试可以运行的项目。
如果添加具有尚未准备或转换的登陆或注册数据任务的项目,则源列尚未包含在内。在准备和转换任务时添加源列。
-
当您为复制项目创建分支时,您应该知道这些分支默认使用相同的目标。这意味着在分支中运行任务可以覆盖主版本的数据。为避免数据丢失,请更改分支中的目标设置,使其与主版本不冲突。
-
创建分支时,可能存在尚未应用于工作区的远程更改。在创建分支之前或之后应用远程更改,除非您想放弃远程更改。
-
对两个不同分支中的同一数据集进行更改可能会导致难以解决的合并冲突。
在分支机构工作
您可以创建一个项目,进行设计,准备就绪后,使用 MAIN 分支将其部署到生产中。MAIN 上的版本与您的生产管道相对应。在第一次部署之后,千万不要直接编辑 MAIN 分支。
任何时候,只要开发人员想对项目进行新的改动,如添加功能或修正错误,就需要创建一个新的分支。
开发人员可根据开发需要创建任意数量的分支
-
为分支使用模式前缀,以避免在进行更改时发生数据库冲突。
-
在一个分支中,开发人员可以做出任意数量的修改,并根据需要提交和推送任意次数。建议在独立的提交中隔离每项变更。例如,如果您对转换任务进行了更改,而该更改也会影响数据集市,请确保将这两项更改都包含在一次提交中
-
所有团队成员都应随时使用应用远程更改来确保他们的 MAIN 是最新的,尤其是在提交更改之前。
当开发人员完成自己分支的工作后,他们可以创建一个拉取请求供同行审查。
在 GitHub 的拉取请求下创建拉取请求。您必须指定从哪个分支创建拉取请求。
经其他团队成员审核批准后,您就可以将拉动请求与 MAIN 版本合并。
最后,在项目中使用应用远程更改将已批准的分支更改拉回到 MAIN 分支(生产)。
在空间中工作
对于较大和关键的部署,建议使用开发和生产专用空间,以隔离更改并确保管道完整性。为每个空间的数据源和目标使用专用的数据连接。
-
生产
MAIN 分支反映的是生产中的情况。这意味着一个项目只有一个 MAIN 版本。
生产被隔离在一个专用的数据空间,例如 PROD。专用连接会分配给生产空间。
不直接在生产空间/MAIN 分支中进行更改。所有更改都是在其他有专用连接的空间内,利用分支机构进行的。
您可以重用 GitHub 中现有项目的 MAIN 版本。在 GitHub 中创建一个与现有项目同名的空项目。这将检索 MAIN 分支上的最新可用版本,以便开始编辑。
用户创建一个新分支,进行修改,创建拉取请求,合并,然后拉回到 MAIN/Production。
-
开发
开发人员可以在专用数据空间(例如 DEV)中隔离他们的更改。专用连接会分配给 DEV 空间。
更改使用分支进行隔离,通常每个开发人员一个分支。创建分支时使用模式前缀,以避免更改时发生数据库冲突。
-
审查/质量验收
审查员获准进入开发空间并连接到:
-
在 Qlik Talend Cloud 中打开并测试项目分支。
-
批准拉取请求,以便在 GitHub 中进行合并。
-
通知团队成员何时可将已批准的更改拉回到 MAIN/Production。
-
将已批准的更改部署回 MAIN/Production 空间时,必须重新为生产空间连接分配连接。
限制
-
如果存在分支,则无法使用版本控制断开或删除项目。必须先删除分支,然后才能断开连接或删除项目。
-
无法使用版本控制重命名项目。
-
当您删除租户时,GitHub 中使用版本控制存储的对象不会被删除。您需要手动删除这些对象。
-
如果一个存储库被许多项目使用,或者包含许多未存储在 Qlik Talend Data Integration 中的文件,性能可能会降低。
-
版本控制中不维护数据库架构和连接。
-
不支持 GitHub 细粒度个人访问令牌。
-
即使两个项目位于同一存储库中,每个存储库中也只能有一个项目使用一个分支(主分支除外)。
-
无法从使用不同目标平台的项目应用远程更改。例如,如果您将更改提交到 Snowflake 上的项目,则无法将更改应用于 Databricks 项目。