如果软件规模比较大、或者多人开发,应该进行版本管理以避免源码的混乱。
之前还没用过 git 的时候,我以为版本管理就是给自己的程序自动升级版本号的软件(从 2.6.39 自动升级到 2.6.40),以至于当我看了 git、svn、cvs 的简介后,一度因为它们没有提供这样的功能而耿耿于怀。
版本管理软件其实是修改管理软件,它把程序源代码的两个版本之间的差异当做砖垒起来,并为我们提供管理这堆砖的操作。而版本号只是我们人工区分版本重要性的一种方法,除了开发者自己没有哪款软件有能力预知 2.6.39 是要升级到 2.6.40 还是 3.0。
版本管理=修改管理,那么进行版本管理比不用版本管理就有两个优点(这里用的是git,其他的版本管理软件也应该有):
突出修改
git 能精确定位到行级修改。知道自己刚才改动了哪些地方是很有用的:
我经常添加一些代码来调试一个函数,调试通过之后就要删除这些代码。如果添加的代码比较多、乱,就很有可能在删的时候没有全部删掉,源码就不干净了。 git 能突出修改,就不会丢三落四了。
合并版本
多人合作开发一个软件,git 可以将各人的新版本合并起来:
假设源代码托管在 github 上,那么每个开发者可以先 pull github上的最新版本下来与自己的版本合并,然后 push 合并后的版本到 github 上以完成版本更新。这都是在开发者触发 pull 或 push 操作后自动完成的,比人工地通过比较、复制来进行合并要省事、可靠得多。