目录
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
先理解一个核心概念:
本地上传 GitHub 本质是两件事:
-
本地用 Git 记录版本(add/commit)。
-
把本地版本推送到远程仓库(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 未生效。
处理:
-
执行 git --version 检查。
-
重启 VS Code。
-
确认存在 C:\Program Files\Git\cmd\git.exe。
-
将 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 ... 拒绝访问
原因:当前终端不是管理员权限,无法修改系统服务。
处理方式:
-
使用管理员 PowerShell 启动 ssh-agent。
-
或跳过 ssh-agent,直接使用私钥文件也可正常推送。
2) 报错:密钥无效。必须提供 OpenSSH 公钥格式
原因:公钥粘贴时被改动(换行、空格、手动输入错误)。
处理:
-
不手敲,始终从 id_ed25519.pub 原样复制整行。
-
可先本地校验:
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)是否匹配当前配置。