Git 10 ,使用 SSH 提升 Git 操作速度实践指南( Git 拉取推送响应慢 )

目录

前言
一、背景与问题分析
[1.1 Gitee 与项目仓库](#1.1 Gitee 与项目仓库)
[1.2 公钥与仓库的关系](#1.2 公钥与仓库的关系)
[1.3 当前问题表现](#1.3 当前问题表现)
二、检测与准备工作
[2.1 检查当前远程仓库协议](#2.1 检查当前远程仓库协议)
[2.2 检查本地 SSH 公钥](#2.2 检查本地 SSH 公钥)
[2.3 添加公钥到 Gitee](#2.3 添加公钥到 Gitee)
[2.4 配置 .ssh/config 文件(Windows 示例)](#2.4 配置 .ssh/config 文件(Windows 示例))
三、切换地址与验证
[3.1 修改项目远程地址为 SSH](#3.1 修改项目远程地址为 SSH)
[3.2 测试 SSH 连接](#3.2 测试 SSH 连接)
[3.3 测试 Git 操作](#3.3 测试 Git 操作)
四、注意事项与最佳实践
五、本文总结

前言

在日常开发中,我们经常需要从远程代码仓库拉取或推送代码 。在国内,Gitee 是常用的代码托管平台之一 。很多开发者在使用 VS Code 或命令行执行 git pullgit push 时,会遇到速度慢 或者需要频繁输入账号密码 的问题。本文将详细讲解如何通过配置 SSH 公钥 ,使本地项目使用 SSH 协议访问 Gitee 仓库 ,从而提高 Git 操作效率 ,并介绍相关注意事项和配置方法

一、背景与问题分析

1.1 Gitee 与项目仓库

Gitee 是国内领先的 Git 代码托管平台,类似 GitHub。每个开发者的账号下可以有多个仓库(Repository),每个仓库用于存放一个或多个项目的代码。

在 Git 操作中,远程仓库地址决定了本地如何与远程仓库通信。Gitee 支持两种协议访问仓库:

  1. HTTPS 协议

    • 格式示例:https://gitee.com/用户名/仓库名.git

    • 每次操作都需要通过账号密码或 Token 验证。

    • 数据传输需要进行 TLS 握手和加密,速度相对较慢,尤其是在国内网络环境下。

  2. SSH 协议

    • 格式示例:git@gitee.com:用户名/仓库名.git

    • 使用 SSH 公钥进行认证,无需每次输入密码。

    • 传输稳定、速度快,并可同时支持多仓库操作。

1.2 公钥与仓库的关系

SSH 公钥是本地计算机身份的凭证,与远程 Gitee 账号绑定:

  • 私钥(id_rsa :保存在本地 .ssh 文件夹中,不可泄露。

  • 公钥(id_rsa.pub:添加到 Gitee 账号,授权本地私钥访问你的仓库。

注意:一把公钥可以访问同一账号下的所有仓库,不必为每个项目单独生成公钥。多把公钥用于多账号或多设备场景。

1.3 当前问题表现

在使用 VS Code 或命令行执行 Git 操作时,开发者可能遇到以下问题:

  • git pullgit push 非常慢,甚至卡顿数分钟。

  • 频繁要求输入 Gitee 账号和密码。

  • 尝试使用 SSH 时,提示 Permission denied (publickey)

这些问题通常与使用 HTTPS 协议 或 SSH 公钥未正确配置有关。


二、检测与准备工作

2.1 检查当前远程仓库协议

在项目根目录打开终端,执行:

git remote -v

输出示例:

origin https://gitee.com/njust_365/info-manage.git (fetch)

origin https://gitee.com/njust_365/info-manage.git (push)

说明当前远程地址使用的是 HTTPS 协议,这是导致速度慢和频繁验证的根本原因。

2.2 检查本地 SSH 公钥

在 PowerShell 或命令行中执行:

ls ~/.ssh

确认存在:

  • 私钥:id_rsa

  • 公钥:id_rsa.pub

  • 配置文件:config

  • 已知主机文件:known_hosts

查看公钥内容:

cat ~/.ssh/id_rsa.pub

完整公钥从 开头 ssh-rsa结尾邮箱 都需要复制到 Gitee。

2.3 添加公钥到 Gitee

  1. 登录 Gitee → 个人设置 → SSH 公钥

  2. 点击 "添加公钥" → 填写标题(可随意)

  3. 粘贴完整公钥内容(ssh-rsa ... 邮箱

  4. 保存

添加后,这把公钥对应的私钥即可访问你账号下的所有仓库。

2.4 配置 .ssh/config 文件(Windows 示例)

编辑文件 C:\Users\用户名\.ssh\config,在末尾添加:

# Gitee 配置
Host gitee.com
HostName gitee.com
User git
IdentityFile C:/Users/lee/.ssh/id_rsa

说明:

  1. Host gitee.com:匹配远程仓库地址。

  2. User git:固定值。

  3. IdentityFile:本地私钥完整路径。

  4. 使用 / 或双反斜杠 \\,避免 Windows 路径识别问题。

当然,可以使用以下命令打开相应路径的文件

C:\Users\lee\.ssh\config


三、切换地址与验证

3.1 修改项目远程地址为 SSH

在项目根目录执行:

git remote set-url origin 你的SSH路径

路径在这里复制:

验证修改是否成功:

git remote -v

输出应为:

origin git@gitee.com:njust_365/info-manage.git (fetch)

origin git@gitee.com:njust_365/info-manage.git (push)

3.2 测试 SSH 连接

执行:

ssh -T git@gitee.com

第一次连接可能提示是否信任:

The authenticity of host 'gitee.com (IP地址)' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入 yes 即可,SSH 会将 Gitee 主机加入 known_hosts 文件。

  • 成功输出:

Hi njust_365! You've successfully authenticated, but GITEE.COM does not provide shell access.

表示 SSH 配置正确,本地可以无密码访问 Gitee。

3.3 测试 Git 操作

重新执行测试:

git add . 添加本地

git commit -m "备注" 提交备注

git pull 拉取

git status 检查

git push 推送

  1. 使用 SSH 协议后,速度明显提升(几秒完成)

  2. 不再需要输入账号和密码

  3. 支持多仓库、多项目操作,保持稳定


四、注意事项与最佳实践

  1. **公钥管理:**一把公钥可访问同一账号下所有仓库。多账号或多设备建议生成不同公钥,并在 .ssh/config 中区分 Host。

  2. **路径问题:**Windows 下 SSH 配置推荐使用完整路径,如 C:/Users/lee/.ssh/id_rsa。另外,避免使用 ~\ 导致找不到私钥。

  3. **权限问题:**私钥文件必须可读,公钥必须完整复制到 Gitee

  4. **首次 SSH 连接:**出现 can't be established 提示,输入 yes 信任即可,之后不会再提示

  5. 调试:ssh -vT git@gitee.com 可显示详细日志,便于排查 Permission denied 问题


五、本文总结

  1. HTTPS 与 SSH 区别

    • HTTPS 需要账号验证,速度慢

    • SSH 使用公钥认证,无需密码,速度快且稳定

  2. SSH 公钥管理

    • 私钥保存在本地 .ssh/id_rsa

    • 公钥添加到 Gitee 账号

    • 多项目可共用同一把公钥

  3. 配置流程

    • 检查远程仓库协议

    • 确认本地公钥存在

    • 添加公钥到 Gitee

    • 配置 .ssh/config 指定私钥

    • 修改项目远程地址为 SSH

    • 测试 SSH 连接和 Git 操作

  4. 注意事项

    • 路径问题、权限问题、首次连接提示

    • 多账号场景需额外公钥管理

通过以上步骤,可以保证 VS Code 或命令行在 Gitee 上的 Git 操作 快速、稳定、安全,解决 HTTPS 协议导致的慢速问题,同时避免频繁输入账号密码,提高开发效率。

如果上述解决方案,仍然没有效果,需要考虑 网络带宽问题。

相关推荐
Klaus_Wei23 分钟前
git 高级命令模式典型应用--“同步云端 + 清理垃圾分支”的一键命令
git·git高级用法·git同步云端·git清理垃圾分支
漂流瓶jz1 小时前
Webpack中各种devtool配置的含义与SourceMap生成逻辑
前端·javascript·webpack
前端架构师-老李1 小时前
React 中 useCallback 的基本使用和原理解析
前端·react.js·前端框架
妙娲种子1 小时前
配置git/创建第一个智能相册保存快照
git
what_20182 小时前
git一个账号在两台电脑登录 出现不同用户名
git
困鲲鲲2 小时前
ROS2系列 (13) : 常用Git指令入门(本地Git)
git·ros2
木易 士心2 小时前
CSS 中 `data-status` 的使用详解
前端·css
明月与玄武2 小时前
前端缓存战争:回车与刷新按钮的终极对决!
前端·缓存·回车 vs 点击刷新
牧马少女2 小时前
css 画一个圆角渐变色边框
前端·css
zy happy2 小时前
RuoyiApp 在vuex,state存储nickname vue2
前端·javascript·小程序·uni-app·vue·ruoyi