「详细教程」使用git将本地项目上传至Github仓库(MacOS为例)

news2024/12/23 18:34:36

前言:最近需要将自己的代码开源至自己的Github仓库,然而发现并没有一键上传文件夹的选项,于是参考现有教程进行了实践,成功✌️以下是详细步骤。

Tips:在文章录用之后,小伙伴们可以选择将自己的代码开源,便于同行更加方便地开展学术研究。

步骤

  • 准备工作:Github端
    • 1. 注册 Github 账号
    • 2. 新建 Github 仓库
  • 准备工作:本地端
    • 1. 安装 Git
    • 2. 创建本地项目仓库
  • 重磅!本地端&Github端联合操作
    • 1. 配置 SSH 与 git config
    • 2. 上传代码


准备工作:Github端

1. 注册 Github 账号

在 https://github.com/join 注册一个账号,已有账号的同学跳过本步骤。


2. 新建 Github 仓库

步骤一:登录Github网站,打开网址 https://github.com/,按照如下步骤操作:

在这里插入图片描述

步骤二:来到如下界面,填写相应信息,最后点击Create Repository完成Github新仓库的创建。

在这里插入图片描述

至此,Github端的准备工作就做好啦!接下来我们进入本地操作。


准备工作:本地端

1. 安装 Git

注:已安装Git的同学忽略此步骤。

在 https://git-scm.com/downloads 下载Git,Mac系统需要安装MacOS版本。

在这里插入图片描述

这里我使用第一种方法,即借助Homebrew来安装Git,所以第一步就是安装Homebrew.

步骤一:安装 homebrew。参考网址: https://brew.sh/

具体操作:打开Mac终端,运行以下命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装成功界面:
在这里插入图片描述
步骤二:安装 Git。参考网址:https://git-scm.com/download/mac

具体操作:Mac终端继续运行以下命令:

brew install git

安装后,使用git --version命令查看Git版本,输出对应版本说明安装成功,对应界面如下:
在这里插入图片描述


2. 创建本地项目仓库

步骤一:在本地项目所在路径下打开终端,或使用cd pj_path命令将终端切换至本地项目所在路径,其中pj_path为本地项目所在路径,这里我的本地项目所在的绝对路径是/Users/meilinger/Desktop/ICBICB是我的本地项目名称。

步骤二:使用git init命令初始化本地仓库,该步骤执行后,本地项目的根目录下会出现一个名为.git的隐藏文件夹。(PS:使用快捷键Command + Shift + .三键可以查看隐藏文件)
在这里插入图片描述


重磅!本地端&Github端联合操作

前面的操作中,本地端和Github端均为准备工作,二者无先后之分,下面的才是重头戏~

1. 配置 SSH 与 git config

总揽:首先在本地生成SSH key(步骤一 ➡️ 步骤三),然后在Github官网将SSH key添加至SSH key列表中(步骤四)。

步骤一:在终端输入ssh-keygen -t rsa -C email_address命令,其中email_address为注册Github时使用的邮箱。(注意⚠️:如果Github绑定了多个邮箱,这里填写主邮箱。)回车,进入下一步骤。

步骤二:输入SSH key的生成路径。我这里将SSH key的保存路径设置为/Users/meilinger/.ssh/id_rsa_ICB,可以看到,为便于记忆,将本地项目名称ICB添加至路径结尾~注意:如果直接回车,SSH key将会保存至系统提供的默认路径中(这里我的默认生成路径地址为/Users/meilinger/.ssh/id_rsa)。如果当前路径下已经存在同名key,可以选择重写与否。回车,输入密码+回车+确认密码+回车。直接回车就是没有密码。

至此,SSH key已经生成啦~

在这里插入图片描述

步骤三:在终端执行命令pbcopy < ~/.ssh/id_rsa_demo.pubSSH public key复制到剪切板,下图所示界面表示操作成功。

在这里插入图片描述

步骤四:回到Github官网,依次点击账号头像SettingsSSH and GPG keys以及New SSH key,如图。
在这里插入图片描述

