Git 客户端和 Amazon CodeCommit 问题排查 - Amazon CodeCommit
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon CodeCommit 不再向新客户提供。 Amazon CodeCommit 的现有客户可以继续正常使用该服务。了解更多

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

Git 客户端和 Amazon CodeCommit 问题排查

以下信息可帮助您排查对 Amazon CodeCommit 存储库使用 Git 时的常见问题。有关排查在使用 HTTPS 或 SSH 时出现的与 Git 客户端相关的问题,另请参阅Git 凭证 (HTTPS) 问题排查SSH 连接问题排查对凭证助手进行故障排除 () HTTPS

Git 错误:Error: RPC failed; result=56, HTTP code = 200 fatal: The remote end hung up unexpectedly

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

可能的修复措施:改用 SSH 推送,或在迁移大型存储库时按照以增量方式迁移存储库中的步骤操作。还要确保未超出单个文件的大小限制。有关更多信息,请参阅配额

Git 错误:引用更新命令过多

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

可能的修复措施:尝试使用 git push --allgit push --tags 分别推送分支和标签。如果标签过多,将标签拆分成多个推送批次。有关更多信息,请参阅配额

Git 错误:在某些版本的 Git 中,无法通过 HTTPS 执行推送

问题:更新到 7.41.0 的 curl 存在导致基于 SSPI 的摘要身份验证失败的问题。已知受影响的 Git 版本包括 1.9.5.msysgit.1。某些版本的 Windows 版 Git 可能不完全符合 RFC 2617RFC 4559 标准,这可能会导致使用 Git 凭证或 Amazon CLI 随附的凭证辅助程序的 HTTPS 连接出现问题。

可能的修复措施:检查 Git 版本是否存在已知问题,或使用更早/更高的版本。有关 mysysgit 的更多信息,请参阅 Github 论坛中的 Push to HTTPS Is Broken。有关 Windows 版 Git 的版本问题的更多信息,请参阅版本 2.11.0(3) 不需要用户名/密码

Git 错误:“gnutls_handshake() failed”

问题:在 Linux 中,尝试使用 Git 与 CodeCommit 存储库通信时,出现一条错误消息,其中包含 error: gnutls_handshake() failed 字样。

可能的修复措施:基于 OpenSSL 编译 Git。Ask Ubuntu 论坛提供了一个解决方案,请参阅 "Error: gnutls_handshake() failed" When Connecting to HTTPS Servers

或者,使用 SSH 而不是 HTTPS 与 CodeCommit 存储库通信。

Git 错误:Git 找不到 CodeCommit 存储库或无权访问该存储库

问题:连接字符串中的尾部斜杠可能导致连接尝试失败。

可能的修复措施:确保提供正确的存储库名称和连接字符串,并且没有尾随斜杠。有关更多信息,请参阅连接存储库

Windows 上的 Git:没有支持的身份验证方法可用 (publickey)

问题:为 Windows 配置 SSH 访问后,在尝试使用 git pullgit pushgit clone 命令时出现拒绝访问错误。

可能的修复措施:导致该错误的最常见原因是计算机上存在 GIT_SSH 环境变量,并且该变量配置为支持其他连接实用程序 (如 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 连接问题排查