Git小书 - (EPUB全文下载)
文件大小:0.07 mb。
文件格式:epub 格式。
书籍内容:
版权信息
书名:Git小书
作者:刘传君
ISBN:EA022
本书由北京图灵文化发展有限公司发行数字版。版权所有,侵权必究。
您购买的图灵电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
目录
前言
准备
介绍
暂存区
撤销
分支
修订的标识
标签
多仓库
协议
Git协议
SSH 协议
HTTP
后记 : 信任网络
前言
献给
启明星闪亮的清晨
我和Git
一直以来,我的团队使用SVN作为代码版本管理工具。日复一日,提交、提交、再提交,每个产品版本开发完成会打个标签、偶尔回溯修订历史查找Bug,一切都简洁、快速、美好。SVN很棒,它逐步的替代掉了我司内之前的CVS、VCS等同类工具。
然后,Git出现。基于对新事物的渴望、以及追逐偶像的动力,我决定自己去试试它。我把独立进行的、处于商业化早期的研究项目放到github上,克隆到我几台工作机上,然后使用github desktop在Mac、Windows上访问git,并且暂存、提交、推送、拉取。github GUI当然不错,但是我喜欢命令行,因为简洁,不多占用窗口,也能力全面。于是,我就去学了命令行。我立马感觉Git不像我期望的那么酷。
概念多而繁杂,我的感受就是这样:SHA1? Hunk? 远程分支? 引用? 这都是啥啊。当然这只是难而已。真正让人大跌眼镜的是,默认情况下,不少命令的输出看起来有些碎碎念的心烦:比如常见的git status,它不但很啰嗦地显示状态,也会把文件撤销和提交的命令提示出来。不够酷啊!这还不算,当我觉得郁闷时,有人继续补刀,高调地宣布:学习Git的最好方式是理解它的实现。你怎么不去上天?
我丢下git命令行一段时间,然后再捡起来,再丢下,心理很矛盾,有时候觉得git没有大家说的那么好,有时候觉得是不是自己很笨,并且认为我是程序员,不想去碰这些house-keeping类的工作。然后,某天我比较空,完整地清理了下目前为止对git的看法,得出这样的结论:不管git困难还是简单,我这样浅尝辄止、动辄想要输出价值观的思路和做法,是永远也学不会的。
于是我决定放下令人裹足不前的自尊和骄傲,花费了4个月的时间,看了数百页的资料,做了无数的实验,在一台主机上搭建N个仓库互相推送拉取,然后我把分支、合并、rebase如同提交一样,变成我的日常工作。于是,我有了新的感受——正如c语言一样,Git有无数的缺点,它也在继续演进中,但是它的分布式仓库和分支用起来太舒服了,特别是对于经常需要远程工作的人:
我可以在本地无需服务器就可以完成大部分常用的版本管理;
可以随时因为某个想法而开一个分支,成功完成后合并到主干,或者失败直接丢弃,开分支除非主动推送否则根本不会影响到其他人;
和他人协作只要通过接受pull request即可接受别人的贡献,而无需给他开一个账号。
这样自我折腾后,回头再看Linus在Google做的Git专题演讲(2007年),我秒懂了他提到的信任网络。我会在后记内就此话题多说几句。
Git的复杂度
掌握Git并不容易。和SVN相比的话,Git的复杂程度翻了几倍。这不可避免地会令人怀疑且裹足不前。
幸好,Git的复杂是可以划分的。首先是本质复杂度。本质复杂度是不可避免的。多引入一个实体,就意味着同时引入一组概念、以及它和老实体之间的一组关系,所以Git就是更难,哪怕封装得再好也是。作为是一个分布式的、单机可分支的工具,它引入了新的实体对象必然比SVN复杂,比如:
为了管理提交的颗粒度,它引入了暂存区(stage),引入了块(Hunk);
为了能够分布,它的提交标示符无法采用简单数字,而是采用了一个看起来令人困惑的字符串(SHA1)。
另外,它也引入了不少非本质复杂度。此类型复杂度在于设计上的缺陷。比如:
有些命令引入的功能太多。看看git reset子命令即可了解我的意思。
概念命名随意。比如暂存区有多个名字,包括Index,Stage,Cache。
参数设计随意。例如git branch -b等价于git branch后跟git checkout 。
Git从一个本不知名的工具,到如今的风头正健,本身依然还在演进之中,非本质复杂度会随着这个过程而逐步降低。
Git刷新了我对版本工具的传统认识——充分利用分布特性来减少依赖,使用分支特性随心创造而无后顾之忧。所以,我认为我花费了不少时间来学习Git是值得的。
关于作者
作者:刘传君
创建过产品,创过业。不好动,读书机器。倾慕unix哲学,以此书略表致敬。
可以通过 1000copy#gmail.com 联系到我。
准备
安装
因为有些操作系统已经内置了git,所以可以使用命令来做验证:
git --verion
如果打印出了版本就说明已经安装了。如果出现的是一个错误信息,就需要安装它。我日常工作的电脑是OS X,可以使用brew来安装它:
brew install git
Linux也是内置的。如果没有,可以实验apt-get命令安装。如果是Windows,那么你可以下载Git for Windows二进制安装包,并且像是其他Windows应用一样点击下一步、下一步、或许还有N个下一步,然后完成。
本书使用的Git为2.7 :
git --version
git version 2.7.4 (Apple Git-66)
案例都是在此版本样验证通过的,我并没有在更低版本上做过验证,因此建议你使用当前Git的最高版本。
配置
使用Git之前,它需要知道使用它的用户是谁,已经如何联系。可以使用如下的命令,配置用户名称和电子邮件:
git config --global user.name "Your Name"
git config --global user.email ............
书籍插图:
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Git小书 - (EPUB全文下载)