- 在windows上checkout时返回 error: invalid path
解决办法:
为什么 core.protectNTFS 会解决问题?git config core.protectNTFS false
core.protectNTFS
是 Git 配置中的一个选项,专门用于 Windows 系统上解决与 NTFS 文件系统相关的问题。Windows 中的 NTFS 文件系统有一些特殊的文件名限制和路径限制,Git 使用此配置来避免某些文件名或路径问题。当 Git 检测到潜在的与 NTFS 文件系统不兼容的路径时,它会通过默认启用 core.protectNTFS
保护机制来阻止这些路径的使用。
通过将 core.protectNTFS
设置为 false
,您可以禁用这一保护机制,从而允许 Git 处理这些被认为是非法的路径或文件。具体来说,这个配置可以帮助 Git 处理路径中的特殊字符或路径长度问题,这些在 Windows 上可能会导致问题。
GitHub SSH连接问题解决方案:通过443端口使用SSH
问题描述
在使用Git克隆GitHub仓库时,你可能会遇到以下错误信息:
$ git clone git@github.com:username/repository.git
Cloning into 'repository'...
ssh: connect to host github.com port 22: Connection refused
fatal: Could not read from remote repository.
或者当测试SSH连接时:
$ ssh -T git@github.com
ssh: connect to host github.com port 22: Connection refused
解决方案:通过HTTPS端口(443)使用SSH
GitHub提供了一个特殊的方案,允许通过端口443(标准HTTPS端口)使用SSH连接,这个端口通常不会被防火墙阻止。
具体步骤:
编辑或创建SSH配置文件:
mkdir -p ~/.ssh
nano ~/.ssh/config
添加以下配置:
Host github.com
Hostname ssh.github.com
Port 443
User git
保存文件后,测试连接:
ssh -T git@github.com
如果看到以下消息,则表示连接成功:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
工作原理
这个配置的工作原理是:
Host github.com
:当你尝试连接到github.com时Hostname ssh.github.com
:实际连接到ssh.github.comPort 443
:使用端口443而不是默认的22User git
:使用用户名git
GitHub在端口443上运行了一个特殊的服务,它能够识别传入的连接是SSH还是HTTPS,并相应地路由请求。当你的Git命令试图连接到GitHub时,SSH客户端会自动使用你配置的替代设置,从而绕过对端口22的限制。
这种方法同样安全,因为它仍然使用标准的SSH加密和身份验证机制,只是改变了连接的端口。