1. 在windows上checkout时返回 error: invalid path 解决办法:
    1. git config core.protectNTFS false
    为什么 core.protectNTFS 会解决问题?

core.protectNTFS 是 Git 配置中的一个选项,专门用于 Windows 系统上解决与 NTFS 文件系统相关的问题。Windows 中的 NTFS 文件系统有一些特殊的文件名限制和路径限制,Git 使用此配置来避免某些文件名或路径问题。当 Git 检测到潜在的与 NTFS 文件系统不兼容的路径时,它会通过默认启用 core.protectNTFS 保护机制来阻止这些路径的使用。

通过将 core.protectNTFS 设置为 false,您可以禁用这一保护机制,从而允许 Git 处理这些被认为是非法的路径或文件。具体来说,这个配置可以帮助 Git 处理路径中的特殊字符或路径长度问题,这些在 Windows 上可能会导致问题。

GitHub SSH连接问题解决方案:通过443端口使用SSH

问题描述

在使用Git克隆GitHub仓库时,你可能会遇到以下错误信息:

  1. $ git clone git@github.com:username/repository.git
  2. Cloning into 'repository'...
  3. ssh: connect to host github.com port 22: Connection refused
  4. fatal: Could not read from remote repository.

或者当测试SSH连接时:

  1. $ ssh -T git@github.com
  2. ssh: connect to host github.com port 22: Connection refused

解决方案:通过HTTPS端口(443)使用SSH

GitHub提供了一个特殊的方案,允许通过端口443(标准HTTPS端口)使用SSH连接,这个端口通常不会被防火墙阻止。

具体步骤:

  1. 编辑或创建SSH配置文件:

    1. mkdir -p ~/.ssh
    2. nano ~/.ssh/config
  2. 添加以下配置:

    1. Host github.com
    2. Hostname ssh.github.com
    3. Port 443
    4. User git
  3. 保存文件后,测试连接:

    1. ssh -T git@github.com
  4. 如果看到以下消息,则表示连接成功:

    1. Hi username! You've successfully authenticated, but GitHub does not provide shell access.

工作原理

这个配置的工作原理是:

  1. Host github.com:当你尝试连接到github.com时
  2. Hostname ssh.github.com:实际连接到ssh.github.com
  3. Port 443:使用端口443而不是默认的22
  4. User git:使用用户名git

GitHub在端口443上运行了一个特殊的服务,它能够识别传入的连接是SSH还是HTTPS,并相应地路由请求。当你的Git命令试图连接到GitHub时,SSH客户端会自动使用你配置的替代设置,从而绕过对端口22的限制。

这种方法同样安全,因为它仍然使用标准的SSH加密和身份验证机制,只是改变了连接的端口。