首页 > 代码库 > 版本控制:SVN和GIT的一些使用感受(续)

版本控制:SVN和GIT的一些使用感受(续)

背景:

        紧接上文,从本地独立开发者角度出发,继续对从SVN集中式版本管理转向GIT分布式版本管理的细节进行介绍。此次以自己具体的开发实例为基础,给出GIT管理从整体项目SVN服务器检出来的本地工作副本的详细过程。

GIT与SVN的结合:

        为了演示方便,利用TortoiseSVN在本地建立一个单机版的SVN版本管理器服务端的版本库,如下图所示:

imageimage

        如上图,CPPLearning和CSharpLearning两个标有SVN标志的文件夹就是我在本地建立的两个版本库(repository),单击进入就可以看到上一篇文章中提到的SVN服务端文件系统的几个主要目录,conf、db、hooks和locks,此处用他们来模拟我们团队开发过程中库的整体项目版本控制的服务端,即下图中的SVN服务端

image

        前面也提到过,有了SVN服务端,我们还需要在本机(这里的模拟过程可以看做是找一个与版本库CPPLearning、CSharpLearning位置不同的目录即可)Checkout出自己的开发工作副本。

image

        到此SVN的使命算是告一段落了,他连接了我们与开发团队其他成员的工作。下面就是我们重点要介绍的利用Git来协助SVN进行本地工作副本修改操作的记录。

        第一步,右键单击LocalSVNCS工作副本文件夹,选择Git Init Here,此时双击进入工作副本目录,可以看到多出了.git文件夹——这就是Git的本地针对于LocalSVNCS工作副本的版本库。此时可以看到.git文件夹的小图标是一个问号,这在SVN下的意思就是,还未进行版本控制(SVN各图标的含义见下图右)。

imageimage

        第二步,.git是GIT版本控制器的版本库,这个我们其实并不希望最后提交到团队的SVN服务器中,因此需要将.git文件夹继续忽略处理,在SVN中有多种方法忽略指定类型的文件夹或文件,这里就不介绍了,直接单击右键如上图左所示即可。

        第三步,在.git版本库中右键,打开Git GUI,可以看到众多等待版本管理的文件夹及文件。

image

        从上图可以看出,SVN的本地版本库.svn也被GIT检测到了,尝试着点击“缓存改动”发现竟然有241个文件。其实.svn根本不需要我们进行版本控制,因为在本地我们利用GIT的目的是记录不曾向SVN提交的本地的各项修改操作,自然我们没必要让GIT记录.svn的修改。所以利用.gitignore来设置文件过滤,让GIT忽略.svn文件夹,以及我们项目开发过程中的中间文件。

image

【注意】:按照网络上众多网友的建议,在本目录、项目目录、.git/info/exclude等都进行过多次设置尝试,但是在Git Bash下输入git status依然并未忽略.svn目录。最后在(http://blog.csdn.net/benkaoya/article/details/7932370)中找到了答案,因为我用的是Windows系统,而Windows系统是不允许.gitignore文件名存在的,因为这样设置会出现下图中“必须键入文件名”的错误。所以按照博文中作者的提示,进入到Git Bash状态,输入vi .gitignore,然后输入我们要忽略的文件夹及文件,(对于VI工具的使用,大家可自行查阅资料)。随后在版本库根目录下就自动生成了.gitignore的文件,虽然也是文本文件。但是此时Windows系统允许其存在。随后调用git status,可以看到.svn已经被成功忽略,打开Git GUI提交也就变成了我们上图中的53个文件啦。

image

        至此,我们就成功完成了GIT和SVN的配置,随后就是可以随意使用GIT来记录我们本地的修改操作啦。当需要更新的时候可以赚到SVN,将本地修改同步到服务器端。下面给出我在本地Git的修改记录,

image

参考资料:

GIT可以随意轻松的建立分支,具体的介绍可参照博文

http://www.open-open.com/lib/view/open1328069889514.html

http://www.open-open.com/lib/view/open1328070090108.html

http://www.open-open.com/lib/view/open1328069988843.html

 

 

作者:zssure@163.com

时间:2014-09-07

版本控制:SVN和GIT的一些使用感受(续)