适合学生党食用的简单向git教程!!!!(二)

来源:互联网 发布:linux除了vim 编辑:程序博客网 时间:2024/05/01 14:49

开场

好的,距离第一篇文章,已经隔了超级久了(不知道的还以为我已经狗带了),作为一个喜爱git的程序员,看了前一篇文章,之后,肯定已经对git做到本地的熟练使用了~(上篇中只介绍了最基本的功能,其实好玩的还有很多,可以自行摸索)

在本篇中,将会着重介绍git与开源社区Github之间的的密切关系,以及如何使用Github管理自己的代码~

要使用Github,你得先了解它:

在这个世界上有个叫GitHub的神奇的网站,从名字就可以看出,这个网站就是提供Git仓库托管服务的,我们可以免费获得Git远程仓库。

当然,不想用Github的话,你也可以搭建属于你自己的git服务器,不过对我们学生党来说,有点小题大做了~

Git上托管了成千上万的代码,许多大名鼎鼎的开源项目都存放在Github上,能把自己的代码托管到Github上,感觉就能和dalao们一起同台竞技了呢_(:з)∠)_

注册GitHub账号

但在那之前,我们需要在Github上注册一个账号:
看下图:
这里写图片描述
这里写图片描述
这些对各位的英文水平有一丢丢的需求,不过肯定都是小case啦:)

ok,接下来我们开始注册账号balabala……
这里写图片描述

……账号注册完成(此处省略几百字),这里我以我自己的账号为例,现在点击sign in登陆吧~~:)

创建github仓库

进去之后的界面应该是这样的:
这里写图片描述
图中圆圈部分显示的就是你所拥有的仓库(目前你应该还没有),我这里已经在以前建立或者fork过了一些仓库,所以是有显示的(仓库为什么打码?因为我比较害羞…)

现在,你可以在github上直接创建你的仓库,为了方便以后和本地的仓库关联,仓库的名字要和本地的相同。而这两个仓库将会在接下来进行远程同步,话不多说,直接上图:
这里写图片描述

点击New repository新建仓库,接下来填写一些必要的数据,分别是仓库名、仓库的Description,仓库的属性(公共还是私有)、生成一个README(描述你的仓库的内容, 当然是要你自己写啦啦啦啦!!不过这里我们先不勾选,不然会导致一些问题,什么问题下面会讲),

这里写图片描述

ok,最后我们在本地创建一个仓库,操作步骤基本和上一篇相同(再次提醒,注意你的仓库名字一致性哦~)。

关联本地仓库和远程仓库

接下来是本章的重点

第1步:创建SSH Key。在用户主目录下(就是C盘下名为Users或者用户文件夹),看看有没有“.ssh”这个文件夹,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。(为了方便演示已经某些个人原因,我把自己的key都删了~)
如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key(ok,我想说的是,这里我假定大家都是没有的~):

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

把邮件地址换成你自己的邮件地址(或者别的,你开心就好,对吧),然后一路回车,很方便,这个key是可以设置密码的,但是我们不从事机密活动的话,应该不需要_(:з)∠)_,做完这一切,就像下面这样:
这里写图片描述

ok,key已经自己生成好了,保存的位置就在用户主目录下,图上划红线的地方(路径都给了,不可能找不到吧:P)

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。这两个文件长的是这个样子的:
这里写图片描述

第2步:让我们回到原来登陆后进入的页面,点击右上角账户头像旁边的小三角,选择settings,就下这样:
这里写图片描述

接着我们进入设置页面,选择SSH and GPG keys这个选项(为了方便大家快速找准位置,这里也是直接上图啦):
这里写图片描述

然后,点“new SSH Key”,填上任意Title(最好是方便你记忆的,因为你以后可能要创建不止一个的key),在Key文本框里粘贴id_rsa.pub文件(用记事本打开该文件就行)的内容:
这里写图片描述

搞定!
现在,你在本地已经建立起了和Github的联系了(然而仓库还没有关联上)~

目前,在GitHub上的这个叫testgit仓库还是空的,如果你是首次创建仓库的话,GitHub会告诉你,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。(我之前已经创建过很多,所以不会有这个提示啦~)
效果如下:
这里写图片描述
现在,我们回到本地,在gitbush上切换到本地仓库目录下(怎么切第一章有),执行如下命令:

git remote add origin git@github.com:breavo/testgit.git

效果是这样滴:
这里写图片描述
把图中话红线的地方替换成你的帐户名和仓库就OK了,回车执行,没有错误提示。
仓库关联完成!

别忘了,github上的仓库还是空的,而我们本地的仓库却有一个 conntact_github.txt 这样的文件,现在我们想把这个文件推送到远程的仓库上。
现在,我们在gitbush中输入如下命令:

git push -u origin master

这里的master表示你现在所处的分支(分支以后再讲…也可以自行领悟,哈哈)
这样就可以把本地库的所有内容推送到远程库上了。
这里写图片描述

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

图上还出了一个Error(但是图中红字没有找对原因,其实就是我弄错了,但是懒得重新截图了_(:з)∠)_),出现这个错误是因为git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。(其实就是创建仓库时新建的readme文件啦,所以开始不让你们创建的原因就是这个~~)

这里我用了最暴力的方法,强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容

git push -f

这里写图片描述

也有别的更合适的方法可以解决,这个可以放到以后再说~

现在,我们来看一下github的仓库:
这里写图片描述

推送成功
鼓掌(啪啪啪啪啪~~)

SSH警告

当你第一次使用Git的push(clone也会)命令连接GitHub时,会得到一个警告(就上图片上那样~):

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.RSA key fingerprint is xx.xx.xx.xx.xx.Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了。
如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。(哈哈,不存在的~)

以后,只要本地作了提交,就可以通过命令(不需要-u了):

git push origin master

把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!

github本身也能够像在本地一样对仓库做一些操作,而且提供了强大的web UI。这些你都可以自行探索,或者在以后的文章(下一篇就不知道是什么时候的事了 = =。。)中了解。

照例,这里在提供一些比较实用(但是文章没有提及的命令),为什么不把这些详细的说一遍?全都告诉你了,那还有啥意思:P(其实就是懒,但是如果真的有疑问也欢迎交流)

命令 作用 git clone username@host:/path/to/repository 创建一个远程仓库的克隆版本 git pull 更新你的本地仓库至最新改动(你的远程仓库应该默认是最新的,所以平时没事多push~) git checkout 撤销你的修改

后记

其实到这里,基本就够你的在学校里的用的了,但是git强大的地方远远不止于此,我本人对于git的理解也存在很多的不足,不管怎么样,能够拥有这样一个平台,觉得是你人生道路上的一大助力,再不济也至少能省个U盘钱,哈哈哈哈哈哈哈嗝~~

真 · 后记

以后可能会涉及到的内容:

一、分支,以及版本切换,回退的各个细节。以及其他更多的git命令介绍。

二、git其实还提供了极为强大的客户端工具,诚然,命令行有着许多的好处,dalao们都喜欢使用命令行。但是,拥有一个简单快捷的git可视化工具也是极好的(我就很喜欢官方推出的desktop)

三、github都有了,你难道真的不想尝试一下多人协♂作的快感吗(大雾),真的不想和全世界的dalao来一次灵♂魂的交流吗(超级大雾)?

0 0
原创粉丝点击