一、为什么要了解Git
Git是一套版本管理系统。看到“Git版本管理”,一大部分盆友已经转身想走,在你握着门把手准备开门走人时,请最后听我说完最后一句:人人都需要版本管理,git可以帮你少交停电/蓝屏/死机税,提高产出效率,不来一发吗?
试过半夜写汇报ppt吗?'汇报ppt'→'汇报ppt1'→'汇报ppt11'→'汇报ppt2015-03-17'→'汇报ppt2015-03-17新'→'汇报ppt2015-03-17新1'……无休止的命名斗争,这就是自然而然的版本管理,只不过,没有好的工具,所以显得一团mess。
无论学生党还是设计师(改20个版本后终于顺利用回第1版),无论公众号运营还是音乐人,都持续产出着自己的“半成品/作品”。99.999%的作品都不可能一气呵成,比如这篇笔记的第一个commit版本,简直惨不忍睹。如果有版本管理意识,以及高效、方便的工具,生活也许可以简单许多,更不要说天有不测风云的停电忘保存、脑残删备份等等好事等着我们。
来吧,fork有用有趣的东西,git你应该在意的东西,日拱一卒,打造我们的作品。
二、Git主要概念
Git实现在本地和远端进行版本管理。
1.工作空间
四个空间概念:工作目录(workspace),暂存区(index),本地仓库(local repository),远程仓库(remote repository)
想象一下,我们开一个包子店(图片做的不是同一款包子,见谅)~
- 首先,得有一张大桌子用来和面、擀皮儿、包馅等等,这张桌子相当于workspace,随你折腾的地方,工作主要都在这里进行。
- 然后,包好的包子们会放到一个蒸笼里,等待被蒸,这个蒸笼就是index暂存区。蒸笼用来放我们想保留的成品或半成品,至于选哪些卖出去,这是以后考虑的事情。
- 下一步,蒸包子。蒸好的包子已经可以吃了,但是我们还是得先把它们从蒸笼拿出来放在盘子里。盘子就类似本地仓库local repository,里面都是等待出货的好东西。当然,你也可以在最后一刻把看不顺眼的包子扔掉,或者自己吃掉。
- 最后一步就是把包子送到货架/客人的桌上。公之于众的货架,就是远程仓库remote repository,丑媳妇终于见公婆啦。
配合下面这张图,我们对Git就有一个基本概念了。
via osteele.com2.Head & branch & master & origin
Git系统的实质更像是一棵大树,树干(就是Head啦)是最后一次提交的成果。在树干上,你可以开无数的分支(就是branch啦)胡弄,弄乱了也不怕,大不了剪掉再开一个,树干不受任何影响。折腾ok的分支,最后可以merge到默认branch也就是master上。
用技术性语言描述,分支用来将特性开发绝缘开来。在创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。
00的公众号,更多分享酝酿中……
网友评论
大型非文本文件不适合用git管理。
这里会有说为什么每次Push 都要输入密码。
https://help.github.com/articles/why-is-git-always-asking-for-my-password/
解决这个办法就是设置帐号密码缓存,比如这样就是设置一个小时:
https://help.github.com/articles/caching-your-github-password-in-git/
http://www.git-scm.com/book/zh/v1
所以对于这类文件我都是用Dropbox快盘坚果云之类的同步工具,这些也提供了版本管理工具,而且对于上传慢的问题只要开着机后台等他慢慢传即可(dropbox据说会分析文件差异,加速上传)。
参考:http://itmyhome.com/2015/01/git-push-command-no-longer-password-every-time/