唐巧的博客

如何用 Git 将代码恢复到一个历史的版本
需求有些时候,在一些特殊情况下,我们需要将代码恢复到一个历史的提交版本上。而这个历史提交版本,离最新的提交已经比较久远了。 比如,我希望将如下的仓库的提交,恢复到上上上上次提交。当然,我可以一次...
Git submodule的坑

前言

随着近几年的发展,Git 已经成为开源界的标准的版本控制工具。开源界的重量级项目,如 Linux, Android, Eclipse, Gnome, KDE, Qt, ROR, Debian,无一例外的都是使用 git 来进行版本控制。如果你还不会 Git,那么恕我直言,你已经 out 了,赶紧抽空充充电吧。本文并不打算做 Git 入门级介绍,想学习 git 的同学,推荐国内作者蒋鑫写的 《Git 权威指南》

对于一些比较大的工程,为了便于复用,常常需要抽取子项目。例如我开发的猿题库客户端现在包括 3 门考试,客户端涉及的公共 UI、公共底层逻辑、公共的第三方库、以及公共的答题卡扫描算法就被我分别抽取成了子项目。这些子项目都以 git submodule 的形式,增加到工程中。

在使用了 git submodule 一段时间后,我发现了一些 submodule 的问题,在此分享给大家。

用Git进行协同开发

问题场景描述

常常会遇到这样的协同场景:后台的同事和前端的同事需要共同开发一个新功能,而他们的代码相互依赖,所以需要不停地更新各自的代码进行联调。

对于这种场景,最简单的方式就是,这 2 个同事坐到一起,然后把 svn 当作一个共享代码的中转站来共享开发中的代码。

在这种方式下,大家各自写自己的代码,提交到 svn 上,然后用 svn up 获得对方的代码。在调试问题的时候,大家可能不停地更新代码,然后让对方用 svn up 来更新。最终,虽然开发能够顺利进行,但是 svn 上会积累大量调试中的代码历史。所以,这样把 svn 当作代码中转站是一个很山寨的行为。

在开发 有道云笔记 新的 iPad 版 时,我和前端同事 zyc 尝试用 git 进行了协同开发。在这里把具体方案分享给大家,欢迎大家讨论。

象写程序一样写博客:搭建基于github的博客

2016.02.16 更新说明

本博客已经由 octopress 迁移到了 Hexo,本文章的内容稍显陈旧。

对 Hexo 感兴趣的可以参见:《从 Octopress 迁移到 Hexo》

前言

github 真是无所不能。其 Pages 功能 支持上传 html,并且在页面中显示。于是有好事者做了一个基于 github 的博客管理工具:octopress,基本原理是用 git 来管理你的文章,然后最终发布到 github 上成为一个独立博客站点。由于 github 支持 CNAME 域名指向,所以如果有独立域名的话,可以基于这些做出一个专业的博客站点出来。

本博客就是完全基于此搭建起来的,在使用了 2 个月之后,我将原系统根据中国人的需求做了一些配置,去掉了 GFW 会挡住的 google font api,以及替换掉了速度超慢的国外的评论系统,也加上了分享到国内的微博的功能。现在把这些都总结出来,希望大家都可以方便地搭建基于 github 的博客来。

使用 Git 来管理 Xcode 中的代码片段

代码片段介绍

xcode4 引入了一个新 feature: code snippets,在整个界面的右下角,可以通过快捷键:cmd + ctrl + opt + 2 调出来。code snippets 是一些代码的模版,对于一些常见的编程模式,xcode 都将这些代码抽象成模版放到 code snippet 中,使用的时候,只需要键入快捷键,就可以把模版的内容填到代码中。

Git 的使用感受

从开始工作到现在,在公司里面一直用 svn 来做版本管理。大约半年前听说了 Git,因为 Git 的光辉相当耀眼,作者是 Linus Torvalds,被大量的开源软件采用,如 jQuery, Perl, Qt, ROR, YUI, GNOME 等,所以决定学一学。
比较庆幸的是,国内有一本较好的介绍 Git 的书:《Git 权威指南》
我大概花了一个月的周末时间来学习它。在这里总结一下使用 Git 的感受,主要是和 SVN 来做一些比较,以便突出 Git 的特点。