适用系统:Windows 10/11(Git Bash)、macOS、Linux 全系列
前置条件:已安装 Git ≥ 2.30,本地至少有一次git commit
0.统一准备:先看自己走到哪一步
| 检查项 | 命令 | 期望结果 |
|---|---|---|
| 有没有提交 | git log --oneline | 能看到一行或多行提交 |
| 有没有远端 | git remote -v | 没有输出表示还没绑远端 |
| 协议偏好 | 自己决定 | 公司网络封 22 端口就选 HTTP;想一次性免密就选 SSH |
下文全部假设:
本地文件夹:
/d/test2git(Windows 路径写法)Gitee 仓库名:
aasadGitHub 仓库名:
aasad你的用户名:
zhangchengyuan
1. 路线 A:HTTP 推送 → Gitee(私人令牌版)
1.1 远端先建空仓库
浏览器打开 https://gitee.com
右上角「+」→ 新建仓库 → 输入仓库名
aasad→不要勾选任何初始化选项(README/.gitignore/LICENSE 都留空)→ 创建
创建后页面会出现两行地址,选 HTTPS 那行:https://gitee.com/zhangchengaaa/aasad.git
1.2 本地绑定远端
cd /d/test2git git remote add origin https://gitee.com/zhangchengaaa/aasad.git1.3 生成「私人令牌」(Personal Access Token)
右上角头像 → 设置 → 安全设置 → 私人令牌 → 生成新令牌
仅勾选repo(仓库读写)即可 → 提交 →立刻复制令牌字符串(刷新后永不再显示)
1.4 清除可能存在的旧凭据(首次可跳过)
| 系统 | 操作 |
|---|---|
| Windows | 控制面板 → 用户帐户 → 凭据管理器 → Windows 凭据 → 找到git:https://gitee.com→ 删除 |
| macOS | git credential-cache exit或security delete-internet-password -s gitee.com |
| Linux | git credential-cache exit或直接删文件~/.git-credentials |
1.5 第一次推送
git pull --rebase origin master git push -u origin master弹窗/终端提示:
Username:zhangchengyuan
Password:把 1.3 复制的令牌粘进去(不会显示字符,正常)
Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Writing objects: 100% (3/3), 218 bytes | 218.00 KiB/s, done. Branch 'master' set up to track remote 'master' from 'origin'.以后同一台机器再次 push 不会再问,Git 会自动把令牌存进系统钥匙链/凭据管理器。
2. 路线 B:HTTP 推送 → GitHub(Classic Token 版)
2.1 远端建空仓库
https://github.com/new
Repository name 填aasad→ 选 Private/Public 随意 →不要创建 README→ Create repository
页面出现:
https://github.com/zhangchengaaa/aasad.git
2.2 本地绑定
git remote add origin https://github.com/zhangchengyuan/aasad.git2.3 生成 Classic Personal Access Token
右上角头像 → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token
勾选权限:repo整组全打钩 → Generate →立刻复制
2.4 清旧凭据(同上)
2.5 推送
git push -u origin masterUsername:zhangchengyuan
Password:粘 token
成功同 1.5。
3. 路线 C:SSH 推送 → Gitee(永久免密)
3.1 一次性生成密钥(全局只要一次)
# 查看是否已存在 ls ~/.ssh/id_ed25519.pub # 没有就生成 ssh-keygen -t ed25519 -C "2037572328@qq.com" # 一路回车,密码短语可空默认得到:
私钥~/.ssh/id_ed25519
公钥~/.ssh/id_ed25519.pub
3.2 把公钥添加到 Gitee
cat ~/.ssh/id_ed25519.pub复制输出 → Gitee 头像 → 设置 → 安全设置 → SSH 公钥 → 添加标题(随意)→ 粘贴 → 确定
3.3 确认连通性
ssh -T git@gitee.com首次提示:
The authenticity of host 'gitee.com (180.76.198.225)' can't be established. ED25519 key fingerprint is SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96PAUCoV88. Are you sure you want to continue connecting (yes/no/[fingerprint])?输入yes回车,看到:
Hi zhangchengyuan! You've successfully authenticated, but Gitee does not provide shell access.
表示成功。
3.4 本地改远程地址为 SSH 格式
git remote set-url origin git@gitee.com:zhangchengaaa/aasad.git3.5 推送
git push -u origin master不再问密码,直接完成。
4. 路线 D:SSH 推送 → GitHub(永久免密)
4.1 密钥生成
同 3.1(可复用同一套密钥)
4.2 把公钥添加到 GitHub
复制id_ed25519.pub内容 → GitHub 头像 → Settings → SSH and GPG keys → New SSH key → 贴入 → Add SSH key
4.3 确认连通性
ssh -T git@github.com输入yes后看到:
Hi zhangchengyuan! You've successfully authenticated, but GitHub does not provide shell access.
4.4 本地改远程地址
git remote set-url origin git@github.com:zhangchengyuan/aasad.git4.5 推送
git push -u origin master一样不再输密码。
5. 四条路线一键对照表
| 步骤 \ 路线 | A. HTTP Gitee | B. HTTP GitHub | C. SSH Gitee | D. SSH GitHub |
|---|---|---|---|---|
| 远端空仓库 | 不要初始化 | 不要初始化 | 不要初始化 | 不要初始化 |
| 本地绑定 | git remote add origin https://... | 同左 | git remote set-url origin git@gitee.com:用户/仓库.git | git@github.com:用户/仓库.git |
| 认证材料 | 私人令牌 | Classic PAT | SSH 公钥 | SSH 公钥 |
| 是否永久免密 | ✅(凭据管理器) | ✅(凭据管理器) | ✅ | ✅ |
| 端口被墙 | 80/443 通行 | 80/443 通行 | 22(可改 443) | 22(可改 443) |
6. 首次推送失败高频报错对照
| 报错原文 | 含义 | 一句话解决 |
|---|---|---|
Incorrect username or password | 令牌填错或旧密码残留 | 删凭据重新输最新令牌 |
The token username invalid | Gitee 用邮箱当用户名 | 用户名栏填 Gitee 登录名,不是邮箱 |
remote contains work you do not have locally | 远端有文件你没拉 | git pull --rebase origin master再 push |
fatal: 'orgin' does not appear to be a git repository | 手滑打错 remote 名 | 重新git remote set-url |
Permission denied (publickey) | SSH 公钥没对上 | 重新复制公钥;确认是git@地址不是https |
ssh: connect to host github.com port 22: Connection timed out | 公司封 22 | 在~/.ssh/config把 22 转发到 443(见下方附录) |
7. 附录:SSH 走 443 端口(被墙场景)
编辑~/.ssh/config(没有就新建):
Host github.com HostName ssh.github.com Port 443 User git Host gitee.com HostName gitee.com Port 443 User git保存后ssh -T git@github.com/ssh -T git@gitee.com即可走 443,几乎不会被防火墙拦。
8. 终极大检查清单(push 前打钩)
[ ]
git log能看到至少一次提交[ ]
git remote -v显示的是你想要的那条地址[ ] HTTP 路线:令牌没过期、用户名不是邮箱
[ ] SSH 路线:
ssh -T能看到 “Hi xxx! successfully authenticated”[ ] 远端仓库是“空”的,或你已
git pull --rebase合并过历史
把这份长文存进浏览器收藏夹,以后无论换电脑、换平台、换网络,按图索骥,5 分钟完成首次推送。祝 push 顺利!