

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Git 客户端疑难解答和 AWS CodeCommit
<a name="troubleshooting-git"></a>

以下信息可帮助您排查对 AWS CodeCommit 存储库使用 Git 时的常见问题。有关排查在使用 HTTPS 或 SSH 时出现的与 Git 客户端相关的问题，另请参阅[Git 凭证 (HTTPS) 问题排查](troubleshooting-gc.md)、[SSH 连接问题排查](troubleshooting-ssh.md)和[凭证助手 (HTTPS) 问题排查](troubleshooting-ch.md)。

**Topics**
+ [Git 错误：Error: RPC failed; result=56, HTTP code = 200 fatal: The remote end hung up unexpectedly](#troubleshooting-ge1)
+ [Git 错误：引用更新命令过多](#troubleshooting-ge2)
+ [Git 错误：在某些版本的 Git 中，无法通过 HTTPS 执行推送](#troubleshooting-ge3)
+ [Git 错误：“gnutls\$1handshake() failed”](#troubleshooting-ge4)
+ [Git 错误：Git 找不到 CodeCommit 仓库或无权访问仓库](#troubleshooting-ge5)
+ [Windows 上的 Git：没有支持的身份验证方法可用 (publickey)](#troubleshooting-gw1)

## Git 错误：Error: RPC failed; result=56, HTTP code = 200 fatal: The remote end hung up unexpectedly
<a name="troubleshooting-ge1"></a>

**问题：**在推送较大的更改、大量更改或大型存储库时，长时间运行的 HTTPS 连接通常会因为网络问题或防火墙设置而提前终止。

**可能的修复措施：**改用 SSH 推送，或在迁移大型存储库时按照[以增量方式迁移存储库](how-to-push-large-repositories.md)中的步骤操作。还要确保未超出单个文件的大小限制。有关更多信息，请参阅 [配额](limits.md)。

## Git 错误：引用更新命令过多
<a name="troubleshooting-ge2"></a>

**问题：**每次推送的引用更新数量最多为 4000 个。当推送包含超过 4000 个引用更新时，会出现这种错误。

**可能的修复措施：**尝试使用 `git push --all` 和 `git push --tags` 分别推送分支和标签。如果标签过多，将标签拆分成多个推送批次。有关更多信息，请参阅 [配额](limits.md)。

## Git 错误：在某些版本的 Git 中，无法通过 HTTPS 执行推送
<a name="troubleshooting-ge3"></a>

**问题：**更新到 7.41.0 的 curl 存在导致基于 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 的更多信息，请参阅论坛中的[推送到 HTTPS 已损坏](https://github.com/msysgit/git/issues/332)。 GitHub 有关 Windows 版 Git 的版本问题的更多信息，请参阅[版本 2.11.0(3) 不需要用户名/密码](https://github.com/git-for-windows/git/issues/1034)。

## Git 错误：“gnutls\$1handshake() failed”
<a name="troubleshooting-ge4"></a>

**问题：**在 Linux 中，当你尝试使用 Git 与 CodeCommit 仓库通信时，会出现一条包含该短语的错误消息`error: gnutls_handshake() failed`。

**可能的修复措施：**基于 OpenSSL 编译 Git。Ask Ubuntu 论坛提供了一个解决方案，请参阅 [ "Error: gnutls\$1handshake() failed" When Connecting to HTTPS Servers](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)。