

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 故障診斷 Git 用戶端和 AWS CodeCommit
<a name="troubleshooting-git"></a>

以下資訊可以協助您對使用 Git 搭配 AWS CodeCommit 儲存庫時的常見問題進行故障診斷。如需對使用 HTTPS 或 SSH 時 Git 用戶端的相關問題進行故障診斷，也請參閱 [故障診斷 Git 登入資料 (HTTPS)](troubleshooting-gc.md)、[對 SSH 連線進行故障診斷](troubleshooting-ssh.md)和 [故障診斷登入資料協助程式 (HTTPS)](troubleshooting-ch.md)。

**Topics**
+ [Git 錯誤：錯誤：RPC 失敗；結果 = 56，HTTP 程式碼 = 200 嚴重：遠端意外掛斷](#troubleshooting-ge1)
+ [Git 錯誤：太多個參考更新命令](#troubleshooting-ge2)
+ [Git 錯誤：透過 HTTPS 推送在某些版本的 Git 中會損壞](#troubleshooting-ge3)
+ [Git 錯誤：'gnutls\$1handshake () 失敗'](#troubleshooting-ge4)
+ [Git 錯誤：Git 找不到 CodeCommit 儲存庫，或沒有存取儲存庫的許可](#troubleshooting-ge5)
+ [Windows 上的 Git：沒有支援的身分驗證方法可供使用 (publickey)](#troubleshooting-gw1)

## Git 錯誤：錯誤：RPC 失敗；結果 = 56，HTTP 程式碼 = 200 嚴重：遠端意外掛斷
<a name="troubleshooting-ge1"></a>

**問題：**推送大型變更、大量變更，或大型儲存庫時，長時間執行的 HTTPS 連線經常會因為網路連線問題或防火牆設定提前終止。

**可能的修正：**改為使用 SSH 推送，或當您移轉大型儲存庫時遵循[以遞增方式遷移儲存庫](how-to-push-large-repositories.md)中的步驟。此外，請確定您未超過個別檔案的大小限制。如需詳細資訊，請參閱[配額](limits.md)。

## Git 錯誤：太多個參考更新命令
<a name="troubleshooting-ge2"></a>

**問題：**每個推送的參考更新數量上限為 4,000 個。當推送包含超過 4,000 個參考更新時會顯示此錯誤。

**可能的修正：**嘗試使用 `git push --all` 和 `git push --tags` 來推送個別分支和標籤。如果您有太多個標籤，請將標籤分割成多個推送。如需詳細資訊，請參閱[配額](limits.md)。

## Git 錯誤：透過 HTTPS 推送在某些版本的 Git 中會損壞
<a name="troubleshooting-ge3"></a>

**問題：**Curl 更新至 7.41.0 的問題造成以 SSPI 為基礎的摘要身分驗證失敗。已知受影響的 Git 版本包含 1.9.5.msysgit.1。某些版本的適用於 Windows 的 Git 登入資料可能無法完全符合 [RFC 2617](https://tools.ietf.org/html/rfc2617#page-5) 和 [RFC 4559](https://tools.ietf.org/html/rfc4559#page-2)，這可能會導致使用 Git 登入資料或 AWS CLI隨附的登入資料協助程式的 HTTPS 連線發生問題。

**可能的修正：**檢查您的 Git 版本是否有已知問題，或使用舊版或更新版本的版本。如需 mysysgit 的更多資訊，請參閱 ​GitHub 論壇中的[對 HTTPS 的推送已損壞](https://github.com/msysgit/git/issues/332)。如需適用於 Windows 的 Git 版本問題的更多資訊，請參閱[ 版本 2.11.0(3) 未要求輸入使用者名稱/密碼](https://github.com/git-for-windows/git/issues/1034)。

## Git 錯誤：'gnutls\$1handshake () 失敗'
<a name="troubleshooting-ge4"></a>

**問題：**在 Linux 中，當您嘗試使用 Git 與 CodeCommit 儲存庫通訊時，會出現錯誤訊息，其中包含片語 `error: gnutls_handshake() failed`。

**可能的修正：**針對 OpenSSL 編譯 Git。針對一個方法，請參閱 Ask Ubuntu 論壇中的[連接到 HTTPS 伺服器時出現「錯誤：gnutls\$1handshake () 失敗」](http://askubuntu.com/questions/186847/error-gnutls-handshake-falied-when-connecting-to-https-servers)。

或者，使用 SSH 而不是 HTTPS 來與 CodeCommit 儲存庫通訊。

## Git 錯誤：Git 找不到 CodeCommit 儲存庫，或沒有存取儲存庫的許可
<a name="troubleshooting-ge5"></a>

**問題：**連線字串中的結尾斜線可能導致連線嘗試失敗。

**可能的修正：**確定您已為儲存庫提供正確的名稱和連線字串，而且沒有結尾斜線。如需詳細資訊，請參閱[連接到儲存庫](how-to-connect.md)。

## Windows 上的 Git：沒有支援的身分驗證方法可供使用 (publickey)
<a name="troubleshooting-gw1"></a>

**問題：**在您為 Windows 設定 SSH 存取之後，嘗試使用命令 (例如 **git pull**、**git push** 或 **git clone** 時)，您會看見存取遭拒錯誤。

**可能的修正：**此錯誤的最常見原因是您的電腦上存在 GIT\$1SSH 環境變數，並且已設定可支援其他連線公用程式，例如 PuTTY。若要修正此問題，請嘗試下列其中一項：
+ 開啟 Bash 模擬器，並在 Git 命令之前新增 `GIT_SSH_COMMAND="ssh"` 參數。例如，如果您嘗試複製儲存庫，不要輸入 **git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo**，請輸入：

  ```
  GIT_SSH_COMMAND="ssh" git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo
  ```
+ 重新命名或刪除 `GIT_SSH` 環境變數 (如果您已不再使用它)。然後開啟新的命令提示字元或 Bash 模擬器工作階段，並再次嘗試您的命令。

如需有關在 Windows 上使用 SSH 時對 Git 問題進行故障診斷的詳細資訊，請參閱 [對 SSH 連線進行故障診斷](troubleshooting-ssh.md)。