Git的特点:•速度
•简单的设计
•对非线性开发模式的强力支持(允许上千个并行开发的分支)
•完全分布式
•有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
Git与svn的对比:
svn属于集中式版本管理控制系统,系统中保存了所有文件的修订版本,而协同工作人员通过连接svn服务器,提取出最新的文件,获取提交更新
集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。
但是相较于其优点而言,集中式版本控制工具缺点很明显:
1、 服务器单点故障
2、 容错性差
Git指关注文件的整体数据是否发生了改变,而其他系统只关注文件内容是否发生了改变(只关注文件中的内容差异)
为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一连接。
Git只对文件的整体内容进行一次对比,如果整体内容没有发生多大的变化,则不会把数据再次保存到快照中。
使用Git,不需要跑到外面的服务器上获取数据,只需要在本地数据库上把你需要的数据取出来即可。
在保存到 Git 之前,所有数据都要进行内容的校验和(checksum)计算,并将此结果作为数据的唯一标识和索引。换句话说,不可能在你修改了文件或目录之后,Git 一无所知。
时变得不完整,或者磁盘损坏导致文件数据缺失,Git 都能立即察觉。
Git 使用 SHA-1 算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个SHA-1 哈希值,作为指纹字符串。
所有保存在Git中的数据都是利用哈希值来做索引的。
对于任何一个文件,在 Git 内都只有三种状态:
已提交(committed):已提交表示该文件已经被安全地保存在本地数据库中了;
已修改(modified):已修改表示修改了某个文件,但还没有提交保存;
已暂存(staged):已暂存表示把已修改的文件放在下次提交时要保存的清单中。
在此,将Git服务器搭建在Linux系统下
在Java虚拟机下安装一个linux系统,改下虚拟网络编辑器修改网段,同时安装Xshell进行与linux系统的连接
1、Git需要很多依赖环境:因此安装git需要先安装下列软件:
[root@itcast-01 ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel gcc-c++
2、上传git安装包:
安装包:git-2.9.3.tar.gz
安装命令:(进入git解压目录)
[root@local git-2.9.3]# make prefix=/usr/local all
[root@local git-2.9.3]# make prefix=/usr/local instal
3、添加Linux的用户,用户名为git的用户:
[root@local ~]# useradd git
设置git用户的密码
[root@local ~]# passwd git
切换到git用户
[root@local ~]# su git
[git@local root]$ cd
[git@local ~]$ git init --bare taotao.git
始化空的 Git 仓库于 /home/git/taotao.git/
使用git步骤:
1、下载安装
2、git config --global user.email/name
3、git init 对于一个文件夹目录进行git初始化操作,这个初始化是为了让git对这个文件夹中的文件进行版本管理,初始化完成之后,在当前目录下会有一个.git文件夹,这个文件夹就是版本库
可以利用.git文件夹下的文件进行一个版本的控制,就是可以对它进行一个版本的回退,回到当前。
4、在在工作区或者仓库中创建文件,然后对文件进行一系列修改操作
Git的要求是:你想要让git帮你进行的版本的控制,必须先有一个文件夹,这个文件夹要被Git进行初始化操作,这样才可进行一个git的版本管理。
常见的一些Git命令:
Master分支是主分支,也是git默认创建的分支
Master分支指向的是最新提交的commitid,利用指针的概念可以知道头指向的是我们的master分支(Git的强大支出并不是一个人开发,而是多人协作开发的概念)
在主分支上切出一个开发分支dev_first,利用 git checkout -b dev_first创建一个分支
如果你dev_first分支上,你就不能在自己的分支上删除自己,而必须是在其他分支上。
原文:https://www.cnblogs.com/cye9971-/p/10803852.html