欢迎光临
我们一直在努力

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

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

目 录

  • 将本地新建仓库与 GitHub 远程仓库关联起来(SSH)
    • 1)关联一个空仓库
    • 2)关联一个非空仓库

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

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

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

1)关联一个空仓库

  • 在 GitHub 上创建一个新仓库

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

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

      在这里插入图片描述

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

      在这里插入图片描述

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

      在这里插入图片描述

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

      在这里插入图片描述

  • 将本地仓库与 GitHub 远程仓库关联

    • 回到本地 Git 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

      在这里插入图片描述

  • 推送本地代码到 GitHub

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

    git branch -M main

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

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

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

    在这里插入图片描述

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

    按照下一步操作来即可 →

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

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

      ls -al ~/.ssh

      如果回复是这样的:

      在这里插入图片描述

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

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

      ssh-keygen -t ed25519 -C "xxxxxxxxxx@qq.com"

      然后用指令查询公钥:

      $ cat ~/.ssh/id_ed25519.pub

      在这里插入图片描述

    • 第三步:复制公钥,并将其添加到 GitHub

      • 打开 https://github.com/settings/keys(或点头像选择 【settings】→【SSH and GPG keys】→【New SSH key】)

        在这里插入图片描述

      • 添加完之后就会显示

        在这里插入图片描述

    • 第四步:测试 SSH 连接

      ssh -T git@github.com

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

      Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.

    • 有关是否需要 “启动 ssh-agent 并添加私钥” ,可以按需执行

  • 再次推送本地代码到 GitHub

    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 上就能看到推送了

    在这里插入图片描述

  • 后续推送只需简单命令

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

  • 2)关联一个非空仓库

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

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

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

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

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

    完整的 git 流程是:

    # 初始化 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


    赞(0)
    未经允许不得转载:171主机测评 » Git 和 GitHub:(七)将本地新建仓库与 GitHub 远程仓库关联起来(SSH)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址