Git介绍
主要有如下特点:
1. 版本控制
2. 分布式
3. 工作过程是将服务器上的代码下载到本地,本地开发完成后,在提交到服务器端
git相比于svn功能更加的强大,命令也很多。本篇博客将详细介绍一些常用命令的使用操作。
Git和SVN的对比
1.git是分布式的,svn是集中式的。(最核心)
2.git是每个历史版本都存储完整的文件,便于恢复,svn是存储差异文件,历史版本不可恢复。(核心)
3.git可离线完成大部分操作,svn则不能。
4.git有着更优雅的分支和合并实现。
5.git有着更强的撤销修改和修改历史版本的能力
6.git速度更快,效率更高。
基于以上区别,git有了很明显的优势,特别在于它具有的本地仓库。
Git几个概念
一. 工作目录
工作目录是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
二. 暂存区域
是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。有时候也被称作`‘索引’’,不过一般说法还是叫暂存区域。
三. Git 仓库目录
是Git 用来保存项目的元数据和对象数据库的地方。这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
Git工作流程
基本的 Git 工作流程如下:
在工作目录中修改文件 > 暂存文件,将文件的快照放入暂存区域 > 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。
如果 Git 目录中保存着的特定版本文件,就属于已提交状态。如果作了修改并已放入暂存区域,就属于已暂存状态。如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。
git常用选项
add 把工作目录内容添加到暂存区域
branch 查看和设置分支
checkout 切换分支和撤销
clone 克隆远程仓库
commit 把暂存区域提交到仓库
init 初始化工作目录
log 查看提交的日志信息
merge 合并分支
pull 拉取远程创库
push 把本地内容推送到远程仓库
reste 撤销操作(回滚版本和暂存区域)
status 查看文件所处的状态
refloh 查看所有版本
第二种安装方式:编译安装
第一步:上传安装包并解压
[root@ken ~]# rz
[root@ken ~]# ls | grep git
git-v2.7.4.zip
[root@ken ~]# unzip git-v2.7.4.zip
第二步:安装依赖
[root@ken git-2.7.4]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y
第三步:进入解压下目录下并执行编译
[root@ken git-2.7.4]# make prefix=/usr/local/git all
[root@ken git-2.7.4]# make prefix=/usr/local/git install
第四步:导入二进制程序
[root@ken git-2.7.4]# rm -rf /usr/bin/git
[root@ken git-2.7.4]# ln -s /usr/local/git/bin/git /usr/bin/git
[root@ken git-2.7.4]# git --version
git version 2.7.4
第一步:下载git
[root@zxw6 zxw]# yum install git -y
第二步:创建一个根目录并初始化工工作目录
[root@zxw6 ~]# mkdir /zxw
[root@zxw6 ~]# cd /zxw
[root@zxw6 zxw]# ll
total 0
[root@zxw6 zxw]# git init 初始化目录
Initialized empty Git repository in /zxw/.git/
[root@zxw6 zxw]# ls -a
. .. .git
第三步:创建文件并把暂存区域提交到仓库
[root@zxw6 zxw]# echo "zhaoxiaowei" > test
[root@zxw6 zxw]# ls
test
[root@zxw6 zxw]# cat test
zhaoxiaowei
[root@zxw6 zxw]# git add . 把工作目录下的文件都提交到暂存区域
[root@zxw6 zxw]# git commit -m "v1" 把暂存区域提交到仓库
*** Please tell me who you are.
Run
git config --global user.email "you@example.com" 进行认证
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'root@zxw6.(none)')
[root@zxw6 zxw]# git config --global user.email "you@example.com"
[root@zxw6 zxw]# git config --global user.name "Your Name"
[root@zxw6 zxw]# git commit -m "v1"
[master (root-commit) c866a1d] v1
1 file changed, 1 insertion(+)
create mode 100644 test
第四步:查看提交到仓库的版本信息
[root@zxw6 zxw]# git log
commit c866a1da7133f5c7fc04ccc6bc862f7e4dee478f
Author: Your Name <you@example.com>
Date: Mon Jul 15 07:18:45 2019 -0400
v1
第五步:再次提交并查看
[root@zxw6 zxw]# echo "zhao" >> test
[root@zxw6 zxw]# git add .
[root@zxw6 zxw]# git commit -m "v2"
[master a81565c] v2
1 file changed, 1 insertion(+)
[root@zxw6 zxw]# echo "xiao" >> test
[root@zxw6 zxw]# git add .
[root@zxw6 zxw]# git commit -m "v3"
[master f38ef58] v3
1 file changed, 1 insertion(+)
[root@zxw6 zxw]# git log
commit f38ef582124460bebb4e9113c9abfa4a3195e69c
Author: Your Name <you@example.com>
Date: Mon Jul 15 07:28:29 2019 -0400
v3
commit a81565c30c5a39f0bf3a309cb52bbd75942e5bdc
Author: Your Name <you@example.com>
Date: Mon Jul 15 07:27:55 2019 -0400
v2
commit c866a1da7133f5c7fc04ccc6bc862f7e4dee478f
Author: Your Name <you@example.com>
Date: Mon Jul 15 07:18:45 2019 -0400
v1
第六步:回滚版本v1
[root@zxw6 zxw]# git reset --hard c866a1da7133 撤销到v1版本
HEAD is now at c866a1d v1
[root@zxw6 zxw]# git log
commit c866a1da7133f5c7fc04ccc6bc862f7e4dee478f
Author: Your Name <you@example.com>
Date: Mon Jul 15 07:18:45 2019 -0400
v1