VS Code 上传 GitHub 全流程(Windows 环境):HTTP 与 SSH 两种方案(含常见报错排查)

目录

一、写在前面:适用场景与环境

二、一次性准备(同一台电脑通常只做一次)

1) 安装并验证 Git 安装并验证 Git)

2) 配置提交身份 配置提交身份)

3) 生成 SSH 密钥(SSH方法需要执行,若已有可跳过) 生成 SSH 密钥(SSH方法需要执行,若已有可跳过))

4) 复制公钥并添加到 GitHub 复制公钥并添加到 GitHub)

5) 测试 SSH 连接 测试 SSH 连接)

[三、方案 A:HTTP 上传流程(上手快)](#三、方案 A:HTTP 上传流程(上手快))

1) 新项目首次上传(HTTP) 新项目首次上传(HTTP))

2) 日常更新上传(HTTP) 日常更新上传(HTTP))

[四、方案 A 常见问题(HTTP)](#四、方案 A 常见问题(HTTP))

1) 报错:git 无法识别为 cmdlet 报错:git 无法识别为 cmdlet)

2) 报错:[rejected] main -> main (non-fast-forward) 报错:[rejected] main -> main (non-fast-forward))

3) 报错:Recv failure: Connection was reset 报错:Recv failure: Connection was reset)

[五、方案 B:SSH 上传流程(更稳定,推荐长期使用)](#五、方案 B:SSH 上传流程(更稳定,推荐长期使用))

1) 一次性配置 SSH Key 一次性配置 SSH Key)

2) 把远程地址从 HTTP 改为 SSH 把远程地址从 HTTP 改为 SSH)

3) 推送代码 推送代码)

4) 指令总结 指令总结)

[六、方案 B 常见问题(SSH)](#六、方案 B 常见问题(SSH))

1) 报错:Set-Service ssh-agent ... 拒绝访问 报错:Set-Service ssh-agent ... 拒绝访问)

2) 报错:密钥无效。必须提供 OpenSSH 公钥格式 报错:密钥无效。必须提供 OpenSSH 公钥格式)

3) 报错:remote origin already exists 报错:remote origin already exists)

[七、HTTP 与 SSH 如何选择](#七、HTTP 与 SSH 如何选择)

八、可长期复用的最小命令模板


一、写在前面:适用场景与环境

本文面向第一次接触 Git/GitHub 的初学者,按"可直接照做"的方式整理。

适用环境如下:

  • 操作系统:Windows

  • 终端:VS Code 内置 PowerShell

  • 目标:把本地工程持续上传到 GitHub

  • 本地工程目录示例:C:\GitHub_Project\Workspace\TDDB_Controlcore49_V1.0

  • 远程仓库示例:https://github.com/YW-LINK/TEST_1.git

先理解一个核心概念:

本地上传 GitHub 本质是两件事:

  1. 本地用 Git 记录版本(add/commit)。

  2. 把本地版本推送到远程仓库(push)。

HTTP 和 SSH 的区别,只在"本地如何连接 GitHub"。

可以把 Git 理解为"本地版本管理器",把 GitHub 理解为"云端版本仓库"。本教程就是把两者打通,并形成日常可复用流程。


二、一次性准备(同一台电脑通常只做一次)

1) 安装并验证 Git

cs 复制代码
git --version

若报错 git 无法识别,说明 Git 未装好或 PATH 未生效。

可先重启 VS Code;仍失败则确认存在 C:\Program Files\Git\cmd\git.exe,并将 C:\Program Files\Git\cmd 加入系统 Path。

2) 配置提交身份

cs 复制代码
git config --global user.name "YW-LINK"
git config --global user.email "wyw15952804625@gmail.com"

这两项会写入每次提交的作者信息。

3) 生成 SSH 密钥(SSH方法需要执行,若已有可跳过)

cs 复制代码
ssh-keygen -t ed25519 -C "wyw15952804625@gmail.com"

一路回车即可,默认会生成:

  • 私钥:~/.ssh/id_ed25519(只保存在本机,不能泄露)

  • 公钥:~/.ssh/id_ed25519.pub(可上传到 GitHub)

4) 复制公钥并添加到 GitHub

cs 复制代码
Set-Clipboard -Value ((Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub -Raw).Trim())

打开 GitHub:Settings -> SSH and GPG keys -> New SSH key,粘贴公钥保存。

5) 测试 SSH 连接

cs 复制代码
ssh -T git@github.com

出现认证成功提示,即通道已打通。


三、方案 A:HTTP 上传流程(上手快)

1) 新项目首次上传(HTTP)

在工程目录执行:

cs 复制代码
git init
git remote add origin https://github.com/YW-LINK/TEST_1.git(根据不同仓库修改)
git add .
git commit -m "first commit"
git branch -M main
git push -u origin main

命令作用简述:

  • git init:初始化本地仓库。

  • git remote add origin ...:绑定远程仓库地址。

  • git add .:把当前改动加入暂存区。

  • git commit -m:生成一次本地提交。

  • git branch -M main:统一主分支名。

  • git push -u origin main:首次推送并绑定上游分支。

2) 日常更新上传(HTTP)

cs 复制代码
git add -A
git commit -m "feat: update"
git pull --rebase origin main
git push

pull --rebase 可以显著减少推送冲突。


四、方案 A 常见问题(HTTP)

1) 报错:git 无法识别为 cmdlet

典型信息:

git : 无法将"git"项识别为 cmdlet...

原因:Git 未安装,或 PATH 未生效。

处理:

  1. 执行 git --version 检查。

  2. 重启 VS Code。

  3. 确认存在 C:\Program Files\Git\cmd\git.exe。

  4. 将 C:\Program Files\Git\cmd 加入系统 Path。

