版本控制——SVN&Git

来源:互联网 发布:avr单片机交流微信群 编辑:程序博客网 时间:2024/05/15 11:25

版本控制,相信不管你是做开发,还是学习。在我们程序猿的道路上都是至关重要的。

为什么重要,应用场景在哪?

  1. 手残不小心删除了自己项目的源代码或者文档
  2. 不敢修改自己的源码文件,不确定自己修改后会不会影响以前的功能。(如果不用版本控制,那你只能拷贝了把)
  3. 协同开发把项目传递给别人。或者分享自己的项目(如果不用版本控制,那就只能邮件,QQ,U盘)

总而言之,版本控制在开发中的地位是屹立不倒的。无论你是独立开发还是协同开发
版本控制系统发展,可分为3个阶段
1. 本地版本控制:顾名思义,数据仓库在本地
2. 集中版本控制:服务器和客户端的一种形式,数据仓库在服务器上
3. 分布式版本控制:每一个终端都是相对独立的个体,但是又相对联系起来

版本控制有:
VCS,VSS,CVS,ClearCase,SVN,Perforce,TFS,Mercurial,Git
上述了解即可,现在我们主流使用的是SVN和Git。不要说Git是主流,很多公司仍然在使用SVN

SVN

  • SVN的作者是CVS版本控制开发者之一的Karl Fogel

  • SVN的搭建需要服务器端和客户端的搭建。服务器端个人觉得TortoiseSVN比较好用。下载安装好后会和windows系统集成。(如果是MAC的话,我使用的是eclipse插件集成,这些安装都可以百度的到)。
    windows集成好后,在桌面右击如下
    这就表示windows的集成成功
    MAC在eclipse上插件安装成功如下
    eclipse上面点击关于eclipse会出现如下,点击按钮
    可以查看自己所有安装的插件

  • SVN服务器端可以设置用户的读写权限(很简单,我这里提一下)
  • checkout仓库的代码
    checkout

  • 这里强调一下,第一次检出代码采用checkout,之后都是update

  • SVN常用操作,增删改:
    增:需要先add,再commit
    删:删完之后commit
    改:改完之后commit
    如果不commit,最外层的文件夹是红色的✘。如果保持数据仓库一直,最外层的文件夹是绿色的✔️

  • SVN分支(鱼骨图)
    创建分支,然后就可以来回切换分支进行开发。最后合并成一条主线。为什么叫鱼骨图呢,因为一条主线,上下进行分支,再合并到主线。样子就像鱼骨头一样的
    windows客户端SVN

    MAC上插件SVN

    分支开发,最后合并就可以。分支开发不会影响主线的代码

  • SVN的冲突,SVN能够自动解决冲突。SVN不能解决的冲突是你们提交代码修改了相同的地方。此时SVN会生成3个文件,一个是的你现在本地的,一个是上一个版本的,一个是现在服务器最新版本的。解决方案无非是:1)使用你的代码 2)使用服务器上最新的代码 3)合并你本地和服务器上最新版本的代码。当然也可以有个方法避免冲突,就是锁定你要修改开发的文件,修改完后再解锁。不过应该提前和协同开发的同事打招呼
    这里写图片描述
  • SVN如果是协同开发,每次提交代码的时候记得先更新再提交。这是重点!!!
  • 这里简单的说一下SVN,最基本的使用。

Git

  • Git是Linux的创始人Linus Torvalds开发的开源和免费的版本控制
  • Git的结构原理:
    -不同的版本是快照而不是对比,记录磁盘当前的快照信息
    -几乎所有的操作都是本地的,只有在打补丁的时候,将代码作为补丁push给管理员
    -Git文件的3个状态(都在本地):
    —working directory(工作区域文件);
    —staging area(临时区域存储);
    —git diretory(本地版本仓库)。
    —怎么理解呢?比如:你现在正在开发,撸代码,此时的文件就为正在工作区域状态的文件;当你将你开发的文件add的时候,此时为临时区域存储状态的文件;当你再将该文件commit之后,此时为本地仓库状态的文件
    -文件状态的生命周期
    —untracked:还未受到跟踪,和版本控制没有关系
    —unmodified:已经添加了,但是还没有修改
    —modified:本地已经修改,还未提交
    —staged:已经提交到了仓库里面

  • 下载后会有:Git bash和Git GUI。在安装的时候会有,看心情勾选。Git bash是命令行,Git GUI是界面。如果使用GUI建议使用TortoiseGit.操作界面很像SVN.

  • 今天我也就是了解了一下原理,2年前接触过一点点,之后的工作一直在使用SVN。所以我后面会自己再玩玩git,遇到坑什么的会给大家整理出来。

  • 对于安装什么的网上很多,这里给出我觉得不错的链接。

http://blog.csdn.net/gao_chun/article/details/49817229/

  • 感谢各位大佬。愿各位大佬远离BUG