Git 本地项目上传 GitHub 全指南(SSH Token 两种上传方式详细讲解)
前言:Git 与 GitHub 的区别与联系
在学习如何将本地项目上传到 GitHub 之前,先来弄清楚 Git 和 GitHub 的区别以及它们之间的联系。
| 对比项 | Git | GitHub |
|---|---|---|
| 定义 | 分布式版本控制系统(DVCS),用于本地和远程管理代码版本 | 托管 Git 仓库的在线平台 |
| 作用 | 负责代码的版本管理,包括提交、回滚、分支管理等 | 允许用户在云端存储、协作和管理 Git 仓库 |
| 使用方式 | 在本地安装并使用 Git 命令行或 GUI 进行代码管理 | 通过浏览器或 Git 连接远程仓库,进行托管和协作 |
| 是否需要联网 | 不需要,可在本地使用 | 需要联网,用于远程仓库管理 |
| 是否依赖 GitHub | 不依赖,Git 可独立使用 | 依赖 Git,GitHub 是基于 Git 构建的 |
Git 是一个本地的版本控制工具,而 GitHub 是一个在线代码托管平台,GitHub 依赖 Git 进行版本控制,Git 也可以在本地独立使用,但通常两者结合使用以便于代码同步、协作和备份。
开始前,你需要:
安装 Git:未安装请参考我的另一篇教程 👉 手把手教你如何在Windows上安装Git并连接GitHub
注册 GitHub 账号:GitHub 官网
一、创建 GitHub 仓库
-
登录 GitHub 官网。
-
点击右上角的
+,选择 New repository(新建仓库)。
-
填写 仓库名称(Repository name),可选填写 描述(Description)。
-
选择仓库可见性:
- Public(公开):所有人都能看到该仓库。
- Private(私有):只有你和你授权的用户能访问。
-
不要勾选
Initialize this repository with a README,否则后续git push可能会遇到冲突。

本图出自 Github如何上传项目(超详细小白教程) 四、Github的上传:第二步
-
点击 Create repository 创建仓库。

二、本地项目上传至 GitHub(方法一:使用 SSH 认证 | 推荐)
1. 生成 SSH 密钥
在 Git Bash 终端输入以下命令(替换 your-email@example.com 为你的 GitHub 邮箱):
ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
提示:执行后会提示你输入文件保存路径,直接回车即可(默认
~/.ssh/id_rsa)。然后会要求你输入密码,可直接回车跳过,接着会要求你再次输入密码进行确认,再次回车跳过即可。
2. 添加 SSH Key 到 GitHub
-
运行以下命令复制 SSH Key:
cat ~/.ssh/id_rsa.pub -
复制输出的 SSH Key,并进入 GitHub SSH Key 管理页面,点击 New SSH Key。

-
填写相关信息,如下图,最后点击 Add SSH key(添加 SSH 密钥)。

-
填写 GitHub账号 密码,点击
Confirm。
3. 在本地初始化 Git 仓库
如果你的项目文件夹还未初始化 Git 仓库,可以执行以下命令:
cd /path/to/your/project # 进入你的项目目录
git init # 初始化 Git 仓库
这样,Git 就会在当前目录创建一个 .git 文件夹,代表该目录已成为一个 Git 仓库。

4. 关联远程仓库
在 GitHub 创建仓库后,会看到类似以下的 git remote add 命令,请复制并在终端执行(替换为你的 GitHub 仓库地址):
git remote add origin git@github.com:your-username/your-repository.git

可以用以下命令检查远程仓库是否添加成功:
git remote -v
如果返回 origin 及对应的 GitHub 地址,则说明添加成功。

5. 添加、提交和推送代码
-
添加所有文件到 Git 版本控制,执行以下命令:
git add . # 或者添加特定文件,例如: git add main.py -
提交代码,提交时需附带说明信息:
git commit -m "初次提交代码" -
确认推送分支,首次推送时,需要设置
main或master分支:# 确保主分支是 main(如果你的 GitHub 仓库默认是 master 则将 main 改为 master) git branch -M main -
推送代码到指定分支:
git push -u origin main
-
代码已成功推送至 GitHub 仓库,您可以前往 GitHub 仓库页面查看。
三、本地项目上传至 GitHub(方法二:使用 Token 认证)
1. 生成 Personal Access Token (PAT)
-
进入 GitHub 个人访问令牌管理页面,点击
Generate new token。
-
填写相关信息,如下图。

-
点击
Generate token生成 Token。
-
复制个人访问令牌并保存好,下面会用到。

2. 在本地初始化 Git 仓库
如果你的项目文件夹还未初始化 Git 仓库,可以执行以下命令:
cd /path/to/your/project # 进入你的项目目录
git init # 初始化 Git 仓库
这样,Git 就会在当前目录创建一个 .git 文件夹,代表该目录已成为一个 Git 仓库。

