版本控制系统(VCS:Version Control System)在软件开发领域有着悠久的历史,由于发源于软件工程师在对源代码的管理,所以也称为源码管理系统(SCM:Source Contro System)。没有 VCS 的软件开发在对于团队是无法想想的,个人开发者可以通过频繁地手工保存、对比代码,但现在的团队型、敏捷型项目,不使用 VCS 则完全是不可想象、无法接受的,不但资料失去了安全性,工作效率也是大大降低。
VCS 不但用于软件源代码,当前更多的文档、绘图等都在广泛的使用 VCS,用 Git 来写一本书以前是很酷的事情,现在则是各类工程师的基础技能。
历史上出现过多个 VCS 系统和工具,IBM 的 CC、CVS、VSS、Subversion(SVN)、Git 等可以说各领风骚数十年。
目前,CC、CVS、VSS 已经远离我们的视线,SVN 和 Git 都还有用户,两者最大的区别是:
.git
文件夹中都包括了所有的库(repo)内容,可以看 log、提交代码、创建分支、打 tag 等,两台电脑的 Git 库之间是同步(sync)的概念,大家都是平等的,可以断网工作。本课程主要针对 git 相关内容进行学习,由于 Git 的创始人也是 Linux 的创始人,所以在最初很长一段时间里,Git 在 Windows 上的应用非常糟糕,即使当下,体验也是有差距的,所以本课程主要在 Linux/Unix 下操作,macOS 可直接参考、不需改动,Windows 则需要一些移植、和适应工作,需自行学习。