本地仓库首次推送的 4 种标准姿势(HTTP / SSH × Gitee / GitHub)

适用系统: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 仓库名:aasad

  • GitHub 仓库名:aasad

  • 你的用户名:zhangchengyuan

1. 路线 A:HTTP 推送 → Gitee(私人令牌版)

1.1 远端先建空仓库

  1. 浏览器打开 https://gitee.com

  2. 右上角「+」→ 新建仓库 → 输入仓库名 aasad不要勾选任何初始化选项 (README/.gitignore/LICENSE 都留空)→ 创建

    创建后页面会出现两行地址,选 HTTPS 那行:https://gitee.com/zhangchengaaa/aasad.git

1.2 本地绑定远端

bash 复制代码
cd /d/test2git
git remote add origin https://gitee.com/zhangchengaaa/aasad.git

1.3 生成「私人令牌」(Personal Access Token)

  1. 右上角头像 → 设置 → 安全设置 → 私人令牌 → 生成新令牌

  2. 仅勾选 repo (仓库读写)即可 → 提交 → 立刻复制令牌字符串(刷新后永不再显示)

1.4 清除可能存在的旧凭据(首次可跳过)

系统 操作
Windows 控制面板 → 用户帐户 → 凭据管理器 → Windows 凭据 → 找到 git:https://gitee.com → 删除
macOS git credential-cache exitsecurity 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.git

2.3 生成 Classic Personal Access Token

  1. 右上角头像 → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token

  2. 勾选权限:repo 整组全打钩 → Generate → 立刻复制

2.4 清旧凭据(同上)

2.5 推送

复制代码
git push -u origin master

Username: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.git

3.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.git

4.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` 能看到至少一次提交

  • \] HTTP 路线:令牌没过期、用户名不是邮箱

  • \] 远端仓库是"空"的,或你已 `git pull --rebase` 合并过历史

相关推荐
测试人社区-小明2 小时前
测试金字塔的演进:如何构建健康的自动化测试套件
python·测试工具·数据挖掘·pycharm·机器人·github·量子计算
阿里嘎多学长2 小时前
2025-12-11 GitHub 热点项目精选
开发语言·程序员·github·代码托管
vortex52 小时前
SSH 命令从新手入门到安全运维
运维·安全·ssh
白宇横流学长2 小时前
基于SSH实现的会议室管理系统
运维·ssh
学IT的周星星3 小时前
Git 推送远程仓库全攻略:GitHub + Gitee 的 HTTP 和 SSH 四种方式详细对比与实操步骤(2025最新版)
git·gitee·github
是毛毛吧12 小时前
边打游戏边学Python的5个开源项目
python·开源·github·开源软件·pygame
无限进步_16 小时前
深入理解 C/C++ 内存管理:从内存布局到动态分配
c语言·c++·windows·git·算法·github·visual studio
java程序员一位20 小时前
从公司项目复制迁移到个人仓库
github
Mr卜颛21 小时前
【Git】TortoiseGit(小乌龟)配置SSH和使用;Fork设置ssh key
git·ssh