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

使用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.lryc.cn/news/524874.html

相关文章:

  • SAP MRP运行出现例外消息怎么处理?例外消息的优先级、案例分享
  • 002-SpringBoot整合AI(Alibaba)
  • Java中如何安全地停止线程?
  • Apache Tomcat文件包含漏洞复现(详细教程)
  • 个人学习 - 什么是Vim?
  • Flink Gauss CDC:深度剖析存量与增量同步的创新设计
  • docker 部署.netcore应用优势在什么地方?
  • AIP-126 枚举
  • P3707 [SDOI2017] 相关分析 Solution
  • Android AutoMotive --CarService
  • K8S中Service详解(三)
  • C++----STL(vector)
  • Ubuntu24.04初始化MySQL报错 error while loading shared libraries libaio.so.1
  • 初探大数据流式处理
  • 【Linux】Linux入门(三)权限
  • html,css,js的粒子效果
  • Spring Boot + Netty + WebSocket 实现消息推送
  • Python3 【字符串】:方法和函数使用示例手册
  • 数据结构与算法整理复习(一):数据结构概念与线性表
  • 【Block总结】PConv风车卷积,更大的感受野,提高特征提取能力|即插即用
  • Python新春烟花
  • VirtualBox can‘t enable the AMD-V extension
  • 掘金--创意标题匹配问题
  • OBU和T-Box
  • 【PVE】Proxmox VE8.0+创建LXC容器安装docker
  • 一文大白话讲清楚webpack基本使用——11——chunkIds和runtimeChunk
  • Java 中的设计模式:经典与现代实践
  • DRG_DIP 2.0时代医院程序结构转型与数据结构优化研究
  • 一部手机如何配置内网电脑同时访问内外网
  • 国产低功耗带LCD驱动和触摸按键功能的MCU