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_rsa 或 id_ed25519;② 公钥文件:如 id_rsa.pub 或 id_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

相关推荐
用户7273744138843 分钟前
版本锁定实战:从 `git tag` 到 `package-lock.json` 的完整闭环
github
暖心hebbie设计学习20 分钟前
GitHub 热榜周报(10.19)|5 个把 AI 装回本地的开源项目:多 agent 控制台、本地语音、节点式生成(含技术看点)
人工智能·github
用户别睡觉29 分钟前
从 0 到 1 开源:基于 FastAPI 和本地大模型打造一个提示词安全网关
github
mr_g38 分钟前
一个注解搞定 AGI,两个注解搞定 AMI —— SmartCall 让 Java 对接 Asterisk 简单到离谱
github
sbjdhjd3 小时前
从签名重放到 Agent Harness:一堂安全课程如何把前端逆向、MCP 与工程约束串起来
网络安全·ai·github·agent·webshell·mcp·harness
逛逛GitHub5 小时前
火了两周的 30 万 Star 逆向 GitHub 开源神器,网友都用它来干啥?
github
程序员差不多先生5 小时前
Anthropic 用 5 个月重写了 Git:当 AI Agent 把版本控制系统逼到墙角
人工智能·git·elasticsearch·deepseek v4 pro·kimi k3·glm 5.3·qwen3.7 max
程序员-Benothing6 小时前
SSH从入门到精通:密钥登录、config配置、跳板机
linux·运维·服务器·ssh
leo_厉锵6 小时前
GIT习题
git
wflynn6 小时前
GitHub 日榜趋势速报 | 2026-10-18
开源·github