摘自:http://my.oschina.net/u/150705/blog/191534
目前最火的版本控制软件就是Git了吧?你要是还用SVN或者CVS什么的都不好意思在圈里打招呼!前天我就遇到这种情况了,QQ上和老同学聊起自己用SVN来管理程序版本,好麻烦,当场就惨遭鄙视---“你还用SVN啊?你Out了!我们都用Git了!”好吧为了不被人鄙视,也为了可以鄙视别人,我终于也开始学Git了!
用了几天之后的感觉就是,确实好用啊!难道大家都来追捧!linus继linux之后又造福了人类一把!就是这个东西因为模式和之前的版本控制软件略有不同,所以入门上稍许有点难度,好吧不废话了,讲讲自己的心得体会吧!
首先不得不讲一下,需要分清git和github这是两个不同的东西,类似于linux和redhat,前者是开源的项目,后者则是利用这个开源的项目提供服务的服务商。github是一个使用git来托管代码的网站,有两种托管方式,一种是公开的,任何人都可以下载和上传代码,另一种是私人的只有建立者制定的人才可以下载或上传代码,私人的只有交钱才能用。
国内类似github的服务现在也冒出来不少,我用的是git@OSC ,这个的好处是无论哪种代码都是免费的,当然以后会怎样就不清楚了,目前使用中发现github的速度明显不如git@OSC ,看来前者还是不接地气啊。
因为这两个比较有代表性,后面我的使用基本就以这两个为例了。
操作系统自然是windows,用linux开发的都是大牛也用不着我来教,我的是win7,但winxp应该区别不大。
首先,你应该在你的电脑上安装msysgit和tortoisegit,前者是git的windows版,有了他就可以在你的电脑上创建工程,克隆工程什么的,后者则是大名鼎鼎的小乌龟,一个图形化的Git操作程序,用过tortoiseSVN的应该不会陌生,理论上只有前者也是完全可以使用git的,不过面对那赤裸裸的字符界面能受的了没几个吧。
这两个软件都很好安装就不多说了,假设你已经装完了,我的msysgit是1.8.4,tortoisegit是1.8.6,如果你们用的是其他版本的差别应该也不大。tortoisegit的早期版本应该在用户设置上略有不同。
第一部分 .在本地使用git(类似SVN之中自己的电脑就是服务器)
首先,讲讲怎么在自己的电脑上创建和使用git库,没错,你可以将比较安全的磁盘当做之前SVN的服务器,把库(git叫repository)放在这里,然后把另一个磁盘当做工作区。
第一步,创建repository:
先进到那个你要当库的磁盘目录下,点鼠标右键,会出现这样一个东西:
其中关于git的有五项,前两项Git GUI Here和Git Bash Here不要理会,就是调用那两个程序而已。Git Clone和TortoiseGit我们后面再说,既然是创建repository那就选择Git Create repository here吧,这时又会出现这么个东西:
简单的说把Make it Bare勾上就表示这是一个单纯的repository,写代码的工作区放在另一个地方,我们既然是要创建一个库自然是要勾上了,然后点ok,会在目录下面出现很多稀奇古怪的文件和目录,不要在意,那都是git需要的东西。
这样一个库就完成了。
第二步,创建工作区:
我们转到要做工作区的那个磁盘的目录下,然后右键选择Git Clone,出现的是这样一个东西:
URL选择之前我们创建的库的目录,directory选择工作区,也就是你要放代码的目录。其他的不用管,ok之后会出现一个.git目录,说明我们建立工作区成功了。
第三步 Add和Commit、push文件
我们在工作区的目录创建一个文件吧,比如test.c
右键点击这个文件,选TortoiseGit:
Add就是把这个文件加入到TortoiseGit的关注列表之中,不进行这一步的话,这个文件哪怕你改出花来,小乌龟也是不会管的,而你Add之后,小乌龟就会随时关注这个文件是否修改。
在目录的空白处点击右键选择TortoiseGit,也可以批量Add文件,总之玩法很多大家可以自行研究。
选择Add之后会出现一个框,点击ok就可以,然后会出现这样一个框表示Add成功,先别急着点ok,我们还要commit呢:
同时test.c的图标也变了,出来个加号,表示这个文件add成功了。
这里我们要花时间讲一下,git下文件的几种状态:
1.就是没有Add的文件,这种文件在工作区的目录下就是普通的文件,小乌龟不关注他。
2.就是Add成功的文件,用加号表示,但这个文件其实并没有保存到git的系统里,无论你怎样修改,也只是在工作区的目录下改变,git的系统里不会有这个文件的记录。
3.是commit的文件,这个文件会保存在工作区下的.git目录里(应该是吧)也就是你的本地的git系统里面,git会比较你commit前后是否修改,如果有修改会用红叉表示,否则就是一个绿色的对号。
4.是push到repository之中的文件,repository可以是你本机建立的,也可以是类似github和git@OSC这样的服务器。
好吧我们现在只是add了,这肯定不行,必须要commit才算是利用了git啊,于是我们在刚刚那个对话框点击commit,这时候会要你输入一些提示,不写任何东西是无法选择ok的,好吧我们写上0.1表示这个版本,于是小乌龟允许你点ok了:
commit之后就是这样子了,这时候我们可以继续push也可以点ok关闭,以后再push:
commit成功之后文件是这个样子滴:
push的操作和commit很类似,因为我们这个repository是建立在本机的另一个磁盘下的,所以push的过程之中不需要输入密码什么的,直接搞定,没什么可讲的。
只需要注意commit的文件是保存在工作区的目录的,而push成功的文件是保存在repository里的。
第二部分 如何利用GitHub和Git@OSC
首先,需要你有GitHub和Git@OSC的账户。创建账户的过程不多说。
然后在自己的账户下创建Repository,过程当然也是在网页上点几下,填点文字就行了,至于license和readme.md之类的东西,默认放着就好。这个创建repository的过程其实就是之前我们右键选择create repository的过程,只不过之前我们是在本机上创建,而这里是在服务器上而已,本质没啥区别。
至于项目的类型,我们先讲public,之后有时间的话我再讲private(话说github的private是要收钱的,所以我也没试过)。
创建了之后那就是下载和上传自己的代码文件了。
这就和第一部分的过程很类似了,我们进到作为工作区的目录下面,右键选择git clone:
会出现这么个东西,和之前的很类似:
区别就是这里的url我们不能像第一部分那样填写本机的目录了,而是要填写github或者Git@OSC提供给你的url,github是在每个项目的右下角这里获取:
git@OSC则是项目主页的正中间:
复制,然后粘贴到小乌龟的那个文本框里就可以,然后ok,因为我们说的是public项目,所以没有密码之类的问题,很顺利的就会clone成功。
然后我们新建一个文件,add,commit的过程都和第一部分完全相同,注意commit之后的文件也依然保存在本地,接下来我们要做的就是把commit的文件push到服务器上,操作方式是在工作区的目录空白处点击右键-》tortoiseGit-》push:
因为是push到服务器上,所以会出现这样的对话框,填写自己的账户密码即可:
之后去github和git@osc上自己的项目主页上看看吧,你的文件已经push到服务器上了!
github和git@osc使用起来基本上很简单,网上有些文章写的是需要puttygen生成公钥私钥之类的,其实完全用不着,作为public项目简单的用户密码方式就可以了。那种方式以后我有时间再写个第三部分吧。
另外还有一点,如果大家自己去尝试使用puttygen生成密钥对的话,一定要注意点了generate之后千万千万别切出去看网页什么的,那样你会发现你等了好久这个密钥对也没生成成功,其实这个东西是根据你鼠标移动的轨迹来生成的,你点了generate之后只要用鼠标在屏幕上乱画一气,几秒钟就能生成好!我第一次用的时候,点了按钮就跑去看电视了,等了几个小时回来一看进度还是0!