使用ssh推送项目到github
文章目录
要通过 SSH 将本地项目推送到 GitHub,请按照以下步骤操作:
第一步和第二步可以看我的另一个博客
1. 确保已生成 SSH 密钥
如果你还没有 SSH 密钥,请先按照以下命令生成:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
将公钥(~/.ssh/id_rsa.pub
)添加到 GitHub:
- 复制公钥:
cat ~/.ssh/id_rsa.pub
- 登录 GitHub,进入 Settings → SSH and GPG keys → New SSH key。
- 将公钥粘贴到 Key 字段中,保存。
验证 SSH 连接:
ssh -T git@github.com
如果看到 Hi username! You've successfully authenticated...
,说明配置成功。
2. 在 GitHub 上创建远程仓库
- 登录 GitHub,点击 New repository。
- 填写仓库名称,选择公开或私有,点击 Create repository。
- 创建完成后,记下仓库的 SSH 地址(如
git@github.com:username/repo-name.git
)。
3. 初始化本地项目
如果本地项目还未初始化为 Git 仓库,运行以下命令:
cd /path/to/your/project
git init
但是现在我们的本地的分支为
master
,远程仓库的是main
,所以最好我们将本地的名字改为main
4. 将本地项目与远程仓库关联
使用 GitHub 提供的 SSH 地址关联远程仓库:
git remote add origin git@github.com:username/repo-name.git
验证是否关联成功:
git remote -v
5. 添加文件并提交
将项目文件添加到 Git 暂存区并提交:
git add .
git commit -m "Initial commit"
补充:拉取远程修改(可选)
在推送本地修改之前,建议先拉取远程仓库的最新更改,以避免冲突:
git pull origin main
- 如果有冲突,解决冲突后重新提交
git add .
git commit -m "解决冲突"
6. 推送到 GitHub
将本地代码推送到远程仓库:
git push -u origin main
-u
:将本地分支与远程分支关联,以后可以直接使用git push
。main
:默认分支名称(可能是master
,具体取决于仓库设置)。
7. 完成
推送成功后,刷新 GitHub 页面,即可看到项目文件。
总结
- 生成 SSH 密钥并添加到 GitHub。
- 在 GitHub 上创建远程仓库。
- 初始化本地项目并关联远程仓库。
- 提交代码并推送到 GitHub。
如果遇到问题,请检查 SSH 配置或网络连接。
出现的问题
由于我先前提交了,但是没有合并,所以我的远程的
origin
存在提交,所以我在push
的时候出现了矛盾
遇到的错误是因为 Git 检测到本地仓库和远程仓库的历史记录不相关(unrelated histories)。这种情况通常发生在以下场景:
- 你本地初始化的仓库和远程仓库没有共同的提交历史。
- 远程仓库是一个全新的仓库,或者你本地仓库是一个全新的仓库。
Git 默认会拒绝合并不相关的历史记录,以避免意外覆盖或丢失数据。不过,你可以通过以下方法解决这个问题。
解决方法:
方法 1:允许合并不相关的历史记录
如果你确定需要合并本地和远程仓库的历史记录,可以使用 --allow-unrelated-histories
选项强制合并:
git pull origin main --allow-unrelated-histories
这会将远程仓库的历史记录与本地仓库的历史记录合并。如果有冲突,Git 会提示你解决冲突。
方法 2:强制覆盖本地历史记录
如果你希望完全使用远程仓库的内容,丢弃本地的所有更改和历史记录,可以执行以下操作:
- 备份当前分支(可选):
git branch backup-main
- 重置本地分支以匹配远程分支:
这会强制将本地git fetch origin main git reset --hard origin/main
main
分支的内容和提交历史与远程main
分支完全同步。
方法 3:强制覆盖远程历史记录
如果你希望完全使用本地的内容,丢弃远程仓库的所有更改和历史记录,可以执行以下操作:
- 强制推送本地分支到远程仓库:
这会覆盖远程仓库的git push -u origin main --force
main
分支,使其与本地分支完全一致。
注意事项:
- 数据丢失风险:强制合并或强制推送可能会导致历史记录或数据丢失,请确保你了解这些操作的影响。
- 备份:在执行这些操作之前,建议备份当前分支或仓库,以防万一。
推荐操作:
如果你不确定如何处理,推荐使用 方法 1,即允许合并不相关的历史记录:
git pull origin main --allow-unrelated-histories
然后解决可能的冲突,并提交合并结果。
由于我并不想要远程的数据,想直接覆盖,所以我采用的是第三种方法:
原文地址:https://blog.csdn.net/weixin_74850661/article/details/145279064
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!