点击New SSH key后系统会自动跳转至以下界面。在本界面,分别填写TitleKey字段,这里Title字段我填充的是本地项目名称,Key字段就是我们刚刚在步骤三中使用命令pbcopy < ~/.ssh/id_rsa_demo.pub复制的SSH public key. 之后点击Add SSH key完成添加操作。

在这里插入图片描述

接下来回到终端,使用命令ssh -T git@github.com验证是否添加成功,若添加成功,会出现如下界面:

在这里插入图片描述

如果终端返回 Permission denied (publickey) 字段,说明上述SSH key没有添加成功。解决方法:在终端执行命令 ssh-add ~/.ssh/id_rsa_ICB,记得换成自己的SSH key所在路径。

步骤五:配置git config. 如下图所示,在终端中,依次输入命令:

git config --global user.name github_name
git config --global user.email github_email

其中,github_name 为 Github 账号对应的名称,github_email 为Github 账号中的主邮箱,即前述步骤中使用的邮箱。

在这里插入图片描述


2. 上传代码

首先:确保此时终端当前所在路径为本地项目所在路径,即.git隐藏文件夹的上级目录。

步骤一:执行命令git add .,将本地项目中的全部文件添加至git中,命令中.的含义就是“全部文件”。
步骤二:执行命令git commit -m "description",添加项目的描述文字,命令中description就是自定义的描述文字。
步骤三:执行命令git remote add origin pj_ssh_path,其中pj_ssh_path可通过下下图的方式进行复制粘贴,比如我这里的pj_ssh_pathgit@github.com:meiling-fdu/ICB.git.

在这里插入图片描述

⚠️ PS:此步骤可能会报错“错误:远程 origin 已经存在。”,解决办法如图:

先执行命令 git remote rm origin删除已存在的远程配置,然后再执行上述命令 git remote add origin pj_ssh_path.
在这里插入图片描述

步骤四:执行命令git push -f origin master,将本地项目的文件上传至Github官网中。发现报错如下:

在这里插入图片描述

根据本篇博客的内容,我发现,是Github官网上邮箱设置的相关问题,即我们在邮箱设置页面中勾选了Keep my email addresses privateBlock command line pushes that expose my email这两个选项,如下图所示:
在这里插入图片描述

所以第一个解决方法就是取消上述两个勾选☑️。但如果我们不想取消上述设置,可通过如下方法解决:

  1. 获取Github的推荐邮箱账号。可在邮箱设置页面中的如上图所示紫色下划线位置查看。可以看到我的推荐邮箱账号为73975898+meiling-fdu@users.noreply.github.com

  2. 执行命令git config --global user.email “推荐E-mail” 重置全局用户E-mail,这里的“推荐E-mail”即为上面的推荐邮箱账号。

在终端执行命令git config --global user.email,查看全局邮箱账号是否修改成功,由下图可知,全局邮箱账号已成功修改。
在这里插入图片描述

  1. 执行命令git commit --amend --reset-author重置作者信息。输入命令回车后,进入vi编辑模式,在英文输入法下执行:wq保存并退出。(如下图)
    在这里插入图片描述

PS: 若出现如下错误,根据本篇博客,解决方法为:执行命令git stash,如下图所示:

在这里插入图片描述

上述错误全部排查完毕后,再次执行命令git push -f origin master,就可以成功上传啦!

在这里插入图片描述

至此,刷新GitHub页面,就可以看到项目已经上传成功啦!(根据本篇博客注意切换至master分支哦~)


后记:之前感觉代码托管很繁琐,一直想学但是因为不是刚需遂束之高阁。今天用起来才发现也没那么难嘛!又掌握了一项技能,果然还是“万事开头难”哇,今日收获:Just do it !


