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

Git 本地项目上传 GitHub 全指南(SSH Token 两种上传方式详细讲解)

前言:Git 与 GitHub 的区别与联系

在学习如何将本地项目上传到 GitHub 之前,先来弄清楚 GitGitHub 的区别以及它们之间的联系。

对比项GitGitHub
定义分布式版本控制系统(DVCS),用于本地和远程管理代码版本托管 Git 仓库的在线平台
作用负责代码的版本管理,包括提交、回滚、分支管理等允许用户在云端存储、协作和管理 Git 仓库
使用方式在本地安装并使用 Git 命令行或 GUI 进行代码管理通过浏览器或 Git 连接远程仓库,进行托管和协作
是否需要联网不需要,可在本地使用需要联网,用于远程仓库管理
是否依赖 GitHub不依赖,Git 可独立使用依赖 Git,GitHub 是基于 Git 构建的

Git 是一个本地的版本控制工具,而 GitHub 是一个在线代码托管平台,GitHub 依赖 Git 进行版本控制,Git 也可以在本地独立使用,但通常两者结合使用以便于代码同步、协作和备份

开始前,你需要:

  1. 安装 Git:未安装请参考我的另一篇教程 👉 手把手教你如何在Windows上安装Git并连接GitHub

  2. 注册 GitHub 账号:GitHub 官网


一、创建 GitHub 仓库

  1. 登录 GitHub 官网。

  2. 点击右上角的 +,选择 New repository(新建仓库)。

    在这里插入图片描述

  3. 填写 仓库名称(Repository name),可选填写 描述(Description)。

  4. 选择仓库可见性:

    • Public(公开):所有人都能看到该仓库。
    • Private(私有):只有你和你授权的用户能访问。
  5. 不要勾选 Initialize this repository with a README,否则后续 git push 可能会遇到冲突。

在这里插入图片描述

本图出自 Github如何上传项目(超详细小白教程) 四、Github的上传:第二步

  1. 点击 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

  1. 运行以下命令复制 SSH Key:

    cat ~/.ssh/id_rsa.pub
    
  2. 复制输出的 SSH Key,并进入 GitHub SSH Key 管理页面,点击 New SSH Key

    在这里插入图片描述

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

    在这里插入图片描述

  4. 填写 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. 添加、提交和推送代码

  1. 添加所有文件到 Git 版本控制,执行以下命令:

    git add .
    # 或者添加特定文件,例如:
    git add main.py
    
  2. 提交代码,提交时需附带说明信息:

    git commit -m "初次提交代码"
    
  3. 确认推送分支,首次推送时,需要设置 mainmaster 分支:

    # 确保主分支是 main(如果你的 GitHub 仓库默认是 master 则将 main 改为 master)
    git branch -M main  
    
  4. 推送代码到指定分支:

    git push -u origin main
    

    在这里插入图片描述

  5. 代码已成功推送至 GitHub 仓库,您可以前往 GitHub 仓库页面查看。


三、本地项目上传至 GitHub(方法二:使用 Token 认证)

1. 生成 Personal Access Token (PAT)

  1. 进入 GitHub 个人访问令牌管理页面,点击 Generate new token

    在这里插入图片描述

  2. 填写相关信息,如下图。

    在这里插入图片描述

  3. 点击 Generate token 生成 Token

    在这里插入图片描述

  4. 复制个人访问令牌并保存好,下面会用到。

    在这里插入图片描述

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. 添加、提交和推送代码

  1. 添加所有文件到 Git 版本控制,执行以下命令:

    git add .
    # 或者添加特定文件,例如:
    git add main.py
    
  2. 提交代码,提交时需附带说明信息:

    git commit -m "初次提交代码"
    
  3. 确认推送分支,首次推送时,需要设置 mainmaster 分支:

    # 确保主分支是 main(如果你的 GitHub 仓库默认是 master 则将 main 改为 master)
    git branch -M main  
    
  4. 推送代码到指定分支:

    git push -u origin main
    
  5. 输入刚才复制的 Token,点击 Sign in

    在这里插入图片描述

  6. 代码已成功推送至 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 addgit reset HEAD file.txt
撤销最近一次提交(保留更改)git reset HEAD~1
撤销最近一次提交(删除更改)git reset --hard HEAD~1

现在,您已经完全掌握了 Git 基本操作,并能顺利将代码上传到 GitHub!希望这篇教程能帮助您更好地使用 Git 进行版本控制,祝您编码愉快 🚀!

相关文章:

Git 本地项目上传 GitHub 全指南(SSH Token 两种上传方式详细讲解)

前言&#xff1a;Git 与 GitHub 的区别与联系 在学习如何将本地项目上传到 GitHub 之前&#xff0c;先来弄清楚 Git 和 GitHub 的区别以及它们之间的联系。 对比项GitGitHub定义分布式版本控制系统&#xff08;DVCS&#xff09;&#xff0c;用于本地和远程管理代码版本托管 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个身高数据&#xff0c;问最高的到最前面&#xff0c;最矮的到最后面的最短交换次数 思路分析 首先&#xff0c;如果数据有重复项&#xff0c;例如示例二中&#xff0c;最矮的数据就是最后一个出现的数据位置&#xff0c;最高的数据就是最先出现的数据位置&…...

SAP-ABAP:SAP中REPORT程序和online程序的区别对比

在SAP中&#xff0c;REPORT程序和Online程序&#xff08;通常指Dialog程序&#xff09;是两种常见的ABAP程序类型&#xff0c;它们在用途、结构和用户交互方式上有显著区别。以下是它们的详细对比&#xff1a; 1. 用途 REPORT程序Online程序主要用于数据查询、报表生成和批量数…...

