简介

GIT与SVN的区别

作为当前最流行的版本控制系统,Git和SVN的几个主要不同之处在于:

(1) Git是分布式的版本控制系统,SVN是集中式的版本控制系统。Git可以先把修改提交到本地仓库中,

等到可以上网或方便的时候,再提交到远程仓库中。这无疑更利于项目开发,同时也可减轻服务器负担。

(2) SVN使用增量文件系统(Delta Storage Systems),即它存储的是每次提交(commit)之间的差异。

Git正好相反,它会把你的每次提交文件的全部内容(snapshot)都记录下来。

(3) Git对于分支有更好的支持,能自动记录分支的合并信息。SVN只能手动追踪,很不方便。

(4) SVN每个目录下都存在.svn目录,而Git的信息只存在项目根目录下的.git目录。

(5) Git的速度更快,不管是本地操作还是远程操作。

对象类型

Git有四种类型的对象:blob、tree、commit、tag。

对象名称用哈希值来表示,SHA1哈希值有40个字符,但是一般用前6个就可以找到相应的对象了。

(1) blob

一个blob用来存储文件的内容。

一个blob对象就是一块二进制数据,它没有指向任何东西或带有任何其它属性。

blob对象和其所对应的文件所在路径、文件名是否被改变都完全没关系,它只是一个数据块而已。

(2) tree

一个tree用于表示内容之间的目录层次关系,相当于文件夹。

A tree is a simple object that has a bunch of pointers to blobs and other trees。

(3) commit

commit对象指向一个tree对象,并且带有相关的描述信息。

The commit object links a physical state of a tree with a description of how we got there and why.

commit的生成:

A commit is usually created by git commit, which creates a commit whose parent is normally the

current HEAD, and whose tree is taken from the content currently stored in the index.

(4) tag

tag存储一个指针,指向某个commit。

Git存储内容的组织结构如下:

每个目录都创建了tree对象(包括根目录),每个文件都创建了一个对应的blob对象。最后只有一个commit对象

来指向根tree对象,这样我们就可以追踪项目每一项提交(commit)的内容。而tag则是特殊的commit。

git目录

每一个项目只有一个Git目录(.git),这和SVN的每个子目录中都有此类目录不同,它位于项目的根目录下。

The Git Directory is the directory that stores all Git's history and meta information for your project -

including all of the objects (commits, trees, blobs, tags), all of the pointers to where different branches

are and more.

在.git目录中,有以下重要文件:

HEAD:pointer to your current branch

config:your configuration preferences

description:description of your project

index:index file,暂存区

logs:a history of where your branches have been

objects:your objects (commits, trees, blobs, tags)

refs:pointers to your branches

工作目录

The Working Directory is the directory that holds the current checkout of the files you are working on.

当你在项目的不同分支间切换时,工作目录里面的文件经常会被替换和删除。所有历史信息都保存在Git目录中,

工作目录只用来临时保存签出(checkout)的文件,你可以编辑工作目录的文件直到下次提交为止。

暂存区

暂存区就是.git/index。

The Git index (.git/index) is used as a staging area between your working directory and your repository.

有了它,你可以把许多内容的修改一起提交(commit)。如果你创建了一个提交,那么提交的是当前暂存区(index)

里面的内容,而不是工作目录中的内容,这又是一个和SVN的不同之处。

下图说明一个commit是怎么产生的:

使用git status可以查看暂存区(index)的内容,包括:

哪些文件被暂存了(staged)

哪些文件被修改了但是没有被暂存(modified, unstaged)

哪些文件没有被跟踪(untracked)

安装

下载地址列表:http://code.google.com/p/git-core/downloads/list

源码包:git-1.9.0.tar.gz

事先需要安装的库:expat、curl、zlib、openssl、zlib-devel

# tar -zxvf git-1.8.0.tar.gz

# cd git-1.8.0

# ./configure --prefix=/usr/local/git

# make && make install

然后设置PATH

在/etc/profile或者~/.bashrc中添加:

export PATH=/usr/local/git/bin:/usr/local/libexec/git-core:$PATH

然后使配置生效:

# . /etc/profile

配置

使用Git的第一件事就是设置你的名字和email,这些就是你在提交commit时的签名。

Git的配置信息分为全局和项目两种,--global参数意味着在进行全局配置,它会影响本机上的每一个Git项目。

全局配置文件:/root/.gitconfig

# git config --global user.name zhangskd

# git config --global user.email zhangskd@xxx.com

项目配置文件:项目/.git/config

# git config user.name zhangskd

# git config user.email zhangskd@xxx.com

也可以直接编辑config文件:

[core]

repositoryformatversion = 0

filemode = true

