【发布时间】:2022-11-06 19:18:18
【问题描述】:
我的笔记本电脑运行arch linux。我想使用 github 来备份我的项目。一开始一切正常,我能够推送前两个提交。
然后我想推动第三次提交,但它花了很长时间。从那时起,与远程存储库的每次通信(在多个存储库上推送、拉取、克隆等)都持续了很长时间,并以错误结束:fatal: could not read from remote repository。有一个例外,我可以推动。之后又是一样的。
ssh 身份验证正在工作。 ssh git@github.com 提供预期的响应。
(ssh -T git@github.com 永远不会成功 - 这有关系吗?)
有一些类似的线程,但我还没有找到有效的答案。
我已经尝试过的:
- 已检查远程存储库 (
git remote -v): -- 正确 - 启动 ssh-agent 并添加密钥 (
eval `ssh-agent`, ssh-add) - 强制 ssh 使用 IPv4(在
~/.ssh/config:AddressFamily inet) - 删除了 git 环境变量 (
unset GIT_SSH) - 尝试了带/不带密码的多个密钥(rsa、ed25519)
- 使用带有
ssh://方案的url (ssh://git@yourhost:port/path/repo.git) - 更新了 git
- 操作系统的完整更新
- 凭据助手已禁用 (
git config --global --unset credential.helper) - 已检查凭据 (
git config --global user.name,git config --global user.email)
我什至试图追踪 git pull:
GIT_TRACE=2 GIT_TRACE_PACK_ACCESS=2 GIT_TRACE_PACKET=2 GIT_TRACE_PERFORMANCE=2 GIT_TRACE_SETUP=2 git push -u origin main --verbose结果:
14:10:30.980851 trace.c:312 setup: git_common_dir: .git 14:10:30.980857 trace.c:313 setup: worktree: /home/alex/Entwicklung/NetCore/ActivityTrackerPC 14:10:30.980863 trace.c:314 setup: cwd: /home/alex/Entwicklung/NetCore/ActivityTrackerPC 14:10:30.980868 trace.c:315 setup: prefix: (null) 14:10:30.980872 git.c:460 trace: built-in: git push -u origin main --verbose Push nach github.com:2kHammer/ActivityTracker.git 14:10:30.984208 run-command.c:655 trace: run_command: unset GIT_PREFIX; ssh git@github.com 'git-receive-pack '\''2kHammer/ActivityTracker.git'\'''然后它挂起,直到发生错误。
现在我将项目复制到我的覆盆子并从那里推送。它在那里工作没有问题。
我真的很绝望,git是必不可少的工具。
【问题讨论】:
-
只是让你知道,@ 987654321@。
-
“永远”的事情可能是相关的,尽管究竟如何是一个谜。使用 tcpdump 或 wireshark 之类的工具来监控实际的网络流量,并将缓慢但成功的
ssh -T git@github.com与不成功的git push进行比较。检查可能破坏数据的中间件/代理盒等。如果出现模式,这将帮助您找到罪魁祸首。 -
还值得从 Linux 机器和其他可以看到它的机器(例如另一台笔记本电脑,您可以将以太网硬件置于窥探模式)中转储数据包跟踪。有时像这样的问题最终是由于设备驱动程序中的错误造成的,例如某些数据包被损坏。硬件校验和和TSO and so on 促成了这些事情。