你的位置:首页 > Java教程

[Java教程]Git基础教程


    最近的一个项目,客户方要求版本控制工具用Git,对之前用TortoiseSVN的码农们多少对Git及Github有所耳闻,说到Github不得不提2013年在伟大天朝发生的一件事情,某位攻城狮写了个12306的抢票软件,引用了Github网站上的一个库,结果导致Github网站崩溃,记得当天看到这个新闻我着实笑了一天。

 

前世今生

    Git是谁开发的?为什么要问这个问题,天朝的我们只管用软件就是了管谁开发干啥,好了别急,请听我一一道来。Git是由李纳斯·托沃兹(Linus Torvalds),这个英文名还是查渡娘找到的,英语好难呀!大伙儿有没有发现这个Linus和Linux(Server操作系统)只有一词之隔,逻辑好的童鞋肯定推论出来了这个Linus和Linux一定有什么联系,没错他就是“Linux之父”,你们有没有发现很多产品的系列总搞个什么什么X,比如Mac OS X、ThinkPad X系列、索尼 X系列……总之各种X,还有两个X的,当然这个你们懂得。还好是放在JavaScript社区,要是放在Linux社区岂不是会被鄙视死,连他都不认识。这里是有一个故事的,他为何能够写出Git,是为了维护Linux内核源码,最开始是由XXX公司(好吧!又用到X了)免费授权提供版本控制软件,几年后那个XXX公司却要收费了,利纳斯很穷的,搞开源能有什么钱,买不起呀!(当然这些只是调侃)于是他自己写了一个版本控制软件,这个软件就叫Git,我目测Git火了后那个XXX公司也得关门了。其实我想说的是一个人一生搞出一件伟大的事情就已经很不错了,但是这个人竟然搞出了另一个伟大的事情,实在让人佩服不已!

    Git和Github有什么区别?通俗点儿讲,Git是就是单纯的C/S软件,而Github是一个代码托管网站它是一个B/S结构,这是本质的区别。当然我们可以通过用Git将我们的代码放在Github网站上托管,这可和Java和JavaScript区别不一样。Git和Github是有联系的,而Java和JavaScript半毛钱关系都没有。

 

基本技能

在此撸主提供两个Git软件,一个是msysgit,地址http://msysgit.github.io/ 另一个是Github官网(地址https://github.com/)提供的客户端,这两个软件分别对应一个GUI程序,一个终端命令程序,如图:

是Github客户端,安装完msysgit后鼠标右键2

本文就以Github来演示,其实这两个软件几乎无差别,除界面差别外。

 

1.我首先在Github网站上创建一个项目名称为test仓库,在此也推荐大家注册自己的Github账号,这个程序员必需的,就好比电脑是程序员必需的,如下图:

步骤一:创建一个仓库

3

步骤二:仓库描述

4

步骤三:创建成功,我们Copy仓库地址,有ssh和https两种方式,这里我就只讲https方式

6

代码捡出(checkout)之git clone

注:这里我就只介绍windows环境下的命令方式,实在有些遗憾没有在Liunx或OS X环境,关键是找不到比较优秀的OS X下写博客的工具,如果园友们有推荐的工具,在此不胜感激。

打开Git Shell,切换到工作目录(我的工作目录在C:\A-MyWorkSpace),执行命令:cd C:\A-MyWorkSpace7

 

代码捡出,执行命令:git clone https://github.com/everyding/test.git 这个链接是从步骤三中Copy出来的

8

 

执行完后,我们工作目录下就会多出一个test目录,默认这个目录名称和我们Github上创建的项目名称一致,当然假如你希望捡出后的根目录不想叫test,想叫test2,你可以在clone命令后添加一个参数,这个参数就是我们捡出后根目录名称,个人觉得这个命令实用性比较强。执行命令:git clone https://github.com/everyding/test.git test2 执行完成后,我们就看到工作目录下又捡出了一个test2的项目。

 

 

添加文件到缓存之git add

我们在test根目录下,新建一个note.txt文件,然后写入一段文本:“Hello Github!”,执行命令:git add note.txt这其实就是Git的一种机制,它有个缓存的概念,就相当于是一个记录工作目录下所有文件的日志。

9

 

查看你的文件在工作目录下与缓存的状态之git status

执行命令:git status 查看工作目录下的文件与缓存区的状态信息,从图中我们看到添加了一个新文件note.txt:

10

 

记录缓存快照之git commit

执行命令:git commit –m “创建一个note.txt文件” 上述 git add其实就是写入缓存,而 git commit代表实际存储缓存,需要描述存储缓存的意义,这就是个快照。 

11

当然它报了个警告,应该是对中文支持不是很好,这个理论上是支持中文的,肯定需要配置什么,这个园友们可以去找渡娘。这时候我们再次查看工作目录与缓存状态,执行命令:git status 它会告诉我们“一个干净的工作目录”,如图:

12

 

将工作目录缓存推送到远程仓库之git push

上述命令只是将我们的操作提交到缓存区了,那么怎么同步到我的Github仓库呢?执行命令:git push 默认被推送到master主分支上了:

13

我们再看下远程Github仓库,就多了一个note.txt文件,并且还有快照信息及提交次数加1,至此我们第一个提交就已经完成。

14

 

更新代码(update)之git pull

切换到工作目录test2下,这个时候我们发现该工作区还是之前的文件,我们怎么与Github同步呢?执行命令:git pull

15

这个时候我们的工作目录test2下就多了一个note.txt文件。

 

总结

    用过SVN的童鞋,用Git很容易上手,无非就是多了一个缓存区。本篇写给项目团队的童鞋,希望对大家有所帮助,另外有写得不正确或者个人理解歧意,也请园友拍砖!在此感谢大家!