当前位置: 首页 > 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…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...