news 2026/4/15 5:48:47

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
本地仓库首次推送的 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 本地绑定远端

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→ 删除
macOSgit credential-cache exitsecurity delete-internet-password -s gitee.com
Linuxgit 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 GiteeB. HTTP GitHubC. SSH GiteeD. SSH GitHub
远端空仓库不要初始化不要初始化不要初始化不要初始化
本地绑定git remote add origin https://...同左git remote set-url origin git@gitee.com:用户/仓库.gitgit@github.com:用户/仓库.git
认证材料私人令牌Classic PATSSH 公钥SSH 公钥
是否永久免密✅(凭据管理器)✅(凭据管理器)
端口被墙80/443 通行80/443 通行22(可改 443)22(可改 443)

6. 首次推送失败高频报错对照

报错原文含义一句话解决
Incorrect username or password令牌填错或旧密码残留删凭据重新输最新令牌
The token username invalidGitee 用邮箱当用户名用户名栏填 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 顺利!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!