Git 和 GitHub:(七)将本地新建仓库与 GitHub 远程仓库关联起来(SSH)

上一篇 下一篇
在本地新建仓库并进行一次提交

目 录


将本地新建仓库与 GitHub 远程仓库关联起来(SSH)

场景:已经在本地创建了一个 Git 仓库,并进行了初始提交【实现上一篇的内容】,但是还没有关联 GitHub 仓库

之所以使用 SSH,主要是企业再用 GitLab 管理代码的时候,基本都是用 SSH 协议

1)关联一个空仓库

  1. 在 GitHub 上创建一个新仓库

    • 登录 GitHub 账号:https://github.com,进入首页

    • 点击右上角 + 号,选择 【New repository】

    • 填写仓库名称,其他选项可保持默认(本地仓库中有 README 了, "Add README" 就不要选 ON )

    • 点击 【Create repository】,然后会看到类似如下的页面,其中包含远程仓库地址(HTTPS 或 SSH 格式,默认展示 HTTPS 的)

    • 如果上一步点完【Create repository】之后,没有跳到 URL 界面(首次在github上创建才会自动跳到),点击界面中【code】

  2. 将本地仓库与 GitHub 远程仓库关联

    • 回到本地 Git Bash,执行以下两个命令其中之一(替换为实际仓库地址):

      bash 复制代码
      # 添加远程仓库地址(origin 是默认的远程仓库别名)(HTTPS格式)
      git remote add origin https://github.com/Mr-L-Xiao/my-project.git
      
      # 添加远程仓库地址(origin 是默认的远程仓库别名)(SSH格式,推荐长期使用)
      git remote add origin git@github.com:Mr-L-Xiao/my-project.git
  3. 推送本地代码到 GitHub

    GitHub 从 2020 年起将默认分支名称从 master 更改为 main,如果你的本地默认分支名是 master,那么就需要先重命名分支:

    bash 复制代码
    git branch -M main

    然后再推送本地代码到 main 分支

    bash 复制代码
    # 推送到 main 分支(GitHub 默认主分支通常是 main)
    git push -u origin main

    如果使用的是 SSH 格式的 GitHub 远程仓库地址,首次连接时会有安全验证提示,并且要求你添加 SSH 密钥:

    上述内容表示:Git 无法通过 SSH 向 GitHub 认证你的身份,即 SSH 密钥未正确配置或未添加到 GitHub 账号

    按照下一步操作来即可 →

  4. (补充操作)添加 SSH 密钥到 GitHub 账号,完成验证

    • 第一步:检查是否已有 SSH 密钥

      bash 复制代码
      ls -al ~/.ssh

      如果回复是这样的:

      说明本地还没有生成 SSH 密钥对,当前目录中只有 known_hosts 文件,这是之前输入 yes 确认 GitHub 主机指纹时自动生成的,但缺少关键的两个文件:① 私钥文件:如 id_rsaid_ed25519;② 公钥文件:如 id_rsa.pubid_ed25519.pub

    • 第二步:使用下方指令生成新的 SSH 密钥对(推荐 ED25519),例如

      bash 复制代码
      ssh-keygen -t ed25519 -C "xxxxxxxxxx@qq.com"

      然后用指令查询公钥:

      bash 复制代码
      $ cat ~/.ssh/id_ed25519.pub
    • 第三步:复制公钥,并将其添加到 GitHub

    • 第四步:测试 SSH 连接

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

      如果回复下列内容,则表示 SSH 配置成功:

      复制代码
      Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.
    • 有关是否需要 "启动 ssh-agent 并添加私钥" ,可以按需执行

  5. 再次推送本地代码到 GitHub

    bash 复制代码
    git push -u origin main

    就会看到推送成功

    输出解读(参考参考就行):

    复制代码
    Enumerating objects: 3, done.          			← 扫描要推送的文件(共3个对象)
    Counting objects: 100% (3/3), done.    			← 计算进度完成
    Writing objects: 100% (3/3), ...       			← 数据写入完成
    Total 3 (delta 0), reused 0 ...        			← 总共传输3个对象
    To github.com:Mr-L-Xiao/Test-Git-GitHub-One.git
     * [new branch]      main -> main      			← 在GitHub创建了新分支 main
    branch 'main' set up to track 'origin/main'. 	← 本地main分支已关联远程

    然后在 GitHub 上就能看到推送了

  6. 后续推送只需简单命令

    bash 复制代码
    git add .
    git commit -m "更新说明"
    git push  # 不需要再加 -u origin main

2)关联一个非空仓库

比如说在 Github 上创建仓库的时候,勾选了 README,这个仓库就不是空仓库

那么要在 git push -u origin main 这一步之前先拉取合并:

bash 复制代码
# 拉取远程内容,加上 --allow-unrelated-histories 因为两边历史无关
git pull origin main --allow-unrelated-histories
# 回车之后会弹出编辑窗口,一般直接默认,按ESC之后,输入:wq回车退出即可

# 解决可能的冲突(如果有)
# 然后再推送
git push -u origin main

然后内容就变成了本地仓库和远程仓库的合集。

完整的 git 流程是:

bash 复制代码
# 初始化 Git 仓库
git init

# 添加所有文件
git add .

# 提交
git commit -m "first commit"

# 设置分支名为 main(GitHub 新建仓库默认分支通常是 main)
git branch -M main

# 拉取远程内容,加上 --allow-unrelated-histories 因为两边历史无关
git pull origin main --allow-unrelated-histories

# 解决可能的冲突(如果有)
# 然后再推送
git push -u origin main

相关推荐
前端小卡拉1 小时前
DeepSeek 把 Agent Harness 开源了:Everything is a Plugin,一个手搓过 harness 的人怎么看
github
TunerT_TQ2 小时前
Microsoft 微软 Fluent UI 源码静态评测:从工程结构、测试线索到交付治理的完整解读
microsoft·开源·github
逛逛GitHub2 小时前
国产桌面端 Agent 进化了,支持定时任务、接入Obsidian、丰富SKill
github
子林super2 小时前
OpenCode的Harness机制与模块
github
fthux2 小时前
装闭 RenoPit 源码解析(12):从AI分析结果到React避坑报告
人工智能·ai·开源·github·open source·renopit
TunerT_TQ2 小时前
Microsoft 微软 AI-For-Beginners 静态评测:一套 AI 入门课程,为什么不能只按代码仓库来评价?
microsoft·开源·github
凯尔萨厮2 小时前
Git(学习笔记)
笔记·git·学习
u1301303 小时前
GitHub 热榜项目:日榜(2026-08-17)
github
问天_观心3 小时前
零基础在windows环境下的WSL使用llamafactory(一)
人工智能·windows·python·神经网络·语言模型·github·模型蒸馏
我一定会有钱5 小时前
打造完美工作流:Git 配置”一次推送,三端同步”(Gitee/GitCode/GitHub)
开发语言·windows·vscode·搜索引擎·gitlab·github·visual studio code