购买咨询
微信咨询
电话咨询
预约演示
跳转到内容

git 仓库常见问题

GIT 生成 SSH 密钥

注意在生成 ssh 密钥时,防止覆盖本地默认 SSH KEY,可以使用ssh-keygen 命令支持通过 -f 参数指定生成密钥的文件名和路径,避免覆盖默认的 id_ed25519 文件。具体用法如下:

完整命令示例

Bash
ssh-keygen -t ed25519 -C "dw-git SSH" -f ~/.ssh/dw-git-ed25519

参数说明

  • -f ~/.ssh/dw-git-ed25519:指定生成的私钥文件名为 dw-git-ed25519,保存在 ~/.ssh/ 目录下;公钥文件会自动生成,后缀为 .pub(即 dw-git-ed25519.pub)。

  • 如果不指定路径(仅写文件名),则会在当前目录生成;建议指定完整路径(如 ~/.ssh/自定义名称),方便管理。

执行过程

运行命令后,会提示设置密码(可留空):

Bash
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

完成后,~/.ssh/ 目录下会生成:

  • dw-git-ed25519(私钥)

  • dw-git-ed25519.pub(公钥)

配置 SSH 识别自定义密钥(可选)

如果需要让 SSH 自动使用这个密钥(而非默认的 id_ed25519),可以修改 ~/.ssh/config 文件:

Plain

Host dw-git.github.com # 实际 Git 服务器地址
IdentityFile ~/.ssh/dw-git-ed25519  # 指定自定义私钥路径

这样,克隆或推送时使用 dw-git 作为主机名即可自动匹配密钥:

Bash
git clone git@dw-git:用户名/仓库名.git

通过 -f 参数即可灵活指定密钥文件名,避免覆盖默认密钥,同时便于区分不同用途的 SSH 密钥。

添加权限

chmod 600 ~/.ssh/id_rsa # 替换为你的私钥文件名

常用问题

之前有过失败记录

Bash
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:XXxXXXAOOAOAOAOOAOAOAOO
Please contact your system administrator.
Add correct host key in /Users/diaowen/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/diaowen/.ssh/known_hosts:3
Host key for dw.github.com has changed and you have requested strict checking.
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

此时只需要去删除或注释之前的记录

Bash
vi .ssh/known_hosts

找到对应的记录#注释掉就可以

初始 git clone 仓库如果出现文件路径过长问题

这个问题的根源在于 Windows 系统的路径长度限制 与 Git 仓库中常见的深层目录结构发生冲突。

Windows 有一个默认规则:文件的完整路径(从盘符开始到文件名结束)不能超过 260 个字符。

而很多项目(尤其是 Java、C# 等后端项目)习惯采用多层目录组织代码,加上 Git 仓库本身的路径,很容易超过这个限制。

此时 Git 就会"卡壳",因为 Windows 不允许它创建路径过长的文件。

注意

这是 Windows 系统的限制,在 macOS 或 Linux 上基本不会遇到。

方法一、启用 Git 长路径支持(推荐)

打开 Git Bash 或命令提示符,执行以下命令:

bash
git config --global core.longpaths true

这条命令会告诉 Git 忽略 Windows 的 260 字符限制,允许处理更长的路径。

方法二、启用 Windows 长路径支持

从 Windows 10 版本 1607 开始,微软允许用户解除路径长度限制:

  1. Win + R 打开运行对话框
  2. 输入 gpedit.msc 打开组策略编辑器
  3. 依次展开:计算机配置 → 管理模板 → 系统 → 文件系统
  4. 找到 "启用 Win32 长路径" 选项
  5. 双击打开,选择 "已启用",然后点击 "确定"
  6. 重启计算机使设置生效

提示

如果你的 Windows 版本没有 gpedit.msc(家庭版通常没有),可以通过修改注册表实现:

  1. Win + R,输入 regedit 打开注册表编辑器
  2. 导航到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
  3. 找到或创建 LongPathsEnabled 项(DWORD 32 位值)
  4. 将其值设置为 1
  5. 重启计算机

方法三、缩短克隆路径

如果上述方法不可行,可以尝试将仓库克隆到更短的路径:

bash
# 不推荐:路径过长
git clone https://github.com/username/repo.git C:\Users\YourName\Documents\Projects\MyLongProjectName\repo

# 推荐:使用更短的路径
git clone https://github.com/username/repo.git C:\repo

验证是否生效

配置完成后,重新执行 Git 操作(如 git clonegit pull),验证配置:

bash
# 验证 Git 配置
git config --get core.longpaths

如果返回 true,说明配置成功。如果不再报错,说明问题已解决。

注意事项

无论是配置 Git 还是修改注册表,请务必以管理员身份运行终端或编辑器,否则设置可能不生效。

此方法对绝大多数情况有效,但如果路径长度超过 Windows 的终极上限 32767 个字符(极少见),仍需缩短路径,例如将仓库克隆到根目录(如 D:\repo\)。

如果项目中有 Windows 用户,建议在 README 中说明需执行 git config --global core.longpaths true,避免因路径问题影响协作。

参考资料

调问-专业的开源问卷表单系统