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…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...