# 使用版本控制管理您的管道專案

您可以使用版本控制以管理管道專案的開發並追蹤變更。

資訊備註版本控制無法用於 Qlik Talend Cloud 啟動器 訂閱。

使用版本控制時，您可以在設計期間認可專案的版本。這允許您查看專案的兩個版本之間的變更。您也可以使用分支策略開發資料專案。這讓您可以在每個工作區域或分支中處理專案的隔離版本。工作區域可由多個使用者共用。然後，您可以將工作區域中的變更合併到主要分支，以部署到生產。

GitHub 作為版本控制的提供者來使用。實作追蹤共用存放庫模型。

* 不支援 GitHub Enterprise Cloud 和 GitHub Enterprise Server。

* 如需更多關於共用存放庫模型的資訊，請參閱[關於協同開發模型](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models)。

* 如需更多關於 Git 和 GitHub 的資訊，請參閱[關於 GitHub 和 Git](https://docs.github.com/en/get-started/start-your-journey/about-github-and-git)。

* GitHub 安全性考量

  Qlik Talend Cloud 支援 HTTPS 安全性通訊協定和個人存取權杖 (PAT)，這是 GitHub 的預設驗證模式。如需更多資訊，請參閱[關於 GitHub 驗證](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/about-authentication-to-github)。

## 開始使用

* 在 GitHub 中建立一個使用者，租用戶可以用來存取 GitHub。這可能已由管理員為您建立。

  使用者必須具有以下範圍：

  * repo

  * read:org

  * read:user

  * read:project

* 您對計畫變更的存放庫需要有寫入權限。

* 您必須建立 GitHub 個人存取 Token (經典)。不支援精細粒度的個人存取 Token。

  如需更多資訊，請參閱 GitHub 文件：[管理您的個人存取權杖](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)。

* 組織在 GitHub 設定中是強制性質。

* 您在專案所在的空間中需要「可以編輯」角色，才能執行版本控制動作。

* 在開始使用版本控制之前，您必須進行設定，以使用您建立的 GitHub 使用者連線至 GitHub。

  [進行 GitHub 的設定](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/VersionControl/Project-version-control.htm#Set)

* 設定與 GitHub 的連線後，您可以將專案連線至存放庫。

  [將專案連線至存放庫](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/VersionControl/Project-version-control.htm#Connecti)

## 進行 GitHub 的設定

所有想要使用版本控制的使用者都必須進行設定，以使用 GitHub 使用者帳戶連線至 GitHub。

GitHub 連線

GitHub 連線

GitHub 連線 ![](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/qdi_version_github.png)

您可以在管道專案或使用者設定檔設定中設定 GitHub。確保您已根據 [開始使用](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/VersionControl/Project-version-control.htm#Getting) 進行準備。

若要在管道專案中設定 GitHub：

1. 按一下 ![](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/Data-connector-icons/GitHubConnector-square_26x26.png)，然後按一下 GitHub 設定。

2. 使用您的組織和 [開始使用](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/VersionControl/Project-version-control.htm#Getting) 中所述的 GitHub 個人存取 Token 設定驗證。

3. 按一下確定。

資訊備註將在您的個人空間中建立 GitHub - 版本控制類型的連線。所有使用者都將擁有個人版本控制連線，因此不需要進行管理。

現在您可以將專案連線至存放庫。

## 將專案連線至存放庫

您必須先連線專案與存放庫，才能開始使用版本控制。確保您已設定與 GitHub 的連線。

將專案連線至版本控制。

將專案連線至版本控制。

將專案連線至版本控制。 ![Dropdown list with regions during tenant setup.](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/GitHub3-pointer.png)

1. 在管道專案中，按一下專案上的 ...，並選取連線至版本控制。

2. 選取與專案關聯的存放庫。

3. 新增基本目錄路徑。

   若您想要在 GitHub 中連線至現有專案，您必須使用相同的路徑。

4. 連線後，您可以選取認可專案並將專案推送到遠端存放庫。輸入認可訊息。

   若您沒有認可和推送，將會在工作區域中建立主要分支，但不會在遠端存放庫中建立。

5. 按一下連線。

該專案現已連線至所選的存放庫。這在專案卡片的底部以 ![](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/Data-connector-icons/GitHubConnector-square_26x26.png)、存放庫的名稱和目前分支來指示。

當您開啟專案時，標題列現在將包含具有版本控制選項的 GitHub 功能表。專案名稱也會附加目前分支的名稱。

## 使用版本控制開發專案

您可以透過不同的方法使用版本控制：

* 直接處理主要分支。這主要適合專案中想要追蹤變更的單一開發人員，但也可以由同步工作的開發人員群組使用。

* 使用分支策略，多個開發人員可以做出貢獻。您也可以建立分支，以相互隔離新功能或變更。

### 簡化單一開發人員專案的工作流程

您可以直接處理專案的主要分支。這種方法更簡單，並且包含更少的操作，但仍然可以讓您追蹤變更。如果有多個開發人員，他們需要小心保持同步。

若您對要套用的專案進行變更，只需要進行認可並推送即可。

### 多個開發人員專案的工作流程

如果有多個開發人員在處理一個專案，或者您想要隔離變更，則可以使用此工作流程。這涉及建立一個可以與其他使用者共用的開發分支。透過此工作流程，開發人員可以追蹤彼此的變更，並決定何時將變更合併到主要分支。

多個開發人員專案的工作流程與版本控制

多個開發人員專案的工作流程與版本控制

多個開發人員專案的工作流程與版本控制 ![](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/qdi_version_flow_multi.png)

1. 建立新的分支

   從主要分支建立一個新的開發分支。您可以與更多使用者共用分支。

2. 開發

   在專案中進行所有必需的變更。

   資訊備註版本控制中不會維護資料庫結構描述和連線。

3. 套用遠端變更

   將來自另一個分支的遠端變更套用至您的工作區域，以確保您了解其他分支的最新變更。這有助於避免或減輕衝突的變更。

   如果您有兩個包含可能發生衝突之變更的分支，解決方法是：

   1. 對兩個工作區域認可變更。

   2. 將兩個分支合併到主要分支。

   3. 重新套用遠端變更。

4. 認可並推送

   認可您的變更並將其推送到開發分支。將會推送所有物件，因此最好在認可之前驗證您的專案。

5. 建立提取請求並合併

   準備好開發時，您就可以將變更從工作區域合併到主要分支。

   您可以在專案版本控制中建立提取請求，但必須在 GitHub 中執行合併，您也可以在該處設定核准。如需更多資訊，請參閱 [GitHub 提取請求文件](https://docs.github.com/en/pull-requests)

### 建立新的分支

1. 在專案中，按一下 GitHub 並選取建立新分支。

   專案必須連線至版本控制。您也必須擁有專案目標連線所在空間的權限。

2. 選取從主要分支建立分支。

3. 輸入分支的名稱。

4. 在所有結構描述的分支前置詞中設定要新增至專案中所有結構描述的前置詞。這允許對所有結構描述進行唯一命名，以避免命名衝突。

5. 按一下建立

從主要分支建立一個新分支，並從存放庫確認。此分支包含專案的新版本，其中所有任務均處於「新」狀態。也就是說，這沒有準備好，並且不包含任何資料。

### 套用遠端變更

您可以將遠端存放庫中的變更套用到您的工作區域。這可能是在 Qlik Cloud 整合版本控制之外建立的變更，例如在 GitHub 中或透過其他工具。若您想要認可變更並將變更推送到分支，這可以協助您避免衝突。

1. 在專案中，按一下 GitHub 並選取套用遠端變更。

   如果發現變更，則會顯示將遠端變更套用至工作區域對話方塊。

2. 現在您可以選取要套用變更的任務並檢查變更。對於每次變更，您可以選取要使用哪個版本：遠端版本或工作區域中的版本。

   進行任何所需的變更，以對應專案和匯入的專案之間不同的連線。

   例如，匯入的專案可能使用名稱為 SQL1 的來源連線，而此專案則使用名稱為 SQL2 的類似連線。在此情況下，在 為原始版本中新增的任務設定連線中將匯入的連線對應到 SQL2。

   如果變更包含跨專案來源，且參考的專案受版本控制，則每個跨專案來源都提供一個分支選取器。選取要取用的分支。如果參考的專案未受版本控制，則不會顯示分支選取器。

   資訊備註選取要對應的連線時，您可以建立新的資料庫連線，但不是 SaaS 應用程式連線。

3. 按一下套用遠端變更

如果變更包括新的資料任務，則必須新增來源連線和目標連線。

資訊備註如果您僅套用所選的任務，則必須注意保持專案的結構有效性。例如，如果您套用新的儲存任務，也必須套用來源登陸任務。手動新增登陸資料集無法運作。

### 認可並推送

您可以認可您的變更並將其推送到分支。由於可能會覆寫未套用於工作區域的遠端變更，因此您應該在認可和推送之前執行套用遠端變更。

1. 在專案中，按一下 GitHub 並選取認可並推送。

   如果發現變更，則會顯示認可並推送對話方塊。

2. 新增可協助您追蹤變更內容的認可訊息。

3. 按一下認可並推送

### 建立提取請求

建立提取請求 (PR) 以將工作區域的變更合併到主分支。

1. 在專案中，按一下專案上的 GitHub 並選取建立提取請求。

   就會顯示建立提取請求對話方塊。

2. 新增提取請求的標題和描述。

   建立後，您也可以選取在 GitHub 中開啟提取請求。

3. 按一下建立提取請求。

現在您可以設定提取請求的核准並在 GitHub 中執行合併。

資訊備註如果您需要使用更多進階選項，也可以選取在 GitHub 中建立提取請求。

### 刪除分支

將變更合併到主要分支後，您可以刪除分支。

1. 在專案中，按一下要刪除的分支，然後選取刪除分支。

   您也可以選取在版本控制中刪除遠端分支。

   如果有未認可的變更，您在刪除分支時需要確認這些變更將會遺失。

## 移除專案的版本控制

您可以從版本控制中斷專案連線。如果存在現有分支，則必須先刪除，才能中斷專案連線。

1. 在管道專案中，在要中斷連線的專案上按一下 ...，然後選取從 GitHub 中斷連線。

## 從版本控制匯入專案

您可以從版本控制匯入專案，例如，如果您想檢閱其他開發人員的專案或協作專案。從版本控制匯入專案也支援將專案共用到其他空間或租用戶。您可以與相同租用戶的不同空間或另一個租用戶共用專案版本。若您想要建立兩個環境 (例如一個用於開發，一個用於生產)，這非常實用。"

### 匯入專案之前

在開始匯入專案之前：

* 如果您要匯入至新的租用戶或空間，請建立所需的所有新連線。

* 若專案使用在租用戶或空間上尚不存在的 SaaS 應用程式連線，您必須先建立連線並產生中繼資料，再開始匯入。

* 如果您要匯入跨專案管道，您必須先匯入上游專案。

### 匯入專案

如果專案取用來自其他專案的任務，則必須對應專案和任務，除非空間和專案的名稱相同。

1. 在資料整合 &gt; 專案中，按一下新建並選取從版本控制匯入專案。

2. 選取存放庫，然後選取分支。

   如有需要，選取基本目錄路徑，並按一下顯示專案。

   從清單中選取要匯入的專案。

   按一下下一步。

3. 為新的專案設定專案屬性。

   您必須在空間中選取專案要新增至哪個空間。

   在資料平台中，您可以變更專案的資料平台，以及與資料平台的連線。

   若您已從另一個租用戶匯入專案，或者若您已在上一個步驟中變更資料平台，則需要變更連線。

   您可以變更前往暫存區域的連線。若您已從另一個租用戶匯入專案，或者在某些情況下，若您已在上一個步驟中變更資料平台，則需要此動作。

   按一下下一步。

4. 為新的專案設定預設專案設定。

   您可以在所有結構描述的前置詞中將前置詞新增至專案中建立的資料結構描述。若已匯入的專案位於與已匯出的專案相同的雲端資料倉庫中，則這很實用。

   您也可以在資料庫名稱中設定預設名稱。對於 Snowflake 專案，您可以設定預設資料倉庫名稱，對於 Databricks 專案，您可以設定預設目錄名稱。您可以對所有任務類型使用專案預設名稱，或將每個任務類型的名稱設定為預設名稱或自訂名稱。

   按一下下一步。

5. 設定連線和任務設定。

   您可以取代已匯入的來源連線或跨專案來源。若您已從另一個租用戶匯入專案，則需要此動作。

   在將跨專案來源對應至受版本控制的專案時，會顯示一個 分支 選取器。選取要取用的參考專案分支。如果參考的專案未受版本控制，則不會顯示分支選取器。如果跨專案來源對應到非主要分支，分支名稱會顯示在專案名稱旁的括號中。

   在選用任務設定中，您也可以變更原始專案中遭到覆寫的任務設定。

6. 準備就緒後，按一下匯入。

專案就會新增至 資料整合 首頁。

### 處理從版本控制匯入的專案

您的工作方式與一般版本控制專案相同，但有一些差異：

* 您只能切換到主分支，或切換到從版本控制匯入的另一個分支。

* 如果您是從分支匯入，主分支將會是空的。

* 刪除專案不會刪除遠端版本。

## 安全性考量

確保在 Qlik Talend Data Integration 和 GitHub 之間保持同步的安全性設定。

* 在 Qlik Talend Data Integration 中，權限是基於可能包含多個專案的空間。在 GitHub 中，權限是基於也可能包含多個專案的存放庫。最佳做法是對齊這些內容，並將某個空間中的所有專案連線至相同的存放庫。

* 請記住，Qlik Talend Data Integration 和 GitHub 對使用者使用不同的權限和角色。

## 最佳做法

以下是使用版本控制處理專案時的一些一般最佳做法。

* 新增描述 GitHub 中存放庫的讀我檔案。如需詳細資訊，請參閱[關於讀我檔案](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes)。

  如果您從一個空的存放庫開始，Qlik Talend Cloud 版本控制會自動新增一個空的 README.md 檔案。

* 一般來說，您應該讓 Qlik Talend Cloud 版本控制管理 GitHub 存放庫。

* 僅認可有效且經過測試可執行的專案。

  如果您新增具有尚未準備或轉換的「登陸」或「已註冊」資料任務的專案，則尚未包含來源欄。準備和轉換任務時會新增來源欄。

* 當您為複寫專案建立分支時，您應該注意分支預設會使用相同的目標。這表示，分支中執行的任務可以覆寫主要版本的資料。為了避免資料遺失，請變更分支中的目標設定，以避免與主要版本衝突。

* 建立分支時，可能有尚未套用至工作區域的遠端變更。請在建立分支之前或之後套用遠端變更，除非您想捨棄遠端變更。

* 在兩個不同分支中對相同資料集進行變更可能會導致難以解決的合併衝突，以及資料集的重新建立。

  資訊備註當資料集新增至任務時，它會取得內部識別碼。內部識別碼用於允許在管道中進行無縫重新命名和其他中繼資料作業。在個別專案或分支中建立相同資料集時，內部識別碼將會不同，這可能會在合併兩個分支時造成衝突。這可能會導致準備程序捨棄並重新建立資料集，即使它具有相同的名稱。

### 在分支中工作

您可以建立一個專案，對其進行設計，準備好後，使用 MAIN 分支將其部署到生產環境。MAIN 上的版本對應至您的生產管道。切勿在第一次部署之後直接編輯 MAIN 分支。

每當開發人員想要在專案中進行新的變更 (例如新增功能或修正錯誤) 時，都需要建立一個新分支。

開發人員可以根據自己的開發需求建立任意數量的分支。

* 對分支使用架構前置詞以避免在進行變更時發生資料庫衝突。

* 在分支中，開發人員可以進行任意數量的變更，並根據需要提交和推送任意次。建議將每個變更隔離在一個獨立、單獨的提交中。例如，如果您對轉換任務進行的變更也會影響資料超市，請確保在一次提交中包含這兩項變更。

* 所有團隊成員都應隨時使用套用遠端變更來確保其 MAIN 是最新的，尤其是在提交變更之前。

當開發人員完成其分支的工作後，他們可以建立提取請求以進行同儕審查。

資訊備註需要先建立提取請求，然後才能使用套用遠端變更並將分支變更合併回主幹。

在其他團隊成員檢閱並核准後，您可以在 GitHub 中將提取請求與 MAIN 版本合併。

最後，在專案中使用套用遠端變更將已核准的分支變更提取回 MAIN 分支 (生產)。

資訊備註所有團隊成員都應隨時使用套用遠端變更來確保其 MAIN 是最新的。

### 在空間中運作

對於較大且關鍵的部署，建議使用專用空間進行開發和生產，以隔離變更並確保管道完整性。對每個空間中的來源和目標使用專用資料連線。

* 生產

  MAIN 分支反映了生產中的內容。這意味著一個專案只有一個 MAIN 版本。

  生產被隔離在專用資料空間中，例如 PROD。將向生產空間指派專用連線。

  不會直接在生產空間/MAIN 分支中進行任何變更。所有變更都是使用分支在具有專用連線的其他空間中進行的。

  您可以重複使用 GitHub 中現有專案的 MAIN 版本。建立一個與 GitHub 中現有專案具有相同名稱的空白專案。這將擷取 MAIN 分支上的最新可用版本以開始編輯。

  使用者會建立一個新分支、進行變更、建立提取請求、合併，並提取回 MAIN/生產。

* 開發

  開發人員可以將其變更隔離在專用資料空間中，例如 DEV 中。將向 DEV 空間指派專用連線。

  使用分支來隔離變更，通常每個開發人員都擁有一個分支。在建立分支時使用架構前置詞，以避免在進行變更時發生資料庫衝突。

* 檢閱/品質驗收

  檢閱者有權存取發展空間和連線，以：

  * 在 Qlik Talend Cloud中開啟並測試專案分支。

  * 核准提取請求以繼續在 GitHub 中進行合併。

  * 通知團隊成員何時可以將已核准的變更提取回 MAIN/生產。

將核准的變更部署回 MAIN/生產空間時，您必須將連線重新指派到生產空間連線。

## 宣告式管道管理

啟用版本控制後，專案會以 YAML 設定檔的形式儲存在 GitHub 中。您可以匯出這些檔案，在 IDE 中編輯它們，並重新匯入它們以更新專案。這個宣告式工作流程支援程式碼審查、在 CI/CD 管線中自動化驗證，以及使用 Git 分支的環境升級。

如需詳細資訊，請參閱[宣告式管線](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/DeclarativePipelines/Declarative-pipelines-overview.htm)。

## 限制

* 版本控制不支援以 Qlik Cloud (QVD) 為目標的專案。

* 如果存在分支，則無法使用版本控制斷開或刪除專案。必須先刪除分支，才能斷開或刪除專案。

* 無法使用版本控制重新命名專案。

* 刪除租用戶時，不會刪除 GitHub 中使用版本控制儲存的物件。您需要手動刪除這些物件。

* 如果存放庫由許多專案使用，或包含許多未儲存在 Qlik Talend Data Integration 中的檔案，則效能可能會下降。

* 版本控制中不會維護資料庫結構描述和連線。

* 不支援 GitHub 精細粒度的個人存取 Token。

* 即使兩個專案位於相同的存放庫，每個存放庫仍只能由一個專案使用一個分支 (主要分支除外)。

* 無法從使用不同目標平台的專案套用遠端變更。例如，如果您向 Snowflake 上的專案認可變更，則無法將變更套用到 Databricks 專案。