前言:最近需要将自己的代码开源至自己的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/ICB
,ICB
是我的本地项目名称。
步骤二:使用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.pub
将SSH public key
复制到剪切板,下图所示界面表示操作成功。
步骤四:回到Github官网,依次点击账号头像、Settings、SSH and GPG keys以及New SSH key,如图。
点击New SSH key后系统会自动跳转至以下界面。在本界面,分别填写Title
和Key
字段,这里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_path
为git@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 private
与Block command line pushes that expose my email
这两个选项,如下图所示:
所以第一个解决方法就是取消上述两个勾选☑️。但如果我们不想取消上述设置,可通过如下方法解决:
-
获取Github的推荐邮箱账号。可在邮箱设置页面中的如上图所示紫色下划线位置查看。可以看到我的推荐邮箱账号为
73975898+meiling-fdu@users.noreply.github.com
-
执行命令
git config --global user.email “推荐E-mail”
重置全局用户E-mail,这里的“推荐E-mail”
即为上面的推荐邮箱账号。
在终端执行命令git config --global user.email
,查看全局邮箱账号是否修改成功,由下图可知,全局邮箱账号已成功修改。
- 执行命令
git commit --amend --reset-author
重置作者信息。输入命令回车后,进入vi编辑模式,在英文输入法下执行:wq
保存并退出。(如下图)
PS: 若出现如下错误,根据本篇博客,解决方法为:执行命令git stash
,如下图所示:
上述错误全部排查完毕后,再次执行命令git push -f origin master
,就可以成功上传啦!
至此,刷新GitHub页面,就可以看到项目已经上传成功啦!(根据本篇博客注意切换至master
分支哦~)
后记:之前感觉代码托管很繁琐,一直想学但是因为不是刚需遂束之高阁。今天用起来才发现也没那么难嘛!又掌握了一项技能,果然还是“万事开头难”哇,今日收获:Just do it !
参考资料
- 一步一步教你如何在GitHub上上传自己的项目_github上传项目_夏雨薇安的博客-CSDN博客
- [Git]Mac上传已有项目到GitHub - 简书 (jianshu.com)
- git push origin master报错的解决方法 & 常见git命令(待更新)_王小希ww的博客-CSDN博客
- git使用——rebase_不能变基式拉取:您有未暂存的变更。_三番鱼的博客-CSDN博客
- [git报错–>! remote rejected master -> master (push declined due to email privacy restrictions)_淡淡的id的博客-CSDN博客
- GitHub提交Push之后发现代码在Master分支,默认main分支没有代码_github push main_java劝退师_mysql删库师的博客-CSDN博客