在工作及项目开发中,接触到了两种版本控制工具:Git和SVN,两者没有孰优孰好,在不同的应用场景有着各自的优势。两者的部分差异在于:
- Git为分布式的,可以不使用服务器,在本地进行操作;SVN为集中式的,使用时必须连接服务器。
- Git将内容按元数据存储,本地Git目录就是个完整的版本库;SVN则是把内容汇总提交至服务器中统一存储。
- Git分支为不同版本镜像的指针,使用较为简便;SVN的分支相当于将整个仓库拷贝一份使用。
- Git没有全局版本号信息,使用SHA-1哈希算法标记不同版本;SVN使用连续的版本号记录版本信息。
- Git各个用户对仓库拥有完成的访问权限;SVN可以设定仓库访问的用户及对应的读写权限。
- …
总体来说在实际应用中,Git适用于各类开源代码的版本控制管理(本身就是为Linux内核的版本控制而生),而SVN适用于含有大量二进制文件的各类项目整体的版本控制管理(老牌的版本控制管理工具)。
Git和SVN版本控制所需工具整理如下。
一、SVN服务器(VisualSVN)
SVN工作时必须依赖于服务器,对于公司来说一般会搭建专用的服务器,可以直接使用。对于个人或者小团队来说,可以使用VisualSVN:一款收费的SVN服务器工具,可以运行在本机或者闲置的电脑上,实现SVN服务器。VisualSVN支持不限数目的仓库创建,支持仓库访问权限的设置,在无注册码的情况下支持最多15个账户使用,可以满足个人或者小团队的使用需要。
VisualSVN的安装和使用方法可以参考软件官方相关说明文档及各类博客文档。安装完成后开始菜单显示如下。
二、SVN客户端(TortoiseSVN)
TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,下载安装后可以通过UI界面实现内容信息向SVN服务器的提交及签出。
TortoiseSVN的安装和使用方法可以参考软件官方相关说明文档及各类博客文档。安装完成后开始菜单显示如下。
三、Git客户端(Git与TortoiseGit)
Git与SVN不同,不需要依赖集中托管服务器,对于团队合作的项目,一般会选择第三方的Git代码托管平台,如github、gitee,对于公司内部也可以选择使用开源的gitlab搭建自家控制维护的Git代码托管平台。
Git创建是为了解决Linux内核代码版本控制问题,其使用对象主要是程序员,因此Git偏向于命令行交互式操作,提供了大量的命令,用于Git仓库的创建及管理,这也是大量工程师实际使用方法。
而TortoiseGit,是一个第三方的可视化的Git工具,其UI界面及使用方法与TortoiseSVN类似。TortoiseGit底层依然是依赖Git工作,所以在使用TortoiseGit进行版本控制时,必须安装Git工具。通过TortoiseGit工具,我们可以使用简约的UI界面,实现对Git仓库的提交、签出操作。当然一些非常规的Git仓库管理还是需要依赖命令行使用Git提供的众多命令实现。
同样,Git及TortoiseGit的安装和使用方法可以参考软件官方相关说明文档及各类博客文档。安装完成后开始菜单显示分别如下。
注:TortoiseGit访问远程仓库时,使用TortoiseGit专有的.ppk密钥,与ssh使用的密钥不同,如果希望使用git生成的ssh密钥,可以在TortoiseGit的Settings->Network->ssh窗口选择使用git的ssh工具,测试配置如下(Git版本不同路径可能存在些差异):