Ubuntu 环境如何上传项目到 GitHub 网站?

搬运自本人 CSDN 博客:https://blog.csdn.net/ajianyingxiaoqinghan/article/details/70544159


Ubuntu环境如何上传项目到GitHub网站?

之前笔者写了一篇《CMake学习笔记(三)——以笔者的Robosub竞赛为例》的博客。博客中笔者以自己的项目为例,解释整个项目cmake流程,但是当时笔者并没有贴出自己的项目源码。
GitHub 是一个面向开源及私有软件项目的托管平台,注册用户都是来自世界各地的大神级别人物。笔者作为小渣渣也想在里面学习学习,所以就把项目源码托管在GitHub上吧~
由于写这篇博客时,笔者已经申请了账号,且已经上传了几个项目尝试。所以博客中也许会有某些操作略过,但笔者会给出其他参考链接。

笔者的工作环境

  • 操作系统:Ubuntu 14.04 LTS 64位

一. 注册账号

首先进入GitHub的官网,注册GitHub账户。
GitHub官网网址:https://github.com/

笔者已经注册了一个GitHub账号,且注册流程十分简单,所以不再赘述。笔者的GitHub主界面如下所示:


GitHub主界面

二. 设置SSH Key

由于本地的Git仓库与GitHub网站仓库之间的传输是通过SSH加密的,所以这时候需要设置SSH keys。
笔者本来有两个SSH Keys,但为了写博客就把它删了,准备再重新设置一个SSH Key。
设置SSH Key的参考网址:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000

1. 创建SSH Key

首先我们在用户主目录下看是否存在.ssh目录。以笔者为例,笔者使用的是Ubuntu系统,当前用户的主目录是<code>/home/grq</code>,所以此时我们需要查找路径<code>/home/grq/.ssh</code>是否存在。
如果存在,查看是否存在<code>id_rsa</code>与<code>id_rsa.pub</code>两个文件是否存在。如果也存在,就可以调到下一步;
如果不存在,便打开终端,输入自己的邮箱地址,创建SSH Key。

ssh-keygen -t rsa -C "youremail@example.com"

其中,"youremail@example.com"是你的邮件地址,<code>-C</code>的字母为大写。后面可以一直回车。中间会让你输入密码,但整个SSH Key对笔者来说保密意义不大,所以不需要设置。SSH Key创建成功后,在笔者的主目录下就会生成<code>/home/grq/.ssh</code>文件夹,里面也会生成文件<code>id_rsa</code>与<code>id_rsa.pub</code>,它们是SSH Key的秘钥对。其中<code>id_rsa</code>是私钥,不能泄露,<code>id_rsa.pub</code>是公钥,可以告诉其他人。
终端设置完成后的界面如图所示:

终端设置完成

2. 在GitHub端设置SSH Key

登录GitHub,点击右上角头像,Settings -> Personal settings -> SSH and GPG keys。在SSH Keys标签右方点击New SSH Key。
弹出两个文本框。其中的Title,可以随意命名。笔者此处随便命名为grq-Ubuntu。
另一个Key文本框,需要输入刚刚生成的<code>id_rsa.pub</code>文件中的内容。粘贴后点击<code>Add SSH Key</code>,即可生成SSH Key。如图所示:

生成 SSH Key

三. 上传项目

笔者查阅资料,有网友得出总结,可以将git分为四部分:一部分是自己的本机文件,一部分是缓存区,一个是本地仓库,一个是服务器仓库。当用户在本机修改了文件后,就应该使用<code>git add xx</code>指令将修改保存到缓存区,然后再用<code>git commit yy</code>指令将推送从缓存区修改到本地仓库中,最后使用<code>git push</code>将本地仓库中的修改推送到服务器仓库中。
下面按照流程讲解。

1. 准备上传

首先,我们需要确定的是Ubuntu中是否安装Git。
打开终端,输入指令<code>git</code>,如果返回了一大串提示信息,那么就已经安装了。
如果没有安装,就输入以下指令:

sudo apt-get install git

安装完毕后,终端进入我们需要上传项目所在的文件夹。使用git的初始化命令:

git init

这个命令可以把当前目录变成git可以管理的仓库。
现在我们就可以进行git操作将项目上传到GitHub了。

2. 添加需要上传的文件