bare = false

logallrefupdates = true

[user]

name = zhangskd

email = zhangskd@xxx.com

Author

zhangskd @ csdn blog

GIT版本控制 — 简介与安装 (一)的更多相关文章

  1. git的简介,安装以及使用

    1git的简介 Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git有什么特点?简单来说就是:高端大气上档次! 2Linus一直痛恨的CVS及SVN都是集中式的版本控制系 ...

  2. git的使用学习(一)git的简介和安装

    Git简介 Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git有什么特点?简单来说就是:高端大气上档次! 那什么是版本控制系统? 如果你用Microsoft Word写 ...

  3. Git之简介及安装

    简介 Git是一个分布式版本控制系统,GitHub相当于一个远程仓库,注册账号可免费获得Git远程仓库. GitHub使用参考:https://guides.github.com/activities ...

  4. git版本控制 for window安装和命令行使用

    Git 安装配置 Windows 平台上安装 在 Windows 平台上安装 Git 同样轻松,有个叫做 msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe 安装文件并运行 ...

  5. 版本控制简介,git使用----使用GitHub托管代码

    关于版本控制: 很久以前,人们苦于对写过的代码进行版本的管理,经常过了一段时间想恢复原来写过的代码却又忘了不知道丢到哪儿去了,有的人用加上时间后缀来命名文件的方法,便于后期维护,但是这样做的麻烦也很大 ...

  6. Git SVN 版本控制 简介 总结 MD

    Git 使用准备 主流的 Git 托管网站 GitLab,主流网站,私有仓库也完全免费,功能更强大,页面精美,操作方便 GitHub,最著名的免费Git托管网站,缺点是免费的不支持私有项目 OSChi ...

  7. Git 学习(一)简介及安装

    Git 简介及安装 Git是目前世界上最先进的分布式版本控制系统(没有之一).它的诞生也颇具传奇,Linux创始人Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!有兴趣的话,可 ...

  8. Git版本控制工具(一)----git的安装及创建版本库

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  9. Git(一)Git的简介安装

    一.git历史 同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代.Linux 内核开源项目有着为数众广的参与者.绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐 ...

随机推荐

  1. pycharm 安装与基本设置

    一.下载及安装 打开官网下载:https://www.jetbrains.com/pycharm/download/#section=windows 下载完毕之后可直接双击可执行文件,然后点击&quo ...

  2. oracle查询相关语句

    1,查询表空间使用情况select a.a1 表空间名称,c.c2 类型,c.c3 区管理,b.b2/1024/1024 表空间大小M,(b.b2-a.a2)/1024/1024 已使用M,subst ...

  3. 作业03-面向对象入门.md

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系.步骤如下: 1.1 写出你 ...

  4. synchronized与条件同步

    在并发编程中,有这样的需求:当满足某个条件时线程执行同步块中的代码,条件不满足时,让线程在此等待,直至条件满足再执行同步代码块. java的Object类即提供了一类这样的方法wait(),notif ...

  5. Zookeeper 客户端API调用示例(基本使用,增删改查znode数据,监听znode,其它案例,其它网络参考资料)

    9.1 基本使用 org.apache.zookeeper.Zookeeper是客户端入口主类,负责建立与server的会话 它提供以下几类主要方法  : 功能 描述 create 在本地目录树中创建 ...

  6. 安卓高级9 shareSDK 第三方登陆和分享Mob

    ShareSDK推荐此官网地址 官网注册和申请key流程 注册 略 进入后台创建应用得到可以 下载SDK 解压下载的压缩包 第三方平台申请key 如果你想申请QQ登陆或者分享需要去腾讯开发者申请,申请 ...

  7. 安卓高级6 玩转AppBarLayout,更酷炫的顶部栏 Toolbar

    原文大神地址:http://www.jianshu.com/p/d159f0176576 上一篇文章[<CoordinateLayout的使用如此简单 >]上一篇文章<Coordin ...

  8. 微信小程序基础之交互操作控件

    好久没有写关于微信小程序的文章了,今天简单的发表一篇,内容比较简单,包括:ActionSheet上拉菜单.AlertAction提示框.SuccessAction完成框.LoadingAction加载 ...

  9. C++语言编译系统提供的内部数据类型的自动隐式转换

    C++语言编译系统提供的内部数据类型的自动隐式转换规则如下: 程序在执行算术运算时,低类型自动隐式转换为高类型. 在函数调用时,将实参值赋给形参,系统隐式的将实参转换为形参的类型,并赋值给形参. 函数 ...

  10. 21 RadioGroup ListFragment

    结构 MainActivity.java package com.qf.day21_radiogroupfragment_demo3; import java.util.ArrayList; impo ...