Java发展史

JavaEE的由来 语言的诞生 Java的前身是Oak语言&#xff0c;其目的是搞嵌入式开发开发智能面包机 叮~~~&#x1f35e;&#x1f35e;&#x1f35e; 产品以失败告终 巅峰 网景公司需要网景浏览器打开网页&#xff0c;Oak->Java&#xff0c;进行前端开发&#xff08;相关技…...

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

小白的看课思路&#xff1a; Ollama REST API 是什么&#xff1f; 想象一下&#xff0c;你有一个智能的“盒子”&#xff08;Ollama&#xff09;&#xff0c;里面装了很多聪明的“小助手”&#xff08;语言模型&#xff09;。如果你想让这些“小助手”帮你完成一些任务&#…...

学习数据结构(10)栈和队列下+二叉树(堆)上

1.关于栈和队列的算法题 &#xff08;1&#xff09;用队列实现栈 解法一&#xff1a;&#xff08;参考代码&#xff09; 题目要求实现六个函数&#xff0c;分别是栈初始化&#xff0c;入栈&#xff0c;移除并返回栈顶元素&#xff0c;返回栈顶元素&#xff0c;判空&#xff0…...

洛谷 P3660 USACO17FEB Why Did the Cow Cross the Road III 题解

题意 有一个圆&#xff0c;圆周上按顺时针方向给出 2 n 2n 2n个点。第 i i i个点的颜色是 c o l o r i color_i colori​&#xff0c;其中数据保证 1 ≤ c o l o r i ≤ n 1\le color_i\le n 1≤colori​≤n&#xff0c;而且每种不同的颜色有且只有两个点。不存在位置重叠的点…...

【数据结构】(9) 优先级队列(堆)

一、优先级队列 优先级队列不同于队列&#xff0c;队列是先进先出&#xff0c;优先级队列是优先级最高的先出。一般有两种操作&#xff1a;返回最高优先级对象&#xff0c;添加一个新对象。 二、堆 2.1、什么是堆 堆也是一种数据结构&#xff0c;是一棵完全二叉树&#xff0c…...

如何提升爬虫获取数据的准确性?

提升爬虫获取数据的准确性是确保数据分析和后续应用有效性的关键。以下是一些经过验证的方法和最佳实践&#xff0c;可以帮助提高爬虫数据的准确性&#xff1a; 1. 数据清洗 数据清洗是提升数据准确性的重要步骤&#xff0c;主要包括去除重复数据、处理缺失值和异常值。 去除…...

Obsidian及Zotero常用的插件

Obsidian插件 Minimal Theme Settings&#xff08;Life&#xff0c;zotero&#xff09;【必需】 界面样式设置所需插件 Style Settings&#xff08;Life&#xff0c;zotero&#xff09;【必需】界面样式设置所需插件 Recent Files&#xff08;Life&#xff0c;zotero&#xf…...

闲鱼IP属地是通过电话号码吗?

在闲鱼这样的二手交易平台上&#xff0c;用户的IP属地信息对于维护交易安全、增强用户间的信任至关重要。然而&#xff0c;关于闲鱼IP属地是如何确定的&#xff0c;不少用户存在疑惑&#xff0c;尤其是它与电话号码之间是否存在关联。本文将深入探讨这一问题&#xff0c;揭示闲…...

C#多线程异步连接MySQL与SQLserver数据库

C#多线程异步连接MySQL与SQLserver数据库 一、前言二、多线程异步连接数据库代码2.1代码块2.2代码说明 参考文档 一、前言 当编写代码连接多台设备上的数据库时&#xff0c;如果采用同步逐个连接的方式&#xff0c;在网络畅通的情况下连接速度尚可&#xff0c;但当其中一台设备…...

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 方法&#xff1a; b.DataTable 结构&#xff1a; 三、S2PFileReader类的调用演示 1.使用示例 一、创作灵感 虽然MATLAB处理数据很实用&#xff0c;但是C#常用于程控仪器的控制&#xff0c…...

Spring Boot “约定大于配置”

什么是“约定大于配置”&#xff1f; “约定大于配置”是一种简化开发的设计理念。简单来说&#xff0c;就是框架默认提供了常见的配置和行为&#xff0c;开发者只需要按照约定来编写代码&#xff0c;避免了繁琐的配置&#xff0c;只在需要时进行定制和调整。这种理念在Spring…...

传输层协议TCP ( 下 )

文章目录 前言序号与确认序号超时重传RTOJacobson算法内核中超时时间的计算 滑动窗口滑动窗口延迟应答流量控制 拥塞控制慢启动拥塞避免快重传快速恢复 保活机制参考资料 前言 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是互联网最重要…...

NLP 八股 DAY1:BERT

BERT全称&#xff1a;Pre-training of deep bidirectional transformers for language understanding&#xff0c;即深度双向Transformer。 模型训练时的两个任务是预测句⼦中被掩盖的词以及判断输⼊的两个句⼦是不是上下句。在预训练 好的BERT模型后⾯根据特定任务加上相应的⽹…...

演示synchronized锁机制用法的简单Demo

演示synchronized锁机制用法的简单Demo。我们以"银行开户"场景为例&#xff1a;每个用户只能创建一个账户&#xff08;模拟类似原代码中每个用户只能有一个私有空间的限制&#xff09;。 第1步&#xff1a;创建项目结构 demo-lock ├── src/main/java/com/exampl…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...