将本地新建仓库与 GitHub 远程仓库关联起来(SSH))
上一篇下一篇在本地新建仓库并进行一次提交目 录将本地新建仓库与 GitHub 远程仓库关联起来SSH1关联一个空仓库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格式gitremoteaddorigin https://github.com/Mr-L-Xiao/my-project.git# 添加远程仓库地址origin 是默认的远程仓库别名SSH格式推荐长期使用gitremoteaddorigin gitgithub.com:Mr-L-Xiao/my-project.git推送本地代码到 GitHubGitHub 从 2020 年起将默认分支名称从master更改为main如果你的本地默认分支名是master那么就需要先重命名分支gitbranch-Mmain然后再推送本地代码到main分支# 推送到 main 分支GitHub 默认主分支通常是 maingitpush-uorigin 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-ted25519-Cxxxxxxxxxxqq.com然后用指令查询公钥$cat~/.ssh/id_ed25519.pub第三步复制公钥并将其添加到 GitHub打开 https://github.com/settings/keys或点头像选择 【settings】→【SSH and GPG keys】→【New SSH key】添加完之后就会显示第四步测试 SSH 连接ssh-Tgitgithub.com如果回复下列内容则表示 SSH 配置成功Hi XXX! Youve successfully authenticated, but GitHub does not provide shell access.有关是否需要 “启动 ssh-agent 并添加私钥” 可以按需执行再次推送本地代码到 GitHubgitpush-uorigin 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 上就能看到推送了后续推送只需简单命令gitadd.gitcommit-m更新说明gitpush# 不需要再加 -u origin main2关联一个非空仓库比如说在 Github 上创建仓库的时候勾选了 README这个仓库就不是空仓库那么要在git push -u origin main这一步之前先拉取合并# 拉取远程内容加上 --allow-unrelated-histories 因为两边历史无关gitpull origin main --allow-unrelated-histories# 回车之后会弹出编辑窗口一般直接默认按ESC之后输入:wq回车退出即可# 解决可能的冲突如果有# 然后再推送gitpush-uorigin main然后内容就变成了本地仓库和远程仓库的合集。完整的 git 流程是# 初始化 Git 仓库gitinit# 添加所有文件gitadd.# 提交gitcommit-mfirst commit# 设置分支名为 mainGitHub 新建仓库默认分支通常是 maingitbranch-Mmain# 拉取远程内容加上 --allow-unrelated-histories 因为两边历史无关gitpull origin main --allow-unrelated-histories# 解决可能的冲突如果有# 然后再推送gitpush-uorigin main