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

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

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 连接问题排查