2) 报错:[rejected] main -> main (non-fast-forward)

原因:远程 main 比本地更新。

处理:

cs 复制代码
git pull --rebase origin main
git push

3) 报错:Recv failure: Connection was reset

典型信息:

fatal: unable to access 'https://github.com/...': Recv failure: Connection was reset

原因:HTTPS 链路不稳定、网络波动或代理干扰。

处理:

cs 复制代码
git config --global --unset http.proxy
git config --global --unset https.proxy
git pull --rebase origin main

若仍不稳定,建议切换 SSH 方案。


五、方案 B:SSH 上传流程(更稳定,推荐长期使用)

1) 一次性配置 SSH Key

cs 复制代码
ssh-keygen -t ed25519 -C "wyw15952804625@gmail.com"
Set-Clipboard -Value ((Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub -Raw).Trim())

然后在 GitHub 页面操作:

Settings -> SSH and GPG keys -> New SSH key粘贴公钥并保存。

连接测试:

cs 复制代码
ssh -T git@github.com

2) 把远程地址从 HTTP 改为 SSH

cs 复制代码
git remote set-url origin git@github.com:YW-LINK/TEST_1.git

3) 推送代码

先将仓库中的内容拉取到本地合并,再提交仓库:

cs 复制代码
git pull --rebase origin main
git push -u origin main

pull --rebase 是先把远程最新提交"接到你前面",能大幅减少推送冲突。

首次 -u 绑定后,后续可直接 git push。

或者也可以强制用本地直接覆盖远程:

cpp 复制代码
git push -u origin main --force

这行指令是用本地直接覆盖远程,会改写远程历史,谨慎使用。

4) 指令总结

cs 复制代码
# 1. 确认 Git 可用
git --version
 
# 2. 配置提交身份(只需一次)
git config --global user.name "YW-LINK"
git config --global user.email "wyw15952804625@gmail.com"
 
# 3. 生成 SSH key(若已有可跳过)
ssh-keygen -t ed25519 -C "wyw15952804625@gmail.com"
 
# 4. 复制公钥到剪贴板(粘贴到 GitHub -> Settings -> SSH and GPG keys)
Set-Clipboard -Value ((Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub -Raw).Trim())
 
# 5. 测试 SSH 是否打通
ssh -T git@github.com

作用说明:

建立"长期免密码通道"。后续 push/pull 都会更稳定,不用反复输账号口令

cs 复制代码
git init
git remote add origin git@github.com:YW-LINK/TEST_1.git(根据不同仓库修改)
git add .
git commit -m "first commit"
git branch -M main
git push -u origin main

作用说明:

  • git init:初始化本地仓库。

  • git remote add origin ...:绑定远程仓库地址。

  • git add .:把当前改动加入暂存区。

  • git commit -m:生成一次本地提交。

  • git branch -M main:统一主分支名。

  • git push -u origin main:首次推送并绑定上游分支。


六、方案 B 常见问题(SSH)

1) 报错:Set-Service ssh-agent ... 拒绝访问

原因:当前终端不是管理员权限,无法修改系统服务。

处理方式:

  1. 使用管理员 PowerShell 启动 ssh-agent。

  2. 或跳过 ssh-agent,直接使用私钥文件也可正常推送。

2) 报错:密钥无效。必须提供 OpenSSH 公钥格式

原因:公钥粘贴时被改动(换行、空格、手动输入错误)。

处理:

  1. 不手敲,始终从 id_ed25519.pub 原样复制整行。

  2. 可先本地校验:

cs 复制代码
$pub = (Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub -Raw).Trim()
$pub -match '^ssh-ed25519 [A-Za-z0-9+/=]+(?: .*)?$'

返回 True 再提交到 GitHub。

3) 报错:remote origin already exists

原因:远程地址已经配置过。

处理:

cs 复制代码
git remote set-url origin git@github.com:YW-LINK/TEST_1.git

七、HTTP 与 SSH 如何选择

  • 临时使用、快速试跑:HTTP 上手快。

  • 长期开发、频繁 push/pull:SSH 更稳,推荐作为默认方案。


八、可长期复用的最小命令模板

cs 复制代码
git add -A
git commit -m "chore: update"
git pull --rebase origin main
git push

这 4 条命令可覆盖绝大多数日常上传场景。若出现连接类错误,优先检查网络与远程地址协议(HTTP/SSH)是否匹配当前配置。

相关推荐
一只游鱼2 小时前
如何让本地的敏感配置文件不上传到git仓库
git·elasticsearch
航Hang*13 小时前
VMware vSphere 云平台运维与管理基础——第2章(扩展):VMware ESXi 5.5 安装、配置与运维
运维·服务器·github·系统安全·虚拟化
渣渣馬15 小时前
shell的if多条件
git·ssh
zh_xuan15 小时前
Visual Studio 上传工程到github
ide·git·github·visual studio
CoovallyAIHub16 小时前
视频理解新范式:Agent不再被动看视频,LensWalk让它自己决定看哪里
算法·架构·github
CoovallyAIHub16 小时前
斯坦福丨AirVLA:将地面机械臂模型迁移至无人机实现空中抓取,成功率从23%提升至50%
算法·架构·github
AntoineGriezmann17 小时前
Git 学习笔记
git
无限进步_17 小时前
【C++】只出现一次的数字 II:位运算的三种解法深度解析
数据结构·c++·ide·windows·git·算法·leetcode
vortex517 小时前
构建可审计、可分层、可扩展的SSH身份管理体系
网络·ssh·php