这段时间在博客园多了很多关于GitHub的文章,但是我的确没怎么看懂。不过这几天简单的看了写资料,亲身操作之后也有了一点体会。这算是最简单的GitHub入门了吧,基本全是鼠标操作。这也是这几天的总结,和大家共同分享。文中如果有什么错误或者不恰当的地方,还希望大家及时指正。关于GitHub的内容,主要参考了GotGitHub。
1. 背景和目的
去年的时候,有个老师推荐使用GitHub来管理自己的代码。这段时间博客园的首页上多了很多关于GitHub的介绍。半年多来,我对我做的绝大多数事情都做了详细的记录,希望能把自己的工作保留下来。对于工作本身的一些经验,采取文档的形式,完成之后修改不是那么的频繁,但是代码不一样。很多时候,我的确发现需要好好整理自己的代码了,比如说
上图是一个失败的例子,文件夹内的多数文件具有类似的功能,但是又有一些差别。好吧,实际上就是当我要找某段代码的时候,我自己都找不到了……发到首页上的GitHub介绍都比较高级,说实话我不怎么看得懂。所以本文的目的,就是利用我这几天的经验,最简单的介绍一下GitHub for Windows(https://windows.github.com/)的应用。(在写这一段的时候,发现博客园还是有很基础的介绍的,比如http://www.cnblogs.com/Yiutto/p/4665012.html)
2. Git和GitHub
“GitHub(网址 https://github.com/)是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。”(http://www.worldhello.net/gotgithub/01-explore-github/010-what-is-github.html)
Git是一个分布式的版本控制系统。版本控制,对于有且仅有我一个人参与的项目而言,需求实际上并不是很多。我需要保存我的代码并可以便捷的查看,能够随时的修改而不受网络限制。可以根据我的修改即使的更新代码,并且提供更新前后的对比,更新说明记录,同时根据更新记录,可以查找修改之前的代码。除了代码内的注释,我还希望能够对整个项目做具体的说明,这不仅有利于别人了解这是什么,也时时刻刻提醒自己这是什么,还有什么需要修改的地方。这些需求都被轻松的满足了,当然,Git的魅力远不在此。
GotGitHub中有简洁形象的关于Git的描述。对于一个你的开源的项目,参与者不仅仅会是你本身,还有和你一起的核心开发人员和希望加入的外围开发人员。而你可能也会希望加入别人的开源项目。Git是如何协调这几类人员之间的关系?我写的肯定没有这里的好,所以去这里看吧……
3. 建立repository
Repository: 版本库
账号注册和软件安装之类的不谈(注意:账号注册之后,显示在你的版本库之前的名字是改不掉的),创建一个新版本库是第一步(也可以Fork别人的版本库,这个先不谈,因为我没有做过)。网页的操作都很简单,还有详尽的帮助,这一过程在网页上完成就可以了。只需要指定名称,描述(可选),勾选上README,是否添加gitignore(不太懂,见Ignoring files),添加合适的license。点击按钮就可以创建版本库了。
运行GitHub for Widnows,登录你的GitHub账号,点击左上角的 ' ' ,选择Clone可以复制云端的版本库到本地的指定位置。
新建立的版本库中只可能有README和Ignoring 文件。版本库中的任何改变(文件添加、删除和修改)都会体现在Changes中,文件名后的绿色表示添加内容,红色表示删除内容。完成修改后,写上本次Commit的标题和内容,可以点击Commit按钮上传修改。如果在其他地方对版本库有修改,则需要先点击同步按钮获取最新版本库之后,才能够上传修改。
任何的Commit都会记录在History中,可以在此处查看提交的内容,对比提交前后的变化,甚至可以撤销修改(通过重新提交修改的方式)。下图分别是Changes(左)和History(右)的显示。
4. README和其他说明
回到第二节的需求,其中有一条是“除了代码内的注释,我还希望能够对整个项目做具体的说明,这不仅有利于别人了解这是什么,也时时刻刻提醒自己这是什么,还有什么需要修改的地方”。
第三节中初始化的README起到了这个作用,README会显示在版本库的下方(网页),如
.md后缀的README文件内容采用Markdown,Markdown基本语法见第五节。打开README.md文件,编辑即可,不放心的话还可以找一个Markdown编辑器(参考),或者选择一款在线编辑器。GitHub还提供了其他的方式来展现整个版本库的内容、功能。
简单的操作就能制作精美的项目主页,在版本库的设置中,点击'Launch automatic page generator',利用Markdown标记内容,之后选择合适的模板就可以生成精美的项目主页,项目主页域名为<user-id>.github.io/<project-name>,譬如http://caowenhui.github.io/LDPCC/。
这里我直接将README中的内容添加到了项目主页上,效果如下图(效果取决于选择的模板,自己写也可以)
在网页创建了项目主要之后,在GitHub for Windows 下同步后会发现,版本库多了一个名为gh-pages的分支。当我们建立一个新的版本库的时候,默认会创建一个master分支。那么分支是用来干什么的呢?使用git 新建分支以及管理分支提到了这个问题,如果想测试某个功能,又不想改变主分支的内容,那么可以创建一个新的分支,这个分支会复制主分支的全部内容。
而gh-pages是一个特殊的分支,gh-pages不包含主分支内容,在gh-pages中添加静态网页后,GitHub会自动调用该分支内的内容。
5. Markdown基本语法
通常来说,撰写文档的时候会用到的基本格式、内容包括以下几种
- 标题和标题级别
- 列表和有序列表
- 超链接
- 图片
下面将简单介绍基本语法,更多内容可参考http://www.appinn.com/markdown/#p。
标题通常采用以下方式,即通过#标识这是标题,通过#的个数标识这是几级标题
代码语言:javascript复制# 这是一级标题
## 这是二级标题
###### 这是六级标题
列表才有*, ,-标识,如
代码语言:javascript复制* Red
* Green
* Blue
有序列表通过数字加英文的 '.' 标识,注意内容之前需要加上一个空格(有序列表的数字不一定需要有序,但是建议这样做)
代码语言:javascript复制1. Bird
2. McHale
3. Parish
图片和超链接具有相同的形式(图片之前有一 '!'),即[文字](链接)的形式。
代码语言:javascript复制超链接表示形式:[博客](http://www.cnblogs.com/sea-wind2)
图片表示形式 : ![误码率曲线](/BER.png)
6. 其他
最简单的使用说明,功能远没有结束。其中最重要的一点是如何和他人共同工作?这个他人,可能指团队内的合作者,或是其他对这个项目感兴趣其他程序员,还可能是不精通编程但对这个项目有一些见解的人。GitHub上的Fork,Pull,Issue等,这里就先不做说明了,因为我也没有什么体会。