Git

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

4、初始化仓库,仓库名为taotao.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分支上,你就不能在自己的分支上删除自己,而必须是在其他分支上。

 

Git命令参考手册

git init

初始化本地仓库

git config --global user.name “xxx”

配置用户名

git config --global user.email “xxx@xxx.com”

配置邮箱

git clone git+ssh://git@192.168.25.128/vt

Clone远程仓库

git status

查看当前版本的状态(是否修改)

git add xyz

添加xyz文件到index

git add .

增加当前子目录下所有更改过的文件

git commit -m ‘xxx’

提交

git commit --amend -m ‘xxx’

合并上一次提交(反复提交)

git rm -r *

递归删除

git rm xxx

删除index中的文件

git log

显示提交日志

git log -1

显示1行日志

git log -5

显示5行日志

git log --stat

显示提交日志及相关变动的文件

git log -p -m

 

git show HEAD

显示HEAD的提交日志

git show HEAD^

显示HEAD的父(上一个版本)的提交日志

git tag

现在已存在的tag

git tag -a v2.0 -m ‘xxxx’

增加v2.0tag

git show v2.0

显示v2.0的日志及详细内容

git log v2.0

显示v2.0的日志

git diff

显示所有未添加至index的变更

git diff --cached

显示所有已添加index但还未commit的变更

git diff HEAD

比较与上一个版本的差异

git diff HEAD -- ./lib

比较与HEAD版本lib目录的差异

git diff origin/master..master

比较远程分支master上本地分支master上没有的

git branch

显示本地分支

git branch --contains 50089

显示包含提交50089的分支

git branch -a

显示所有分支

git branch -r

显示所有原创分支

git branch --merged

显示所有已合并到当前分支的分支

git branch --no-merged

显示所有未合并到当前分支的分支

git branch -m master master-copy

本地分支改名

git checkout -b master master_copy

从当前分支创建新分支

git checkout features/performance

检查远程分支的features/performance

git checkout v2.0

检出版本v2.0

git checkout --README

检出head版本的readme文件

Git merge origin/master

合并远程分支至当前分支

git push origin master

将当前分支pushmaster分支上

git push --tags

把所有tag推送到远程仓库

git fetch

获取所有远程分支

git fetch --prune

获取所有原创分支master并清除服务器上已删除的分支

git pull origin master

获取远程分支mastermerge到当前分支

git mv README README2

重命名文件READMEREADME2

git reset --hard HEAD.

将当前版本重置为HEAD

git branch -d

删除分支

git branch -D

强制删除分支

git show-branch

显示当前分支历史

git show-branch

图示所有分支历史

git reflog

显示所有提交

git show master@{yesterday}

显示昨天分支的状态

git log --pretty=format:’%h %s’ --graph

显示提交日志

git stash

暂存当前修改,将所有至为HEAD状态

git stash list

查看所有暂存

git stash apply stash@{0}

应用第一次暂存

git grep

文件中搜索文本“delete from

posted @ 2019-05-02 23:15  繁春  阅读(124)  评论(0编辑  收藏  举报