日志标签 Git
《Got Git》完稿
2月24日
2011/2/22,当我把第8篇文稿发给编辑后,长长的舒了一口气,这真是一个漫长的旅程。
写一本关于Git的书的想法始于2010年9月,在给客户做了Git培训后,发现还有很多想法难以浓缩在区区几百页的PPT中,为什么不把它扩展成一本书呢?
如果当初知道写一本书需要花这么久,真不知道能不能够坚持下来。感谢家人的支持,感谢华章出版社编辑们的鼓励和辛苦的工作,感谢我的朋友们和客户为本书初稿提出宝贵的修改意见。
关于这本书的名字,我很长时间决定不下来,曾经一度把本书的名字叫做《Got Git》,因为这样我就不用太费力的校正很多人对 Git 错误的发音。不过出版社从商业角度上决定采用《Git权威指南》这个让我倍感压力的名字。不管怎样,名字只是名字,重要的还是内容本身。
把全书的目录(不包含前言和附录)摘录如下,目录中的页码来自Word稿件,正式排版后会压缩至80%。
阅读全部内容 »
Windows下Git的安装和配置
12月31日
Git是Linux的创始人Linus Torvalds在2006年开发的,Linus自嘲说是一个“傻瓜内容跟踪器”。
在Windows下使用Git,可以使用 Cygwin + Git,也可以使用 Msys + Git。
Cygwin太庞大了,我更倾向于使用小巧的Msys。
使用Msys + Git的话,也有两个选择:msys-cn + git,或者 msysgit。 阅读全部内容 »
回到未来 (3)
12月28日
9.3.3 时间旅行三
《回到未来-第三集》铁匠布朗博士手工打造了可以时光旅行的飞行火车,使用蒸汽作为动力。这款时间旅行火车更大,更安全,更舒适,适合一家四口外加宠物的时空旅行。与之对应本次实践也将采用“手工打造”:交互式变基。
回到未来 (2)
12月28日
9.3.2 时间旅行二
《回到未来-第二集》布朗博士改进的时间旅行车使用了未来科技,是陆天两用的飞车,而且燃料不再依赖核物质,而是使用无所不在的生活垃圾。而此次实践使用的工具也进行了升级,采用强大的git rebase 命令。

回到未来 (1)
12月28日
9.3 回到未来
电影《回到未来》(Back to future)第二集,老毕福偷走时光车,到过去(1955年)给了小毕福一本书,导致未来大变。
Git 这一台“时光机”也有这样的能力,或者说也会具有这样的行为。当更改历史提交(SHA1哈希值变更),即使后续提交的内容和属性都一致,但是因为后续提交 中有一个属性是父提交的SHA1哈希值,所以一个历史提交的改变会引起连锁变化,导致所有后续提交必然的发生变化,就会形成两条平行的时间线:一个是变更 前的提交时间线,另外一条是更改历史后新的提交时间线。
把此次实践比喻做一次电影(回到未来)拍摄的话,舞台依然是之前的DEMO版本库,而剧本是这样的。
补丁中的二进制文件
11月24日
有的时候,需要将对代码的改动以补丁文件的方式进行传递,最终合并入版本库。例如直接在软件部署目录内进行改动,再将改动传送到开发平台。或者是因为在某个开源软件的官方版本库中没有提交权限,需要将自己的改动以补丁文件的方式提供给官方。
关于补丁文件的格式,补丁的生成和应用在我们第一章 TODO 已经进行了介绍,使用的是 Gnu diff 和 patch 命令。很多版本控制系统也可以生成 GNU 兼容的 diff 文件,例如svn diff 命令。但是 GNU 的 diff 格式有一个不足:不支持二进制文件。即如果有二进制文件发生了变化或者增加了新的二进制文件,在差异文件中无法体现,这样的差异文件应用到代码树中,二进制文件丢失了!
Git 突破了传统 DIFF 格式的限制,通过引入新的 DIFF 格式,实现了对二进制文件的支持。

Gerrit 代码审核服务器的工作流和原理
11月10日
谷歌 Android 开源项目在 Git 的使用上有两个重要的创新,一个是为多版本库协同而引入的 repo,这在之前我们已经详细讨论过。另外一个重要的创新就是 Gerrit —— 代码审核服务器。Gerrit 为 Git 引入的代码审核是强制性的,就是说除非特别的授权设置,向 Git 版本库的推送(Push)必须要经过 Gerrit 服务器,修订必须经过代码审核的一套工作流之后,才可能经批准并纳入正式代码库中…
阅读全部内容 »
Git 和 SVN 协同模型
11月4日
Git 的子树合并和子树拆分
10月31日
可以通过 Git 的 subtree 合并策略实现分支到目录的跟踪,之前我也是一知半解。这次在准备书稿过程,总算是搞明白了,也发现我在写 Gistore 时可以使用更好的算法,有时间我再改进 gistore 吧。
下面是我书稿中的部分内容:



最新评论