上传之前,我们需要添加上传的文件。这里使用到的指令是:

git add file

其中,file是我们想要添加的文件。这里笔者想要将整个文件夹内容都添加进去,所以此处笔者输入的指令如下:

git add ./

3. 检查当前git状态

然后我们可以使用git指令,查看当前git的状态。指令如下:

git status

该指令可以查看当前的分支以及添加文件的情况。
由于笔者之前已经上传过该项目,此次属于更新该项目,所以输入该指令后的状态如下图所示:


更新项目,提交变更

现在可知,笔者当前的信息就是在master分支上。

4. commit推送

笔者此处使用指令,将缓存区的修改提交到本地仓库。笔者的指令如下:

git commit -m "Update Readme Files(Version of Chinese & English)"

-m后的内容是笔者添加的描述。由于笔者这次是更新该仓库,更新内容是中文与英文的Readme文件,所以就写了上述的备注。

如果输入commit指令后,出现错误:

** Please tell me who you are.
Run
  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'XXX@YYY.(none)')

这时候的解决办法是,在进行<code>git add ./</code>操作的路径中,实际上已经生成了一个隐藏的.git文件夹。在该路径下输入指令<code>cd ./.git</code>便进入.git文件夹,使用gedit或vim打开文件config,在文件末尾加入内容:

[user]
 email = your email
 name = your name

里面的your email, your name随便填上就行,笔者是直接填的GitHub账号中的Email和用户名。填好后如图所示:


config 文件

这时候再进行commit指令,应该就可以成功了。完成后就可以等待提交了。

5. 添加文件到远程库

上传文件到仓库之前,我们需要拥有一个仓库。由于笔者这里已经构建了仓库,所以只给出在自己的GitHub账号下构建仓库的教程链接如下:
http://www.cnblogs.com/keZhenxu94/p/5288488.html
构建仓库结束后,我们需要得到该仓库的SSH Key才能向其中上传内容。进入刚才新建的仓库,点击Clone or download,在弹出的Clone with SSH框中点击小按钮Copy to clipboard。如下图所示:

Clone with SSH

首先我们应该添加一个远程仓库,命名为origin,这样随后才可以添加文件到远程库中。指令如下:

git remote add origin git@github.com:upcAutoLang/Framework-for-NACIT2017.git

如果此时出现错误:fatal: remote origin already exists. 这时候说明远程仓库已经存在。这时候需要先删除origin仓库,然后再重新添加该远程仓库。指令如下:

git remote rm origin
git remote add origin git@github.com:upcAutoLang/Framework-for-NACIT2017.git

这时候应该就应该不会报错了。然后我们添加文件到远程库。笔者使用的指令如下:

git remote set-url origin git@github.com:upcAutoLang/Framework-for-NACIT2017.git

其中,<code>git@github.com:upcAutoLang/Framework-for-NACIT2017.git</code>即为笔者在github服务器仓库中复制的内容。
然后,笔者使用push指令进行上传。如果该仓库是第一次进行push,则指令如下:

git push origin master

但笔者之前已经传输过,此处只是更新,所以只需输入:

git push

之后会弹出问题,询问是否继续?输入yes回车即可。如图所示:


弹出询问问题

push结束后,在GitHub端的对应仓库上刷新一下,内容就改变了。说明项目内容已经上传成功了~


项目内容上传成功

6. 某些push错误的情况

有时候对新建的仓库进行push操作,会出现上传失败的情况。
通常出现这种情况的原因,是新建的仓库往往会有一个文件Readme.md文件,而本地仓库中没有这个文件,也就是说本地仓库与服务器端仓库没有实现同步。所以将这个Readme.md文件clone到本地,然后再commit提交,应该就没有问题了。

或者在 push 操作的时候遇到下述错误:
<code>error: 无法推送一些引用到 'git@github.com:upcAutoLang/BackgroundSplit-OpenCV.git'
提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
提示:(如 'git pull ...')。
提示:详见 'git push --help' 中的 'Note about fast-forwards' 小节。
</code>
出现该情况的原因可能是之前在上传时创建的.git文件被删除或者修改,也可能是其他人在 Github 上提交过代码。

解决方案:
1. 强行上传:

git push -u origin +master

2. 尽量先同步 Github 上的代码到本地,在上面更改之后再上传。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342