| 上一篇 | 下一篇 |
|---|---|
| 在本地新建仓库并进行一次提交 |
目 录
- [将本地新建仓库与 GitHub 远程仓库关联起来(SSH)](#将本地新建仓库与 GitHub 远程仓库关联起来(SSH))
将本地新建仓库与 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,执行以下两个命令其中之一(替换为实际仓库地址):
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,那么就需要先重命名分支:bashgit branch -M main然后再推送本地代码到
main分支bash# 推送到 main 分支(GitHub 默认主分支通常是 main) git push -u origin main如果使用的是 SSH 格式的 GitHub 远程仓库地址,首次连接时会有安全验证提示,并且要求你添加 SSH 密钥:

上述内容表示:Git 无法通过 SSH 向 GitHub 认证你的身份,即 SSH 密钥未正确配置或未添加到 GitHub 账号
按照下一步操作来即可 →
-
(补充操作)添加 SSH 密钥到 GitHub 账号,完成验证
-
第一步:检查是否已有 SSH 密钥
bashls -al ~/.ssh如果回复是这样的:

说明本地还没有生成 SSH 密钥对,当前目录中只有
known_hosts文件,这是之前输入yes确认 GitHub 主机指纹时自动生成的,但缺少关键的两个文件:① 私钥文件:如id_rsa或id_ed25519;② 公钥文件:如id_rsa.pub或id_ed25519.pub -
第二步:使用下方指令生成新的 SSH 密钥对(推荐 ED25519),例如
bashssh-keygen -t ed25519 -C "xxxxxxxxxx@qq.com"然后用指令查询公钥:
bash$ cat ~/.ssh/id_ed25519.pub
-
第三步:复制公钥,并将其添加到 GitHub
-
打开 https://github.com/settings/keys(或点头像选择 【settings】→【SSH and GPG keys】→【New SSH key】)

-
添加完之后就会显示

-
-
第四步:测试 SSH 连接
bashssh -T git@github.com如果回复下列内容,则表示 SSH 配置成功:
Hi XXX! You've successfully authenticated, but GitHub does not provide shell access. -
有关是否需要 "启动 ssh-agent 并添加私钥" ,可以按需执行
-
-
再次推送本地代码到 GitHub
bashgit 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 上就能看到推送了

-
后续推送只需简单命令
bashgit 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