“git?那是什么玩意儿?”一周之前,你要是这么问我什么是git?上面便是我的回答。
在进入thoughtworks之前,对于git,我是一无所知。然而,胡老师的一堂课,向我开启了git的大门。而git,也开始进入了我的生活。
后来,我特意查过git这个东西是怎么来的,原来呀,在早期的时候,linux系统虽然是开源的,但一直是由它的创始者Linux本人收集全世界热心志愿者的代码,自己手工整合上去的。可是随着Linux系统的日益壮大,仅仅靠一个人的力量,已经难以维持庞大的代码库管理了,而且社区的兄弟们也不满意啊,凭什么只由你一个人来管理!我们不服!!!迫于舆论的压力,Linus最终选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。
本来是一派大好河山,大家一片和谐的使用,可是到了2005年,由于社区兄弟们牛人聚集,人才辈出,有些人就动了歪脑筋,开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。
这可咋整?Linus带领众兄弟们给BitMover公司道个歉,低三下四的继续用?门都没有!Linus这么自恋,要他低头,可是太难了。不服输的他花了两周的时间,自己用C语言写了一个版本控制系统,这,就是赫赫有名的Git!什么叫牛逼,大家自己体会吧。
Git就是这么横空出世了,如果不是当年BitMover公司收回了之前的系统使用权,也许我们现在就见不到Git了。谢谢BitMover。
了解完了Git的来历后,我便开始真正的走入了Git的世界。Try-Git,这是老师给我们的第一个学习Git的网站,遗憾的是,英文网站-_-!跟着教程走了一遍,呃。。。学的一知半解的,直到老师给了我们中文版的网址,我才真正学会了Git的基本使用。那么接下来,就给大家分享一下我的学习Git的经验。
在通过git config --global user.name "tom" git config --global user.email tom@outlook.com两条用户配置以及git config --global core.editor atom配置好编辑器之后,就可以进行初步的Git操作了。
首先,我们要做的,是初始化Git库,使用到的指令是git init。当我们输入这个指令之后,系统会在你的目录下创建一个.git的隐藏目录。然后,输入git status指令,我们可以查看当前Git的状态。
此时,因为没有任何东西添加进去,所以显示的是没有任何东西,此时,我们可以往库里添加一点东西,用git add demo 命令,我们可以添加一个名叫demo的文件进去,只不过,此时的demo文件还只是在暂存区。接下来,我们可以使用git commit -m "my first commit" 来把文件提交到本地的Git库中,引号里面可以写一些关于这次版本变更的描述信息。提交上去之后,假如你想看看你之前都做了哪些修改,我们可以使用git log命令,来看我们的git日志。
接下来,就是要把本地的git库里的东西添加到远程仓库了,我们可以用到这个指令: git remote add origin https://github.com.git,URL里面你可以写自己的GitHub地址。此时,push命令已经准备好要把commit推送到哪里了,让我们输入git push -u origin master这个命令吧。输入完成?现在点下回车,我们的demo文件,就被提交到GitHub上面供所有人使用了。
要是过了一段时间,有一些人加入了我的GitHub工程,并对我的代码进行了修改提交,我们可以检查并拉取远程Git库中的更改,输入git pull origin master看一下吧。诶?他们都做了什么修改?我怎么知道呢?输入git diff HEAD ,你想了解的都有了。假如你想看看暂存区的改变,一样可以使用diff命令,让我们输入git diff --staged 来看一下喽。假如不想要暂存区里的东西的话,git reset 命令,可以帮我们解决困扰。想回到之前的状态吗?用git checkout -- <target>命令,熟悉的东西又回来了。
现在,让我们来研究以下分支吧。假如我们正在研究一种功能,或者修复bug时,通常会创建一个分支,当完成后,再把这个分支合并到主分支上。git branch clean_up,可以帮助你创建一个分支。然后输入git checkout clean_up切换到这个分支上,并进行你想要的操作。接下来,输入git checkout master回到主分支。然后就是合并了,用git merge clean_up来合并他们吧。
合体之后,原来的clean_up分支就可以不要了,输入git branch -d clean_up来删除吧。最后最后的最后,就是提交了。来吧,git push,将你的成果推送上去吧。
到此,今天的Git小课堂,就结束了,我也初步掌握了Git的一些基本的用法,接下来,就要勤加练习,灵活运用Git了。