本文是毛豆网微课程"Git初体验“的文稿。
Git初体验
Git有什么用?
Git是Linux创造者Linus Torvalds编写的、目前人气最旺的版本控制工具。
那么版本控制是做什么的?
写代码免不了修修改改,比如经过一天的奋斗,你完成了一个”寻找最萌妹子“算法, 刚向死党炫耀,就发现选出来的居然是最萌喵星人,太没面子了,回去仔细研究一番, 发现漏了一层筛选条件,于是通宵达旦修改算法,天蒙蒙亮的时候,你发现自己的方法行不通, 需要回退到修改前的状态,换一种算法实现。但这一晚上修改了4、5个文件, 改动散布在不下十处地方,怎么把代码恢复到修改前的状态?
这个时候,是不是希望有哆啦A梦的时光飞毯,帮你回到昨天晚上?
是的,Git就是你要找的时光飞毯。
当然它的功能不止是在代码历史上跳跃,还有很多更炫酷的功能,但千里之行始于足下,让我们从最基本的功能开始吧!
用Git做简单的版本控制
Git最基本的用法是在命令行环境中通过执行Git命令的方式完成的。
比如你NB闪闪的算法保存在一个叫"zuiMeng"的文件夹里,
第一步要做的,是启动命令行环境,用cd
命令把"zuiMeng"设置为当前目录,
然后执行:git init
,这样你的"zuiMeng"目录就具备回到过去的魔力了。
现在你可以随意修改文件了,修改、删除都随你(当然你要作死把"zuiMeng"这个文件夹都删了Git就帮不了你了), 如果对修改满意,提交你的改动到代码库:
git add -A
git commit -m "commit message"
"commit message"一般是这次修改包含的内容,比如”增加了过滤宠物功能“之类的。
如果对改动不满意呢?
执行git reset --hard HEAD
,搞定!
什么?你后悔了,要找回刚才的修改?
这个Git还真能满足你,不过这就不是本课程的范围啦,
记住你现在还是个菜鸟,改代码前多动动脑子想清楚没坏处。
这样周而复始,提交了很多次,这时可以用git log
来查看你的提交历史。
如果想回到其中的某一次,首先需要在git log
界面中记下目标commit的hash值,
这个值很长,只记下前6位就行了,假设这个值是"ef5a5b",那么要跳转到这次提交,
执行git checkout ef5a5b
,看看你的文件,是不是变回到那次提交时的模样了?
如果想跳回最后一次提交,除了重复上面的过程外,还有更简单的方法:
git checkout master
,这是因为"master"是一个特殊标记,代表你的最后一次提交。
好,这就是Git的基本用法了,总结一下:
-
初始化代码库:
git init
; -
修改文件;
-
提交改动到代码库:
git add -A
,git commit
; -
查看版本历史:
git log
; -
回退到历史版本:
git checkout <hash>
.
Git还能做什么?
-
分布式开发
比如你在北京,刚在广州找到一位创业小伙伴,有了Git,就不用搬到广州去啦, 也不必像Subversion那样,在公网架设代码库,只要在github上创建一个公共代码库, 走遍天涯海角,你需要就是一个WiFi接入点了。
如果你不希望大家都能看到你们的代码,推荐把公共代码库放在bitbucket上。
-
并行开发
不管你的团队有多少开发者,大家可以同时开发不同的功能,然后合并在一起。 当然会存在冲突的风险,这里推荐一个高逼格程序员必备神器git-flow, 用它武装你的开发团队吧,从此妈妈再也不用担心我们代码冲突啦~
Git FAQ
-
我只会用Windows,能用Git吗?
没问题!下载msysgit安装包,一路Next安装好之后就可以用了,除了基本的命令行,还附带了一个图形界面工具,是不是很贴心?
-
那些命令记不住,能推荐一款纯图形界面的Git工具吗?
当然可以。如果用Windows,上面介绍的msysgit的图形界面工具就很好了;如果用Linux,Git自带了gitk工具,Mac俺没用过,自己搜搜吧。
-
我英语不好,能给点中文资料吗?
这个真帮不了你了,虽说Git中文资料蛮丰富的,可你的目标不是变成靠Copy/Paster大法挣千把块钱30岁以后转行产品经理的苦逼码农吧? 如果你希望通过写代码打开一段崭新的人生,从现在开始阅读官网文档吧, 我带过那么多小弟小妹被我逼着看文档,现在他们自己混饭吃,没有一个用Baidu找中文文档看的。