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

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...