本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Git 客户端问题排查和Amazon CodeCommit
以下信息可帮助您排查对 Amazon CodeCommit 存储库使用 Git 时的常见问题。有关排查在使用 HTTPS 或 SSH 时出现的与 Git 客户端相关的问题,另请参阅对 Git 凭证进行问题排查 (HTTPS)、对 SSH 连接进行问和排查凭证辅助程序 (HTTPS)。
主题
Git 错误:Error: RPC 失败;结果 =56,HTTP code = 200 个致命:远程端意外挂断
问题:在推送较大的更改、大量更改或大型存储库时,长时间运行的 HTTPS 连接通常会因为网络问题或防火墙设置而提前终止。
可能的修复措施:改用 SSH 推送,或在迁移大型存储库时按照中的步骤操作以增量方式迁移仓库. 还要确保未超出单个文件的大小限制。有关更多信息,请参阅 配额。
Git 错误:引用更新命令过多
问题:每次推送的引用更新数量最多为 4,000 个。当推送包含超过 4000 个引用更新时,会出现这种错误。
可能的修复措施:尝试使用单独推送分支和标签git push --all
和git push --tags
. 如果标签过多,将标签拆分成多个推送批次。有关更多信息,请参阅 配额。
Git 错误:Git 的某些版本中,无法通过 HTTPS 执行推送
问题:7.41.0 的 curl 更新问题导致基于 SSPI 的摘要身份验证失败。已知受影响的 Git 版本包括 1.9.5.msysgit.1。某些版本的 Windows 版 Git 可能不完全符合 RFC 2617
可能的修复措施:检查 Git 版本是否存在已知问题,或使用更早或更高的版本。有关 mysysgit 的更多信息,请参阅 Github 论坛中的 Push to HTTPS Is Broken
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 pull、git push,或者git 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 连接进行问。