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…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
41道Django高频题整理(附答案背诵版)
解释一下 Django 和 Tornado 的关系? Django和Tornado都是Python的web框架,但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架,鼓励快速开发和干净、实用的设计。它遵循MVC设计,并强调代码复用。Django有…...
欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!
多连接 BLE 怎么设计服务不会乱?分层思维来救场! 作者按: 你是不是也遇到过 BLE 多连接时,调试现场像网吧“掉线风暴”? 温度传感器连上了,心率带丢了;一边 OTA 更新,一边通知卡壳。…...
STL 2迭代器
文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器? 1.迭代器…...
