【实践练习一】Git以及Github的使用
以前经常在同学大神那听说过Github这神器,虽敬佩久已,奈何却无缘使用。好吧,我承认,主要还是不会用,一看网站全是英文的,想想还是不要为难自己了。然而现在还是要为难自己了,趁着早上刚学完,对Github有了初步的了解和上手,那就写篇随笔记录下。
1.Gitbub官网
-
首先先注册账号密码,注册需要提供邮箱认证。这很简单,就不截图说明了。注册完登陆后找到右上角如图的符号,点击new organization。接下去按着提示说明来做接可以了。
-
创建完后,会显示如图。找到图片上的invite someone,或者people,进行邀请组员。这边邀请根据用户名,邮箱都可以。邀请完等待对方同意就可以了。不过受邀请的一方需要在邮箱确定受邀。至于在网站有没有哪可以直接确认受邀的就不知道了,反正我英语不好,早上愣是找了半天没找到。
-
接下去要将别人的代码库fork到自己小组的organization底下,这里就把https://github.com/sefzu2015/AutoCS fork到organization底下。
-
首先先点击上面链接,到要fork的代码库的页面,找到如图按钮,点击,选择要fork到自己账户下的哪个organization下面就可以了。
-
好了,上面都是一些基本的操作。接下去试试看如何将自己本地的代码托管到Github上。
2.Git for windows
- 首先,我们需要一个客户端Git工具,我用的是windows系统,所以这里就选择Git for windows。(这里不得不吐槽几句,我感觉自己只认官网下载这个是病,得治。没错,到官网下载是个好习惯,不过在官网无法下载的时候就不要死脑筋了。这软件在官网下需要FQ,╮(╯▽╰)╭我居然傻乎乎的搞了几个小时,查什么如何FQ啊,如何在官网下Git啊。我真服了自己了,最后居然还没搞定。终于受不了,找同学拷贝了一份。)
- 下载的步骤就不说了,说多了都是泪。直接看看如何使用这个工具吧,用之前先看看一些基本的命令:
- git init ------------在本地建立代码仓库。
- git add -----------添加想要提交的代码,使用commit命令前的操作。
- git commit -m "message" ----------真正去执行提交的操作。
- git push "url" -----------将提交的代码同步到Github上。
- git clone url -------------将远程版本库克隆岛本地。
- 这几个命令在今天的实践中用到的最多的,当然还有很多命令。那些命令就在后面慢慢的熟悉提高吧。
3.HelloWorld托管到Github
-
首先,登陆自己的Github账号,新建一个仓库,如图。
-
创建好后显示的页面如图,找到右下角的Https clone url,点击复制。
-
然后找到电脑HelloWorld项目的目录,打开Git bash,
-
输入命令:git clone https://github.com/sefzu2015Gsetup/HelloWorld.git来把远程代码库克隆到本地。
-
然后输入ls,即可看到HelloWorld已经克隆下来了,进入该文件夹再ls -al,可以看到
-
然后把该文件夹里的文件都复制到上一层目录去,再把该文件夹删掉即可。这里要注意,隐藏文件不要忘了,不然会死很惨的╮(╯▽╰)╭。
-
接下去就是提交跟同步了,先输入“git add .” 把HelloWorld中所有的文件添加到提交中去,当然之前在Github创建仓库时选择了.gitignore为Android,所以Android项目中不需要托管管理就会被自动忽略掉。
这里提示warning,大概的意思是LF将被替换成CRLF,这应该是因为开发所选的操作系统不一样造成的原因。
-
然后输入:git commit -m "this is the first helloworld version",将所有文件提交到本地仓库中。
这里可以发现,它提示我们要输入邮箱,跟名字。因为它需要知道是谁完成了这次的更新,跟着提示的指令输入就行了,然后再重新输入提交的命令。
-
接下去就是最后一步了,输入"git push origin master"就可以将提交的内容都同步到Github上去了。
可以看到,提示我们输入Github的账号跟密码,输入完后到Github上HelloWorld的仓库,
https://github.com/sefzu2015Gsetup/HelloWorld.git,刷新可以发现,已经把在本地创建的HelloWorld项目托管到Github上面去了。
-
到此,就算完成了。上面的步骤看着虽然很少,貌似也很简单,但只有自己动手的才知道过程有多么不容易。这么说吧,原本以为看完Git基本教程,再自己动手试试老师布置的任务,最后写这篇博客,大概半天就能完成吧。结果呢,呵呵,我只想说,还是太年轻了。╮(╯▽╰)╭居然花了我一个早上,加下午,加小半个晚上。好吧,我承认,有大半时间是浪费在了从官网下载Git。(听说,Google过几年会回归大陆了,不知道真的假的,真的就好了╮(╯▽╰)╭,省得找国外官方资源这么麻烦)
最后,推荐一个Git教程,感谢@schaepher 推荐。通俗,易懂,这教程真的非常棒。
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
4.Git小结
- 这些内容是第二天来补上的,写完博客后,在逛同学的博客以及跟同学的交流时发现,好多他们操作过程中碰到的问题,以及一些步骤我都没碰到。而且,他们的操作步骤多了很多我没有做过的,难不成把本地仓库托管到Github上还有很多种方法不成?带着些疑问,以及同学碰到的问题,我做了一些测试。
① 首先第一个疑问是:ssh
- 好多同学都有一个步骤是:ssh-keygen -t rsa -C "mail",然后还到Github做了一堆操作的。我没有这个步骤,感觉很奇怪,问了他们为什么要做那步,他们也很奇怪,为什么我没有做那步反而也能提交成功?于是,我到网上查了些资料:
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
-
可是我并没有设置啊,最后也成功把本地仓库托管到Github了啊,那设置跟没设置有什么区别吗?我有个猜想,会不会是没设置的话公开的代码库就会被熊孩子给乱改一通了啊。恩,应该是这样,我居然还越想越觉得自己很有道理,还迫不及待的要了两个同学(一个有做SSH步骤,一个没有)的远程仓库URL来做实验。结果呢,报错提示两边都没有权限修改。╮(╯▽╰)╭
-
后来上网百度了些资料才发现,自己确实是想多了,人家Github那么火,这种问题怎么可能没想到。亏自己昨天还按着作业做了一步添加队员到自己的organziation里的,当时有想过这个步骤就是为了团队合作开发的,怎么今天就没想起来呢。可是,如果不是队员的身份就不能修改远程仓库里的代码了?当然不是,Github还提供了一个fork功能。也多亏了今天的犯糊涂,不然都还不知道昨天照做的fork步骤的意义在哪。可是,SSH的问题还是没有得到解决啊,上文引用的解释里说了是防止被别人冒用,那应该就是防止账号密码被盗的情况下远程仓库被乱改的吧。毕竟不好意思找同学要账号密码。至于到底是不是这样,还是说我在多次实践的过程中,哪个步骤已经悄悄的把ssh配置好了,而我却没有注意到。具体如何,慢慢的在以后的使用学习中去探索吧。
② 第二个疑问是:git clone
-
有的同学第一步并不是把远程仓库clone到本地来的,而是直接在本地的项目文件夹下创建仓库的,最后再来提交。我尝试着他们的做法,后来发现,如果自己第一步把
git clone
换成git init
,接下去修改,add,commit,以及push的话,会报错。大概的意思是说,本地仓库跟远程仓库并没有关联在一起,所以需要多一句:git remote add origin ***
,之后再Push就可以了。对比两种方式,我到.git文件下的config文件里查看了下,发现,如果一开始用的命令是git clone
的话,config文件里文自动生成remote origin
的相应配置。而如果用的是git init
的话,config文件里则没有该项配置,所以需要手动配置。 -
好了,就这些吧,有点乱,都是想到什么写什么,慢慢学习怎么写得有条理点吧。最后就是说个小小的注意事项:在Github上创建仓库时,记得要勾选自动创建README.md文件,或者在推送本地仓库前要手动创建,否则push时会报错。
PS:第一次使用Markdown,赶快看看效果怎么样O(∩_∩)O。