3. 关联远程仓库
在 GitHub 创建仓库后,会看到类似以下的 git remote add 命令,请复制并在终端执行(替换为你的 GitHub 仓库地址):
git remote add origin https://github.com/your-username/your-repository.git

可以用以下命令检查远程仓库是否添加成功:
git remote -v
如果返回 origin 及对应的 GitHub 地址,则说明添加成功。

4. 添加、提交和推送代码
-
添加所有文件到 Git 版本控制,执行以下命令:
git add . # 或者添加特定文件,例如: git add main.py -
提交代码,提交时需附带说明信息:
git commit -m "初次提交代码" -
确认推送分支,首次推送时,需要设置
main或master分支:# 确保主分支是 main(如果你的 GitHub 仓库默认是 master 则将 main 改为 master) git branch -M main -
推送代码到指定分支:
git push -u origin main -
输入刚才复制的 Token,点击
Sign in。
-
代码已成功推送至 GitHub 仓库,您可以前往 GitHub 仓库页面查看。
结语:Git 上传 GitHub 的更多实用操作
恭喜您!现在您已经掌握了如何使用 SSH 认证 和 Token 认证 将本地项目上传到 GitHub 🎉。在实际开发中,我们还需要掌握一些常见的 Git 命令,以提高 Git 版本控制的效率。
🎯 Git 常用命令总结
| 操作 | 命令 |
|---|---|
删除 .git 目录(重置仓库) | Remove-Item -Recurse -Force .git (Windows) / rm -rf .git (Linux/macOS) |
| 强制推送(覆盖远程) | git push --force |
| 初始化 Git 仓库 | git init |
| 添加远程仓库 | git remote add origin <仓库地址> |
| 克隆仓库 | git clone <仓库地址> |
| 查看当前状态 | git status |
| 查看提交历史 | git log --oneline --graph --decorate --all |
| 添加文件到暂存区 | git add . |
| 提交代码 | git commit -m "提交信息" |
| 推送代码到远程仓库 | git push -u origin main |
| 拉取远程最新代码 | git pull origin main |
| 创建新分支 | git checkout -b new-branch |
| 切换分支 | git checkout branch-name |
| 合并分支 | git merge branch-name |
| 删除本地分支 | git branch -d branch-name |
| 删除远程分支 | git push origin --delete branch-name |
撤销 git add | git reset HEAD file.txt |
| 撤销最近一次提交(保留更改) | git reset HEAD~1 |
| 撤销最近一次提交(删除更改) | git reset --hard HEAD~1 |
现在,您已经完全掌握了 Git 基本操作,并能顺利将代码上传到 GitHub!希望这篇教程能帮助您更好地使用 Git 进行版本控制,祝您编码愉快 🚀!
相关文章:
Git 本地项目上传 GitHub 全指南(SSH Token 两种上传方式详细讲解)
前言:Git 与 GitHub 的区别与联系 在学习如何将本地项目上传到 GitHub 之前,先来弄清楚 Git 和 GitHub 的区别以及它们之间的联系。 对比项GitGitHub定义分布式版本控制系统(DVCS),用于本地和远程管理代码版本托管 G…...
jenkins服务启动-排错
服务状态为active (exited) 且进程不在 查看/etc/rc.d/init.d/jenkins配置 获取配置参数 [rootfy-jenkins-prod jenkins]# cat /etc/rc.d/init.d/jenkins | grep -v #JENKINS_WAR"/usr/lib/jenkins/jenkins.war" test -r "$JENKINS_WAR" || { echo "…...
CF 144A.Arrival of the General(Java实现)
题目分析 一个n个身高数据,问最高的到最前面,最矮的到最后面的最短交换次数 思路分析 首先,如果数据有重复项,例如示例二中,最矮的数据就是最后一个出现的数据位置,最高的数据就是最先出现的数据位置&…...
SAP-ABAP:SAP中REPORT程序和online程序的区别对比
在SAP中,REPORT程序和Online程序(通常指Dialog程序)是两种常见的ABAP程序类型,它们在用途、结构和用户交互方式上有显著区别。以下是它们的详细对比: 1. 用途 REPORT程序Online程序主要用于数据查询、报表生成和批量数…...
Java发展史
JavaEE的由来 语言的诞生 Java的前身是Oak语言,其目的是搞嵌入式开发开发智能面包机 叮~~~🍞🍞🍞 产品以失败告终 巅峰 网景公司需要网景浏览器打开网页,Oak->Java,进行前端开发(相关技…...
vue3--SVG图标的封装与使用
流程 终端输入- -安装下面这个包 npm install vite-plugin-svg-icons -Dvite.config.ts文件中引入 import {createSvgIconsPlugin} from vite-plugin-svg-iconsvite.config.ts文件中配置plugins选项 将下面代码 createSvgIconsPlugin({//用于指定包含 SVG 图标的文件夹路径…...
Datawhale Ollama教程笔记3
小白的看课思路: Ollama REST API 是什么? 想象一下,你有一个智能的“盒子”(Ollama),里面装了很多聪明的“小助手”(语言模型)。如果你想让这些“小助手”帮你完成一些任务&#…...
学习数据结构(10)栈和队列下+二叉树(堆)上
1.关于栈和队列的算法题 (1)用队列实现栈 解法一:(参考代码) 题目要求实现六个函数,分别是栈初始化,入栈,移除并返回栈顶元素,返回栈顶元素,判空࿰…...
洛谷 P3660 USACO17FEB Why Did the Cow Cross the Road III 题解
题意 有一个圆,圆周上按顺时针方向给出 2 n 2n 2n个点。第 i i i个点的颜色是 c o l o r i color_i colori,其中数据保证 1 ≤ c o l o r i ≤ n 1\le color_i\le n 1≤colori≤n,而且每种不同的颜色有且只有两个点。不存在位置重叠的点…...
【数据结构】(9) 优先级队列(堆)
一、优先级队列 优先级队列不同于队列,队列是先进先出,优先级队列是优先级最高的先出。一般有两种操作:返回最高优先级对象,添加一个新对象。 二、堆 2.1、什么是堆 堆也是一种数据结构,是一棵完全二叉树,…...
如何提升爬虫获取数据的准确性?
提升爬虫获取数据的准确性是确保数据分析和后续应用有效性的关键。以下是一些经过验证的方法和最佳实践,可以帮助提高爬虫数据的准确性: 1. 数据清洗 数据清洗是提升数据准确性的重要步骤,主要包括去除重复数据、处理缺失值和异常值。 去除…...
Obsidian及Zotero常用的插件
Obsidian插件 Minimal Theme Settings(Life,zotero)【必需】 界面样式设置所需插件 Style Settings(Life,zotero)【必需】界面样式设置所需插件 Recent Files(Life,zotero…...
闲鱼IP属地是通过电话号码吗?
在闲鱼这样的二手交易平台上,用户的IP属地信息对于维护交易安全、增强用户间的信任至关重要。然而,关于闲鱼IP属地是如何确定的,不少用户存在疑惑,尤其是它与电话号码之间是否存在关联。本文将深入探讨这一问题,揭示闲…...
C#多线程异步连接MySQL与SQLserver数据库
C#多线程异步连接MySQL与SQLserver数据库 一、前言二、多线程异步连接数据库代码2.1代码块2.2代码说明 参考文档 一、前言 当编写代码连接多台设备上的数据库时,如果采用同步逐个连接的方式,在网络畅通的情况下连接速度尚可,但当其中一台设备…...
51单片机-数码管
目录 1、静态数码管 1.1、数码管是如何显示出字符 1.2、数码管静态显示原理 1.3、74HC573芯片的使用 1.4、静态数码管编程 2、动态数码管 2.1、数码管动态显示原理 2.2、74HC138芯片的使用 2.3、编写动态数码管程序 1、静态数码管 1.1、数码管是如何显示出字符 单片机…...
C#学习之S参数读取(s2p文件)
目录 一、创作灵感 二、S2PFileReader类 1.代码示例 2.代码说明 a.ReadS2PFile 方法: b.DataTable 结构: 三、S2PFileReader类的调用演示 1.使用示例 一、创作灵感 虽然MATLAB处理数据很实用,但是C#常用于程控仪器的控制,…...
Spring Boot “约定大于配置”
什么是“约定大于配置”? “约定大于配置”是一种简化开发的设计理念。简单来说,就是框架默认提供了常见的配置和行为,开发者只需要按照约定来编写代码,避免了繁琐的配置,只在需要时进行定制和调整。这种理念在Spring…...
传输层协议TCP ( 下 )
文章目录 前言序号与确认序号超时重传RTOJacobson算法内核中超时时间的计算 滑动窗口滑动窗口延迟应答流量控制 拥塞控制慢启动拥塞避免快重传快速恢复 保活机制参考资料 前言 TCP(Transmission Control Protocol,传输控制协议)是互联网最重要…...
NLP 八股 DAY1:BERT
BERT全称:Pre-training of deep bidirectional transformers for language understanding,即深度双向Transformer。 模型训练时的两个任务是预测句⼦中被掩盖的词以及判断输⼊的两个句⼦是不是上下句。在预训练 好的BERT模型后⾯根据特定任务加上相应的⽹…...
演示synchronized锁机制用法的简单Demo
演示synchronized锁机制用法的简单Demo。我们以"银行开户"场景为例:每个用户只能创建一个账户(模拟类似原代码中每个用户只能有一个私有空间的限制)。 第1步:创建项目结构 demo-lock ├── src/main/java/com/exampl…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
