使用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

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

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/957656.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文读懂 RocketMQ:从概念到架构与应用原理概述

文章目录 概述架构说明核心组件核心概念 namesvrproducer默认实现producer启动消息发送 broker-mq核心基本模型集群模型内部模型存储机制高可用 consumerpush类型push流程pull类型 概述 随着分布式技术在业内的快速应用,mq(消息队列)做为不可…

具身智能新突破!Physical Intelligence推出机器人动作tokenizer,训练提速5倍

具身智能,是人工智能(AI)行业的下一个浪潮。如何有效训练 Transformers 模型来控制具身机器人,是当前亟需要解决的难题,尤其是对于更复杂、需要精确和高频控制的精巧技能,现有的视觉-语言-动作(…

通过idea创建的springmvc工程需要的配置

在创建的spring mvc工程中&#xff0c;使用idea开发之前需要配置文件包括porm.xml、web.xml、springmvc.xml 1、porm.xml 工程以来的spring库&#xff0c;主要包括spring-aop、spring-web、spring-webmvc&#xff0c;示例配置如下&#xff1a; <project xmlns"http:/…

【MySQL系列文章】Linux环境下安装部署MySQL

前言 本次安装部署主要针对Linux环境进行安装部署操作,系统位数64 getconf LONG_BIT 64MySQL版本&#xff1a;v5.7.38 一、下载MySQL MySQL下载地址&#xff1a;MySQL :: Download MySQL Community Server (Archived Versions) 二、上传MySQL压缩包到Linuxx环境&#xff0c…

【排查案例】无认证集群空白分区创建元凶排查记录

无认证集群空白分区创建元凶排查记录 前言正文SparkSQL Thrift审计通过edit查找操作抓包分析请求NodeManager日志追踪结论 后记 前言 今天分享一个最近在生产环境排查的空白分区的问题&#xff0c;先说业务感知&#xff0c;业务那边反馈本身这条业务链每个小时数据应该是3个分…

音频入门(一):音频基础知识与分类的基本流程

音频信号和图像信号在做分类时的基本流程类似&#xff0c;区别就在于预处理部分存在不同&#xff1b;本文简单介绍了下音频处理的方法&#xff0c;以及利用深度学习模型分类的基本流程。 目录 一、音频信号简介 1. 什么是音频信号 2. 音频信号长什么样 二、音频的深度学习分…

语义分割文献阅读-SegNet:一种用于图像分割的深度卷积编码器-解码器架构(1.13-1.19)

目录 摘要 Abstract 1 引言 2 SegNet架构 2.1 编码器网络 2.2 解码器网络 2.3 最大池化索引(Max-pooling Indices) 3 训练SegNet 3.1 加载预训练权重 3.2 构建MyDataset类 3.3 训练 4 测试 总结 摘要 本周阅读的论文题目是《SegNet&#xff1a;A Deep Convoluti…

深度学习核函数

一、核函数的基本概念 核函数在机器学习中具有重要应用价值&#xff0c;常用于支持向量机&#xff08;SVM&#xff09;等算法中。 核函数是面试中经常被考到的知识点&#xff0c;对于找工作和实际数据转换都有重要作用。 二、数据建模与核函数的作用 数据越多&#xff0c;可…

.Net Core微服务入门全纪录(四)——Ocelot-API网关(上)

系列文章目录 1、.Net Core微服务入门系列&#xff08;一&#xff09;——项目搭建 2、.Net Core微服务入门全纪录&#xff08;二&#xff09;——Consul-服务注册与发现&#xff08;上&#xff09; 3、.Net Core微服务入门全纪录&#xff08;三&#xff09;——Consul-服务注…

2024年智慧消防一体化安全管控年度回顾与2025年预测

随着科技的飞速发展&#xff0c;智慧营区一体化安全管控在2024年取得了显著进展&#xff0c;同时也为2025年的发展奠定了坚实基础。 2024年年度回顾 政策支持力度持续加大&#xff1a;国家对消防安全的重视程度不断提高&#xff0c;出台了一系列涵盖技术创新、市场应用、人才培…

抖音小程序一键获取手机号

前端代码组件 <button v-if"!isFromOrderList"class"get-phone-btn" open-type"getPhoneNumber"getphonenumber"onGetPhoneNumber">一键获取</button>// 获取手机号回调onGetPhoneNumber(e) {var that this tt.login({f…

【线性代数】列主元法求矩阵的逆

列主元方法是一种用于求解矩阵逆的数值方法&#xff0c;特别适用于在计算机上实现。其基本思想是通过高斯消元法将矩阵转换为上三角矩阵&#xff0c;然后通过回代求解矩阵的逆。以下是列主元方法求解矩阵 A A A 的逆的步骤&#xff1a; [精确算法] 列主元高斯消元法 步骤 1&am…

从零开始:Spring Boot核心概念与架构解析

引言 在当今的Java开发领域&#xff0c;Spring Boot已经成为构建企业级应用的首选框架之一。它以其简洁、高效、易于上手的特点&#xff0c;极大地简化了Spring应用的开发过程。本文将从Spring Boot的核心概念入手&#xff0c;深入解析其架构设计和运行原理&#xff0c;帮助读…

后端面试题分享第一弹(状态码、进程线程、TCPUDP)

后端面试题分享第一弹 1. 如何查看状态码&#xff0c;状态码含义 在Web开发和调试过程中&#xff0c;HTTP状态码是了解请求处理情况的重要工具。 查看状态码的步骤 打开开发者工具&#xff1a; 在大多数浏览器中&#xff0c;您可以通过按下 F12 键或右键单击页面并选择“检查…

7、数组知识点汇总

一、 数组基本概念 程序算法数据结构 算法&#xff1a;解决程序的流程步骤数据结构&#xff1a;将数据按照某种特定的结构来存储设计良好的数据结构会导致良好的算法。ArrayList、LinkedList 数组是最简单的数据结构。 1、数组&#xff1a; 数组&#xff1a;存放同一种类型…

计算机网络 (48)P2P应用

前言 计算机网络中的P2P&#xff08;Peer to Peer&#xff0c;点对点&#xff09;应用是一种去中心化的网络通信模式&#xff0c;它允许设备&#xff08;或节点&#xff09;直接连接并共享资源&#xff0c;而无需传统的客户端-服务器模型。 一、P2P技术原理 去中心化架构&#…

【技巧】优雅的使用 pnpm+Monorepo 单体仓库构建一个高效、灵活的多项目架构

单体仓库&#xff08;Monorepo&#xff09;搭建指南&#xff1a;从零开始 单体仓库&#xff08;Monorepo&#xff09;是一种将多个相关项目集中管理在一个仓库中的开发模式。它可以帮助开发者共享代码、统一配置&#xff0c;并简化依赖管理。本文将通过实际代码示例&#xff0…

包文件分析器 Webpack Bundle Analyzer

webpack-bundle-analyzer 是一个非常有用的工具&#xff0c;用于可视化和分析 Webpack 打包生成的文件。这使得开发者能够更好地理解应用的依赖关系、包的大小&#xff0c;以及优化打包的机会。以下是关于 webpack-bundle-analyzer 的详细介绍&#xff0c;包括它的安装、使用以…

重学SpringBoot3-WebClient配置与使用详解

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞??收藏评论 重学SpringBoot3-WebClient配置与使用详解 1. 简介2. 环境准备 2.1 依赖配置 3. WebClient配置 3.1 基础配置3.2 高级配置3.3 retrieve()和exchange()区别 4. 使用示例 4.1 基本请求操…

持续升级《在线写python》小程序的功能,文章页增加一键复制功能,并自动去掉html标签

增加复制按钮后的界面是这样的 代码如下&#xff1a; <template><view><x-header></x-header><view class"" v-if"article_info"><view class"kuai bgf"><view class"ac fs26"><img sr…