源代码管理SVN|源代码管理工具SVN和Git小结

这篇文章主要是对源代码管理工具进行了一些总结,也算是自己对相关知识的一个梳理。文章主要从为什么使用,基本知识,二者之间的一些常用指令的对比以及冲突的解决进行梳理。文章只是自己的一些理解,可能会有一些偏差,有问题的可以随时提出!
一、为什么要使用源代码管理工具
1、能记录一个项目从开始到结束的整个过程。
2、追踪项目中所有内容的变化情况,如增加了什么内容,删除了什么内容,修改了什么内容等等。
3、版本控制,可以清楚的知道每个版本之间的异同点,如版本2.0相比较版本1.0多了什么内容,功能等。
4、 权限控制,防止代码混乱,提高安全性,防止一些不必要的损失和麻烦,简单的理解就是为什么职位做什么事情,不能越界。如控制程序员A对正在开发的项目具有开发的权限,其他项目不具有开发的权限,如果不进行控制的话,那么对其他项目的开发权限也对程序员A开放,如果程序员A对其他项目不小心进行了错误的操作 如删除,就会造成一些损失。
5、责任追究,防止互相推卸责任,可以清楚的知道谁对哪个文件进行了什么修改,导致了项目无法正常运行。
6、回退处理,执行了错误的操作之后还可以有补救的机会,如从版本1.0升级到版本2.0,后来发现版本2.0有一个错误,这时候可以进行回退处理,比较方便。
7、冲突解决,在团队的多人协同开发中,冲突是经常有的事情,比如存在着相同的文件名称,同一个文件中有着相同功能的函数等等,这时候使用源代码管理工具可以比较方便的解决冲突。冲突的解决一般按照“复制-修改-合并”原则进行。
8、。。。。。。。

二、基本知识
1、一般使用SVN或者Git进行源代码的管理。
2、SVN是集中式的、Git是分布式的。
【源代码管理SVN|源代码管理工具SVN和Git小结】2.1集中式:一台服务器控制着所有的代码,这台服务器的代码是最新的,其他电脑的代码操作(如下载、提交)都需要通过这台服务器才可以执行。
2.2分布式:每台电脑都相当于一个服务器,代码是最新的,比较灵活。
对比:Git的速度比SVN快;Git比SVN灵活;SVN一旦没有网络或者服务器挂了的话,其他电脑都无法执行操作,但是Git可以先提交到本地版本库,等待联网的时候再提交到远程代码仓库。
3、明白一些基本概念:工作区、本地版本库、服务器(远程代码仓库)。
3.1 本地版本库可以简单的理解为为.svn(对SVN来讲)或者.git(对Git来讲)文件下的内容,里面记录有关版本的一些信息。
3.2 工作区就是除了.svn(对SVN来讲)或者.git(对Git来讲)文件下之外的内容,也就是我们平时书写代码的地方。
3.3 服务器是一个远程代码仓库,用于容易存储代码的地方,一般代码的上传、下载都是通过服务器来操作的。
4、本地版本库和远程代码仓库的交互过程大致为:在本地电脑的工作区写代码,完成之后提交到本地的版本控制库,然后再提交到远程的代码仓库。指令对比如下:
SVN:add----commit
Git:add----commit----push
三、对比:

对比项目 SVN Git 说明
结构 集中式 分布式
版本库 .svn .git
指令 ……. init 初始化一个仓库
……. config 配置信息
help help 帮助指令,一些指令的格式
checkout clone 从服务器(远程代码仓库)把全部代码下载到本地电脑上
update pull 把服务器的代码下载到本地电脑上,不是全部下载,只是不同的才下载
commit commit + push 把本地电脑的代码提交到服务器(远程代码仓库)
info ……. 查看某个文件的最新版本,以及在最新版本中是谁在什么时间进行的操作。
log log 查看某个文件的所有版本情况,以及在每个版本是谁在什么时间执行了什么操作。
add add 向本地版本控制库中添加文件
delete 、remove rm 从本地版本控制库中移除文件
status status 查看某个文件的本地状态。SVN中A代表文件加入到本地版本库中,D代表文件从本地版本库中删除了,?代表这个文件不在本地版本库中。Git中代表查看文件在不在缓存区中。
list ……. 查看哪些文件是在服务器中
revert、update reset SVN:一、文件还没有提交到服务器:使用revert,此时回退操作分为两步:(一)status查看文件状态,二、revert对之前执行的操作进行回退。二、文件已经提交到服务器:使用update,此时回退操作分为四步:(一)log查看文件的所有版本;(二)update回退到某个版本(svn update -r 版本号 [文件]),把回退的文件拷贝到另外一个地方;(三)update更新本地版本,由于回退的原因,此时本地的版本小于服务器的版本,肯定会产生冲突;四、手动解决冲突,利用刚才拷贝出来的文件。
Git:一、文件还没有提交到服务器:使用reset,git reset --hard HEAD^--- 回退到上个版本
git reset --hard HEAD~n --- 回退n个版本
git reset --hard 版本号--- 回退或者前进到某个版本 (可以取消一些还没有提交到仓库的操作)。二、文件已经提交到服务器,可以先在本地回退到相应版本,然后在push到远程代码仓库


四、冲突
1、产生:
1.1 大多数冲突的产生一般是本地仓库的版本低于服务器或者远程仓库版本导致的。
1.2 多人开发中一个项目中存在同名的文件。
1.3 多人同时修改同一个文件,导致这个文件中存在两个同名的方法。
2、解决:冲突的解决一般需要手动解决,遵循着“复制--修改--合并”的原则。
把自己的和服务器的文件同时保留下来,然后根据需要进行修改,修改后进行合并并且再次提交到服务器。

以上就是一些内容的梳理,有些疏漏在所难免,欢迎指正!

    推荐阅读