当前位置: 首页 > article >正文

使用ssh推送项目到github

文章目录

      • 1. 确保已生成 SSH 密钥
      • 2. 在 GitHub 上创建远程仓库
      • 3. 初始化本地项目
      • 4. 将本地项目与远程仓库关联
      • 5. 添加文件并提交
      • 补充:拉取远程修改(可选)
      • 6. 推送到 GitHub
      • 7. 完成
      • 总结
  • 出现的问题
      • 解决方法:
        • 方法 1:允许合并不相关的历史记录
        • 方法 2:强制覆盖本地历史记录
        • 方法 3:强制覆盖远程历史记录
      • 注意事项:
      • 推荐操作:

要通过 SSH 将本地项目推送到 GitHub,请按照以下步骤操作:


第一步和第二步可以看我的另一个博客

github配置ssh连接

1. 确保已生成 SSH 密钥

如果你还没有 SSH 密钥,请先按照以下命令生成:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

将公钥(~/.ssh/id_rsa.pub)添加到 GitHub:

  1. 复制公钥:
    cat ~/.ssh/id_rsa.pub
    
  2. 登录 GitHub,进入 SettingsSSH and GPG keysNew SSH key
  3. 将公钥粘贴到 Key 字段中,保存。

验证 SSH 连接:

ssh -T git@github.com

如果看到 Hi username! You've successfully authenticated...,说明配置成功。


2. 在 GitHub 上创建远程仓库

  1. 登录 GitHub,点击 New repository
  2. 填写仓库名称,选择公开或私有,点击 Create repository
  3. 创建完成后,记下仓库的 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 页面,即可看到项目文件。


总结

  1. 生成 SSH 密钥并添加到 GitHub。
  2. 在 GitHub 上创建远程仓库。
  3. 初始化本地项目并关联远程仓库。
  4. 提交代码并推送到 GitHub。

如果遇到问题,请检查 SSH 配置或网络连接。

出现的问题

由于我先前提交了,但是没有合并,所以我的远程的origin存在提交,所以我在push的时候出现了矛盾

在这里插入图片描述

遇到的错误是因为 Git 检测到本地仓库和远程仓库的历史记录不相关(unrelated histories)。这种情况通常发生在以下场景:

  • 你本地初始化的仓库和远程仓库没有共同的提交历史。
  • 远程仓库是一个全新的仓库,或者你本地仓库是一个全新的仓库。

Git 默认会拒绝合并不相关的历史记录,以避免意外覆盖或丢失数据。不过,你可以通过以下方法解决这个问题。


解决方法:

方法 1:允许合并不相关的历史记录

如果你确定需要合并本地和远程仓库的历史记录,可以使用 --allow-unrelated-histories 选项强制合并:

git pull origin main --allow-unrelated-histories

这会将远程仓库的历史记录与本地仓库的历史记录合并。如果有冲突,Git 会提示你解决冲突。

方法 2:强制覆盖本地历史记录

如果你希望完全使用远程仓库的内容,丢弃本地的所有更改和历史记录,可以执行以下操作:

  1. 备份当前分支(可选):
    git branch backup-main
    
  2. 重置本地分支以匹配远程分支:
    git fetch origin main
    git reset --hard origin/main
    
    这会强制将本地 main 分支的内容和提交历史与远程 main 分支完全同步。
方法 3:强制覆盖远程历史记录

如果你希望完全使用本地的内容,丢弃远程仓库的所有更改和历史记录,可以执行以下操作:

  1. 强制推送本地分支到远程仓库:
    git push -u origin main --force
    
    这会覆盖远程仓库的 main 分支,使其与本地分支完全一致。

注意事项:

  • 数据丢失风险:强制合并或强制推送可能会导致历史记录或数据丢失,请确保你了解这些操作的影响。
  • 备份:在执行这些操作之前,建议备份当前分支或仓库,以防万一。

推荐操作:

如果你不确定如何处理,推荐使用 方法 1,即允许合并不相关的历史记录:

git pull origin main --allow-unrelated-histories

然后解决可能的冲突,并提交合并结果。

由于我并不想要远程的数据,想直接覆盖,所以我采用的是第三种方法:

在这里插入图片描述


http://www.kler.cn/a/513138.html

相关文章:

  • C++ ——— 模拟实现 vector 类
  • HarmonyOS NEXT:华为分享-碰一碰开发分享
  • 一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用
  • C# LINQ(Language Integrated Query)详解
  • vue2使用flv.js在浏览器打开flv格式视频
  • 昇腾环境ppstreuct部署问题记录
  • Java中如何安全地停止线程?
  • C++入门 详细版
  • Linux - 线程池
  • SpringBoot实现轻量级动态定时任务管控及组件化
  • git原远程仓库无法连接后使用本地仓库将所有分支和tags上传到新远程仓库
  • [答疑]这个消息名是写发送数据还是接收数据
  • 不重启JVM,替换掉已经加载的类
  • Flutter 架构原理
  • ubuntu_查询连接当前服务器的用户ip
  • MongoDB 备份与恢复综述
  • Class ‘com.xxx.xxx‘ not found in module ‘xxxx‘ 解决方法
  • 使用ollama本地部署微调后的大语言模型
  • 包文件分析器 Webpack Bundle Analyzer
  • C# lambda表达式
  • Ubuntu介绍、与centos的区别、基于VMware安装Ubuntu Server 22.04、配置远程连接、安装jdk+Tomcat
  • BOBO小火炬全套源码XE修复版2025(火炬天花板二次开发版)
  • swagger漏洞扫描工具
  • MFC程序设计(一)MFC入门
  • 【系统架构设计师】真题论文: 论企业集成平台的理解与应用(包括解题思路和素材)
  • 美特CRM mcc_login.jsp存在SQL注入漏洞