GitHub, GitLab,和Git Repos and Issue Tracking的故障排除
使用 GitHub,GitLab, 和 Git Repos and Issue Tracking 時可能遇到的常見問題,包括 GitHub 驗證或工具整合設定問題。 在許多案例中,您可以藉由遵循一些簡單的步驟,從這些問題回復。
在不同地區的工具鏈中,為什麼無法在某個地區的工具鏈中使用 Git Repos and Issue Tracking 工具整合?
您不可以跨多個地區使用 Git Repos and Issue Tracking 實例。
嘗試將 Git Repos and Issue Tracking 工具整合新增至工具鏈時,收到下列錯誤訊息:
Repository URL is not valid. The repository must be on {local GitLab URL}.
其中 {local GitLab URL} 是工具鏈所在地區中的 Git Repos and Issue Tracking 工具整合 URL。
因為 Git Repos and Issue Tracking 與 Continuous Delivery 服務在其執行地區中緊密整合,所以您不可以跨多個地區使用 Git Repos and Issue Tracking 實例。
建立通用 GitLab 整合,並使用此整合來指向不同地區中的 Git Repos and Issue Tracking 儲存庫,而不要建立 Git Repos and Issue Tracking 工具整合。
-
在IBM Cloud控制台中,點選選單圖示
>平台自動化>工具鏈。 在工具鏈頁面中,按一下要新增此整合的工具鏈。
-
按一下新增工具。
-
在「工具整合」區段中,按一下 GitLab。
-
按一下您要使用的 GitLab 伺服器。 如果您要存取的儲存庫所在的 GitLab 伺服器未出現在此清單中,則請新增自訂伺服器:
a. 按一下自訂伺服器。
b. 鍵入伺服器的名稱。 此伺服器名稱將會出現在可用的 GitLab 伺服器清單中。
c. 鍵入自訂 GitLab 伺服器的「根 URL」。
d. 輸入自訂 GitLab 伺服器的個人存取記號。 如果您沒有個人存取記號,則請建立個人存取記號。
-
如果您有 GitLab 儲存庫並且想要使用它,請針對儲存庫類型按一下現有,然後鍵入 URL。
-
如果您要使用新的 GitLab 儲存庫,請鍵入儲存庫的名稱,並鍵入您所複製或分出之儲存庫的 URL,然後選取儲存庫類型:
a. 若要建立空的儲存庫,請按一下新建。
b. 若要建立 GitLab 儲存庫的副本,請按一下複製。
c. 若要分出 GitLab 儲存庫,以透過合併要求來提出變更,請按一下分出。
-
若要在伺服器上建立公用儲存庫,請清除將此儲存庫設為專用勾選框。
-
若要使用 GitLab Issues 進行問題追蹤,請選取啟用 GitLab Issues 勾選框。
-
若要透過建立確定的標籤和註解以及確定所參照之問題的標籤和註解來追蹤程式碼變更部署,請選取追蹤程式碼變更部署勾選框。
-
按一下建立整合。
如需配置 GitLab 工具整合的相關資訊,請參閱配置 GitLab。
為什麼無法透過 https 複製 Git Repos and Issue Tracking 儲存庫?
您必須使用個人存取記號或 SSH 金鑰來執行 Git 作業。
您嘗試從指令行使用 https 推送或複製儲存庫,但無法鑑別,即使輸入正確的密碼也是一樣。
Git Repos and Issue Tracking 所使用的單一登入機制不支援在指令行上使用使用者名稱及密碼的 Git 鑑別。
若要執行複製或推送這類 Git 作業,您必須使用個人存取記號或 SSH 金鑰。 如需建立個人存取記號或 SSH 金鑰的相關資訊,請參閱入門指導教學。
嘗試使用 SSH 複製 Git Repos and Issue Tracking 儲存庫時,為什麼系統提示我進行鑑別?
專用 SSH 金鑰位置或許可權可能發生問題,或 Git 指令行可能未使用專用 SSH 金鑰以向 Git Repos and Issue Tracking 進行鑑別。
我已透過 Git Repos and Issue Tracking 使用者介面新增 SSH 公開金鑰。 嘗試使用 SSH 來複製儲存庫時,系統提示我輸入密碼或安全碼;或顯示錯誤訊息,指出鑑別失敗。
下列任何 SSH 問題可能會提示您鑑別,或顯示錯誤訊息:
-
Git 指令行可能未使用專用 SSH 金鑰以向 Git Repos and Issue Tracking 進行鑑別。
-
專用 SSH 金鑰可能不在預設 ~/.ssh/id_rsa 位置中。
-
專用 SSH 金鑰可能沒有正確的許可權 (600)。
使用下列任何方法來解決此問題:
-
如果您使用預設專用 SSH 金鑰位置,則請驗證 ~/.ssh/ 資料夾及 ~/.ssh/id_rsa 私密金鑰檔的許可權。 如果許可權太廣泛,則 SSH 依預設不會使用私密金鑰。 請確定 ~/.ssh/ 資料夾的許可權設為 700,而 ~/.ssh/id_rsa 資料夾的許可權設為 600。
-
如果您的私密金鑰不在預設位置中,則請使用下列指令以在環境變數中指定它:
GIT_SSH_COMMAND='ssh -i/path/to/private_key_file' git clone git@host:owner/repo.git
- 若要使用連線資訊來除錯此問題,請將 -v 或 -vvv 旗標新增至
GIT_SSH_COMMAND環境變數:
GIT_SSH_COMMAND='ssh -vvv git clone git@host:owner/repo.git
GIT_SSH_COMMAND='ssh -vvv -i/path/to/private_key_file' git clone git@host:owner/repo.git
我嘗試從 Git Repos and Issue Tracking 儲存庫提取變更,為何收到 504 Gateway Time-out 錯誤?
您的儲存庫大於 1 GB。 Git 來源控制管理系統不是設計用來儲存大型二進位檔。
當我嘗試對儲存庫 Git Repos and Issue Tracking 執行操作(例如抓取或複製)時,會收到錯誤訊息:
git fetch error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504 Gateway Time-out fatal: The remote end hung up unexpectedly
您具有大於 1 GB 的大型儲存庫。 儲存庫也可能包含比以壓縮格式儲存的文字檔需要更多空間的二進位檔。
您可以使用下列任何方法來解決此問題:
我已嘗試透過電子郵件將使用者新增至 GitLab 專案,但他們未收到邀請。 如何將他們新增至專案?
使用者電子郵件可能會封鎖邀請。
我已使用列在 Git Repos and Issue Tracking 中的使用者電子郵件位址來邀請使用者加入 GitLab 專案,但他們未收到電子郵件。
垃圾郵件過濾器可能會封鎖電子郵件進入使用者收件匣。
您可以使用下列任何方法來解決此問題:
-
檢查電子郵件垃圾郵件資料夾,判定是否已將電子郵件邀請標示為垃圾郵件。 電子郵件會從 noreply@ 位址送出。 更新垃圾郵件過濾器,以容許來自此位址的電子郵件。
-
調查不受使用者控制的公司垃圾郵件過濾器是否封鎖電子郵件。 請要求使用者登入 Git Repos and Issue Tracking 使用者介面,並將其使用者 ID 傳送給您。 您可以使用使用者的使用者 ID 將使用者新增至 GitLab 專案。
當我使用 Terraform 來更新現有 Git 工具整合的配置時,配置為何失敗?
Git 工具整合資源指定 type 為 clone、fork 或 new,並指定現有目標儲存庫。
當您使用 Terraform 更新工具 Git 整合時,設定會因錯誤訊息 The nonempty repository _REPO-URL_ already exists. Either delete the repository or change the Repository Type to 'Existing' 而失敗,其中 REPO-URL 為目標儲存庫的 URL。
此錯誤通常是由下列動作所造成:
- Git 工具整合 Terraform 資源指定
type為clone、fork或new。 您將資源的 區塊initialization內的 變更repo_url為現有儲存庫的 URL。 - Git 工具整合 Terraform 資源指定
type為clone、fork或new。 您未變更repo_url,但在資源的initialization區塊內變更了一或多個其他引數。 在此狀況下,儲存庫存在,因為它是在 Terraform 先前套用 Git 工具整合資源時建立的。
clone、fork 及 new 類型會指示 Git 工具整合,以在此儲存庫不存在的前提下建立目標儲存庫 (repo_url)。 如果工具整合找到目標儲存庫,則依設計會失敗。
將 type 從 clone、fork 或 new 變更為 clone_if_not_exists、fork_if_not_exists 或 new_if_not_exists。 這些類型會 Git 指示工具整合功能:若目標儲存庫不存在,則建立該儲存庫;若目標儲存庫已存在,則直接使用現有儲存庫。
雖然您可以使用其他方法來解決此錯誤,但不建議使用這些方法,因為您可能會遺失資訊。 這些方法也可能需要對 Terraform 進行非良好作法的變更。
- 將
repo_url變更為重新套用 Terraform 時建立的儲存庫。 在起始建立之後變更 Terraform 資源以避免在後續更新期間發生錯誤是反型樣。 此方法也會完整保留先前建立的儲存庫,但不再連結至工具鏈。 - 將
type變更為existing,然後重新套用 Terraform。 在起始建立之後變更 Terraform 資源以避免在後續更新期間發生錯誤是反型樣。 - 手動刪除目標儲存庫,然後重新套用 Terraform。 不建議在其他自動 Terraform 作業之間進行手動變更。 如果您刪除儲存庫,則刪除無法復原,且可能導致永久資料流失。