版本控制系统

  版本控制系统(Version Control System, VCS可以帮助我们记录和跟踪项目中各文件内容的修改变化。

  分布式版本控制系统(Distributed version control system, DVCS也是这样,它的主要目标仍然是帮助记录和跟踪项目中所做的修改。而它与传统版本控制系统的区别在于,开发人员相互同步修改内容的方式不同。

版本库 The Repository

  版本库(Repository)是版本控制系统用来存储所有历史数据的地方。

  大多数版本控制系统在版本库中存储各个文件的当前状态、历史修改时间、谁做的修改,以及修改的原因。

  CVS和Subversion这类版本控制系统属于集中式版本库(Centralized Repository)模式。在这种模式下,所有的程序员都会把他们的改动提交到服务器上的一个公共版本库中。在本地工作目录树中,只能看到代码的最新版本,如果想查询历史修改记录,就必须与服务器上的版本库打交道。这就带来一个问题:必须要使用网络。

  如果使用分布式版本控制系统,就不会遇到不能上网所带来的问题。

  这是以Git为代表的分布式版本控制系统最大的优势。

  每个人都会在本地有自己的版本库,而不是连接到服务器上的一个公共的版本库。所有的历史记录都存储在本地的版本库中。

工作目录树 Working Trees

  工作目录树是程序员进行程序开发的地方。

  在传统的版本控制工具中,工作目录在本地,而版本库在服务器上,而Git中并非如此。

  在Git中,版本库不在服务器上,而存储在本地工作目录树的“.git”目录中。

  工作目录树最初的创建有两种方法:

  1.用Git相关命令初始化版本库,生成“.git”目录,于是“.git”目录的父目录就成了工作目录树。

  2.克隆一个已有的版本库,也就连带创建了相应的工作目录树。

代码修改与文件同步 Manipulating Files and Staying in Sync

  每次提交(Commit)操作都会使得版本库中新增一个版本(Revision)。

  除了记录改动内容本身以外,版本库还记录改动的日志信息(Log Message)或称提交留言(Commit Message)。

  使用像Git这样的分布式版本控制系统时,除了把改动提交到本地版本库之外,还要通过某种方式将改动共享,以便其他程序员能够得到。为此,需要把改动推入(Push)到上游版本库(upstream repository),即公共版本库。

  推入操作是代码同步的一半,另一半是,必须把别人完成的劳动从公共版本库拿到本地版本库中来。

  具体来说,把远程版本库中的改动拿到本地版本库中,需要两步操作:

  1.把改动取来(Fetch),把远程版本库中的改动取到本地版本库。

  2.将取来的内容和本地改动合并(Merge)。

  在Git中,可以用一个命令完成这两个操作:Pull

使用标签跟踪里程碑 Tracking Milestones with Tags

  标签以一个简单的名称(即标签名)来标记版本库历史中某个特定的点。

  本质上,标签是一个对于使用者来说易于理解和易于记忆的名字,用来标识版本库中一个难读难记的内部版本号,以此帮助使用者跟踪历史版本。

使用分支来跟踪并行演进 Creating Alternate Histories with Branches

  在版本库中创建分支的起点。自此,各路发展平行并进。

  每条分支记录这条分支上发生的变更,而与其他分支隔离。

  主分支(Master Branch)是研发的主线,一些版本控制工具也把主分支称作主干(trunk)。

  分支可以长期存在,也可以仅存在数小时。分支可以合并到其他的分支,但并非所有的分支都必须合并。

合并 Merging

  合并操作把两条或者两条以上的分支合并到一起。

  Git自动处理分支合并的方法与程序员人工处理的方法是相同的:Git比较各分支上的变化,确定变化在哪里发生——哪个文件的哪个位置。

  当不同的变化发生在文件的不同部分时,Git能够自动合并。但

  情况并不总是这样理想,当Git不能自动合并时,就会提示冲突(conflict)。

锁机制 Locking Options

  严格锁(strict locking):一个时刻,只有一个人可以占用资源。

  乐观锁(optimistic locking):允许多个人同时修改同一文件。乐观锁基于一个假定:大多数时候,这种并发修改不会引起冲突。

一些约定

  Git 首字母大写表示Git工具本身。

  git 表示命令行中的命令。

  prompt> 表示需要输入的命令。

基础命令

  设置用户名和邮箱:

  prompt> git config --global user.name “XXXName”

  prompt> git config –global user.email “[email protected]”

  用下列命令可以检查上述设置是否成功:

  prompt> git config --global --list

  启动图形界面:

  prompt> git-gui

  启动gitk:

  在工作目录树下prompt> gitk

  显示版本库中的历史记录:

  prompt> gitk –all

  获取Git内置帮助信息:

  prompt> git help

  prompt> git help <command>

  其中,用希望了解的具体命令名称替代<command>

  文档中相应命令的页面将会在浏览器中显示出来。

时间: 2024-10-13 01:59:46

版本控制系统的相关文章

Git 版本控制系统的基本使用、常用操作

以Ubuntu16.04操作系统为例(其他系统类似),主要记录常用的.基本操作: 0. 安装Git 分散型版本控制系统(CVS): sudo apt-get install git 1. 初始化本地配置git或其他配置等(配置仓库或者全局选项) git config --global user.name "your_name" git config --global user.email "[email protected]" git config --global

git(版本控制系统)的使用

git的简介 Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 集中式版本控制系统(svn): 中间是中央服务器,其他所有电脑都需要从中checkout代码下来.只有中央服务器管理着各个版本的代码.其他电脑需要操作时都要和中央服务器交互.如果中央服务器离线或者故障,其他电脑就没法与中央服务器交互. 分布式版本控制系统(git): 分布式每一台电脑都有版本的Database,就不用担心中央服务器离线或者故障.因为本地就有版本的Database,所以可以实现离线操作

SVN版本控制系统

SVN 版本控制系统 --------------------------------------------------------------------------------------------- 1.SVN作用 防止代码丢失 : 因为没有哪个项目能够一次性开发完成 代码版本回退 : 你可以在开发过程中找到以前上传到服务器上面的所有版本 多人代码整合 : 公司中多个人开发同一个项目,个人做个人的模块,最后将大家的代码进行整合 使用权限控制 : 一般公司会为新员工设置权限,不让他们直接

版本控制系统-集中式与分布式的区别

SVN和CVS都是集中式版本控制系统,而Git是分布式版本控制系统 集中式版本控制系统 版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器. 集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟 分布式版本控制系统 分布式版本控制系统没有"中央服务器",每个人的电脑上都是一个完

远成文件的版本控制系统~~~浅析

远成文件的版本控制系统 ~~~~浅析 问题描述 大多数基于C/S模式的应用软件都存在客户端的版本更新问题.通常的解决方案是服务器端提供一个UpdateServer为每一个Client提供版本更新服务.更好一点的方案是在一个小型的局域网内部实现LocalUpdata,然后再与UpdateServer连接.解决方案一LocalUpdate: 每一个Client程序启动时,首先开始一个ServerThread并申请一个本地端口(每个Client的监听段口应一致,以便能收到Client发来的升级信息广播

Apache2+SVN搭建代码版本控制系统

1 安裝Apache2服务器 1.1 安装 #sudo  apt-get install apache2 1.2 重启 #sudo service apache2 restart 1.3 设置字符编码 #sudo gedit etc/apache2/conf.d/charset 找到#AddDefaultCharset UTF-8,将前面的#去掉(使用UTF-8编码). 1.4 确认安装成功 通过浏览器访问http://127.0.0.1 或者 http://localhost/会出现如下提示:

分布式版本控制系统Git-----1.初识

工作第一周 师傅让我修改了芒果云资源管理器的源码,从而达到定制化的目的.第二个周呢,就让我开始学习Git.刚接触我是懵逼的,"分布式版本控制系统"啥玩意啊这是,大家可不能从字面意思上理解啊,刚开始,版本控制么,我以为是团队合作的时候把开发工具.JDK的版本统一一下.后来知道是什么了之后感觉之前以为的好搞笑啊,哈哈. 好了,言归正传.我已经把文档放在了我的远程仓库上,这个文档还可以,建议大家看下,我就是从头开始看的,不过到现在也只是看了前三章和分支的那章,Git的分支是很厉害的!作用也很

[.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境【转】

转自:http://www.cnblogs.com/yubinfeng/p/5182271.html 前面介绍了两款代码管理工具VSS和SVN,这两种管理工具在很长一段时间曾为我们的代码管理提供了便利,本篇介绍一款思维方式完全不同(也可以说不合常理)的版本控制系统——Git.可以说Git目前非常火,这与设计者剑指偏锋的设计思想有很大关系.Git采用发散的思维管理代码,最大的特点就是分布式,他可以让来自不同地区的开发者共同完成一个作品,让每个开发者都可以发挥个性,同时又可以由发起者(即项目管理者)

TortoiseSVN与VisualSVN Server搭建SVN版本控制系统【转】

转自:http://www.cnblogs.com/xing901022/p/4399382.html 本片主要介绍如何搭建SVN版本控制系统,主要使用工具: 1 客户端:TortoiseSVN (小乌龟) 2 服务端:VisualSVN Server 搭建出图形化管理,以及右键菜单版本控制管理的SVN系统. 背景知识 首先要了解SVN是一种集中式管理代码的版本控制系统,原理就是 把代码都保存到一个固定的位置,每次从这个位置拷贝更新代码,进行编辑:再把修改后的代码提交到该目录中. 多人协作开发也

Git是目前世界上最先进的分布式版本控制系统(没有之一)。

http://zhidao.baidu.com/link?url=NSYPiSvtGTMoqMA9vt68FRRF8WbfYVmwWeMh47_2lkp0K3jFMl--1Co1tg1R4VshTQV2De1JeG-fh3Ezu5j-3q Git是什么?Git是目前世界上最先进的分布式版本控制系统(没有之一).Git有什么特点?简单来说就是:高端大气上档次!那什么是版本控制系统?如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:想删除一个段落,又怕将来想恢复找不回来怎么办?