参考资料

  1. 一步一步教你如何在GitHub上上传自己的项目_github上传项目_夏雨薇安的博客-CSDN博客
  2. [Git]Mac上传已有项目到GitHub - 简书 (jianshu.com)
  3. git push origin master报错的解决方法 & 常见git命令(待更新)_王小希ww的博客-CSDN博客
  4. git使用——rebase_不能变基式拉取:您有未暂存的变更。_三番鱼的博客-CSDN博客
  5. [git报错–>! remote rejected master -> master (push declined due to email privacy restrictions)_淡淡的id的博客-CSDN博客
  6. GitHub提交Push之后发现代码在Master分支,默认main分支没有代码_github push main_java劝退师_mysql删库师的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/609577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QMessageBox信息模态对话框详细使用教程,对象创建栈和指针类型,对话框的风格样式设置,不要浪费实时间自己封装了,图文并茂,看图说话。

QMessageBox 界面设计图展示效果【1】PC端使用QMessageBoxinformation &#xff08;常规信息&#xff09;warning &#xff08;警告消息&#xff09;critical &#xff08;错误信息&#xff09;about (关于信息&#xff0c;无按钮)question &#xff08;问题信息&#xff1f;&a…

Android开发 LogDog (日志狗)V2.0.0

目录 一、简介 二、使用推荐 1、初始化LogDog 2、运行中如何更改初始化时的配置&#xff1f; 三、更改 四、新功能 1、Log过滤 2、自定义打印 3、提供占位符式打印 一、简介 LogDog V1.0 版本https://blog.csdn.net/Ym_quiet/article/details/130453232?spm1001.2014…

javascript基础二十六:JavaScript中如何实现函数缓存?有哪些应用场景?

一、是什么 函数缓存&#xff0c;就是将函数运算过的结果进行缓存 本质上就是用空间&#xff08;缓存存储&#xff09;换时间&#xff08;计算过程&#xff09; 常用于缓存数据计算结果和缓存对象 const add (a,b) > ab; const calc memoize(add); // 函数缓存 calc(1…

Linux邮件发送教程:深入了解mail命令

前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓月&#xff0c;本文是专栏【linux基本功-基础命令实战】的第59篇文章。 专栏地址&#xff1a;[linux基本功-基础命令专栏] &#xff0c; 此专栏是沐风晓月对Linux常用命令的汇总&#xff0c;希望能够加深自己的印象&am…

Java进行公众号开发的常见使用场景及解决方案

Java进行公众号开发的常见使用场景解决方案 文章简介 本文总结了本人在开发过程中遇到的有关于微信开发的诸多常见功能&#xff0c;这些问题在网上找都是零散的回答&#xff0c;所以再此总结一下&#xff0c;方便后续开发。如果有错误之处&#xff0c;还望批评指出&#xff0…

使用Kaggle GPU资源免费体验Stable Diffusion开源项目

使用Kaggle GPU资源免费体验Stable Diffusion开源项目 前言相关介绍Stable Diffusion Kaggle开源项目编辑并复制项目运行项目打开网址&#xff0c;即可体验 参考 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可点击进入Y…

javascript基础二十五:说说你对函数式编程的理解?优缺点?

一、是什么 函数式编程是一种"编程范式"&#xff08;programming paradigm&#xff09;&#xff0c;一种编写程序的方法论 主要的编程范式有三种&#xff1a;命令式编程&#xff0c;声明式编程和函数式编程 相比命令式编程&#xff0c;函数式编程更加强调程序执行…

C SS复习笔记

1.img标签 img的src属性是图片显示不出来时显示的文字 ing的title属性是光标放到图片上&#xff0c;提示的文字 2.a标签 a标签的target属性表示打开窗口的方式&#xff0c;默认的值是_self表示当前窗口的打开页面&#xff0c;_blank表示新窗口打开页面。 a标签的href链接分…

2023.06.04 学习周报

文章目录 摘要文献阅读1.题目2.背景3.方案4.本文贡献5.模型5.1 图注意力形式5.2 superGAT 6.实验7.结论 有限元数学建模深度学习1.高斯扩散2.原理 总结 摘要 This week, I read a computer science about GNN. At present, the attention mechanism of graph neural network i…

Go Web下GORM框架使用(二)

〇、前言 本文将会写一个前后端分离的的小项目&#xff0c;本文将会只实现后端。 一、定义全局变量与模型 本文需要一个数据库&#xff0c;因此将这个数据库定义为全局变量将会非常轻松。 var (DB *gorm.DB )type Todo struct {ID int json:"id"Title s…

【C#图解教程】第六章 方法(下)

输出参数 函数的输出只有返回值有时不太够&#xff0c;此时需要用到输出参数&#xff0c;用修饰词out声明 输出参数的要求与引用参数类似&#xff0c;需要是变量&#xff0c;此外&#xff0c;输出参数也是实参的别名&#xff0c;指向堆中同一对象。 输出参数与引用参数的不同在…

【实用篇】Elasticsearch03

文章目录 分布式搜索引擎031.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.2.1.Bucket聚合语法1.2.2.聚合结果排序1.2.3.限定聚合范围1.2.4.Metric聚合语法1.2.5.小结 1.3.RestAPI实现聚合1.3.1.API语法1.3.2.业务需求1.3.3.业务实现 2.自动补全2.1.拼音分词器2.2.自定义分词器2.3.…

【人工智能】— Support Vector Machines 支持向量机

【人工智能】— Support Vector Machines 支持向量机 支持向量机概述支持向量机支持向量机原理介绍分类间距&#xff08;Classification Margin&#xff09; 支持向量机概述 找到使间隔最大化的超平面>B1比B2更好 支持向量机 研究起因&#xff1a;如何找到最优的切分面 分…

制作酷炫可视化大屏利器--分享10种比较流行的开源免费的图表库

在开发可视化项目的过程中往往涉及到可视化图表, 多酷炫的报表, 大屏, 都用了非常多的图表, 接下来我和大家分享一些比较流行的开源免费的图表库. 分享10种比较流行的开源免费的图表库 1&#xff0c;Frappe Charts2&#xff0c;Recharts3&#xff0c;Protovis4&#xff0c;dygr…

Docker快速入门(分分钟钟就能上手)

Docker的思想 集装箱&#xff1a;会将所有需要的内容放到不同的集装箱中&#xff0c;谁需要这些环境就直接拿到这个集装箱就可以了。标准化&#xff1a; 运输的标准化&#xff1a;Docker有一个码头&#xff0c;所有上传的集装箱都放在了这个码头上&#xff0c;当谁需要某一个环…

设计模式-01.设计思想

设计思想 此系列文章非本人原创&#xff0c;是学习笔记。 下面讲一些常见的设计思想 基于接口而非实现编程 这个原则非常重要&#xff0c;是一种非常有效的提高代码质量的手段&#xff0c;在平时的开发中特别经常被用到。 如何解读原则中的“接口”二字&#xff1f; “基于…

python面向对象操作1(速通版)

目录 一、高阶函数 1.lambda函数 2.lambda函数注意事项 3.map用法 4.map和lambda函数配合 二、reduce函数 1.reduce基本应用 2.reduce和匿名函数配合 三、filter()函数 1.简单用法 2.高阶应用 四、列表排列方法&#xff08;key和lambda问题&#xff09; 1.正常排序…

Node服务器和常见模块

1 Node服务器开发 2 fs模块-文件系统 3 event模块-事件处理 4 认识二进制和buffer 5 Buffer的创建方式 6 Buffer的源码解析 node 的fs模块操作&#xff1a; 这里主要讲node如何进行读取文件&#xff0c;操作文件。服务器该有的操作node都有。 node的fs读取文本文件内容的d…

自定义starter

第一步、创建 xxx-spring-boot-starter 的spring Initializr模块 第二步、删除不需要的内容&#xff08;启动类、除下面spring-boot-starter的其它依赖&#xff0c;maven编译插件&#xff09; <dependency><groupId>org.springframework.boot</groupId><…

linux理解软硬链接

软硬连接 在linux下面链接文件有两种&#xff0c;一种是类似window的快捷方式功能的文件&#xff0c;可以让你快速链接到目标文件&#xff08;或目录&#xff09;&#xff0c;叫做软链接&#xff0c;另一种则是通过文件系统的inode链接来产生新的文件名&#xff0c;而不是产生…