分布式版本控制系统
在这类系统中,像Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
安装Git
1.centos 自带git,可以yum安装 yum -y install git
2.编译安装# 安装依赖关系
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
# 编译安装 Git下载地址: https://github.com/git/git/releases
tar -zxf git-2.0.0.tar.gz
cd git-2.0.0
make configure
./configure --prefix=/usr
make
make install
初次运行 Git 前的配置
git config --global user.name "clsn" #配置git使用用户
git config --global user.email "[email protected]" #配置git使用邮箱
git config --global color.ui true #语法高亮
git config --list # 查看全局配置
查看生成的配置文件 cat .gitconfig
获取 Git 仓库(初始化仓库)
# 创建目录mkdir git_data
# 进入目录
cd git_data/
# 初始化
git init
# 查看工作区状态
git status
操作过程
[root@gitlab ~]# mkdir -p /data/git_data
[root@gitlab ~]# cd /data/git_data
[root@gitlab git_data]# git init
初始化空的 Git 版本库于 /data/git_data/.git/
Initialized empty Git repository in /data/git_data/.git/
[root@gitlab git_data]# git status
# 位于分支 master
# 初始提交
无文件要提交(创建/拷贝文件并使用 "git add" 建立跟踪)
# On branch master
# Initial commit
nothing to commit (create/copy files and use "git add" to track)
创建文件
[root@gitlab git_data]# touch README[root@gitlab git_data]# git status
添加文件跟踪
[root@gitlab git_data]# git add ./*
[root@gitlab git_data]# tree .git/
由工作区提交到本地仓库
[root@gitlab git_data]# git commit -m 'first commit' -m"备注信息"
添加新文件
git add * 添加到暂存区域git commit 提交git仓库 -m 后面接上注释信息,内容关于本次提交的说明,方便自己或他人查看
简便方法:git commit -a -m "注释信息" -a直接提交
删除git内的文件
• 没有添加到暂存区的数据直接rm删除即可。• 已经添加到暂存区数据:
git rm --cached database
#→将文件从git暂存区域的追踪列表移除(并不会删除当前工作目录内的数据文件)
git rm -f database
#→将文件数据从git暂存区和工作目录一起删除
重命名暂存区数据
• 没有添加到暂存区的数据直接mv/rename改名即可。
• 已经添加到暂存区数据:
查看历史记录
• git log #→查看提交历史记录
• git log -2 #→查看最近几条记录
• git log -p -1 #→-p显示每次提交的内容差异,例如仅查看最近一次差异
• git log --stat -2 #→--stat简要显示数据增改行数,这样能够看到提交中修改过的内容,对文件添加或移动的行数,并在最后列出所有增减行的概要信息
• git log --pretty=oneline #→--pretty根据不同的格式展示提交的历史信息
• git log --pretty=fuller -2 #→以更详细的模式输出提交的历史记录
• git log --pretty=fomat:"%h %cn" #→查看当前所有提交记录的简短SHA-1哈希字串与提交着的姓名。
使用format参数来指定具体的输出格式
还原历史数据
Git服务程序中有一个叫做HEAD的版本指针,当用户申请还原数据时,其实就是将HEAD指针指向到某个特定的提交版本,但是因为Git是分布式版本控制系统,为了避免历史记录冲突,故使用了SHA-1计算出十六进制的哈希字串来区分每个提交版本,另外默认的HEAD版本指针会指向到最近的一次提交版本记录,而上一个提交版本会叫HEAD^,上上一个版本则会叫做HEAD^^,当然一般会用HEAD~5来表示往上数第五个提交版本。
git reset --hard hash
git reset --hard HEAD^ #→还原历史提交版本上一次
git reset --hard 3de15d4 #→找到历史还原点的SHA-1值后,就可以还原(值不写全,系统会自动匹配)
[root@gitlab git_data]# git log
[root@gitlab git_data]# git reset --hard e9ed8b38a
还原未来数据
什么是未来数据?就是你还原到历史数据了,但是你后悔了,想撤销更改,但是git log已经找不到这个版本了。
git reflog #→查看未来历史更新点
标签使用
前面回滚使用的是一串字符串,又长又难记。
git tag v1.0 #→当前提交内容打一个标签(方便快速回滚),每次提交都可以打个tag。
git tag #→查看当前所有的标签
git show v1.0 #→查看当前1.0版本的详细信息
git tag v1.2 -m "version 1.2 release is test" #→创建带有说明的标签,-a指定标签名字,-m指定说明文字
git tag -d v1.0 #→我们为同一个提交版本设置了两次标签,删除之前的v1.0
对比数据
git diff可以对比当前文件与仓库已保存文件的区别,知道了对README作了什么修改后,再把它提交到仓库就放⼼多了。
git diff README
git diff --name-only HEAD HEAD^
git diff --name-only head_id head_id2
分支切换
删除分支
因为之前已经合并了tiger分支,所以现在看到它在列表中。 在这个列表中分支名字前没有 * 号的分支通常可以使用 git branch -d 删除掉;你已经将它们的工作整合到了另一个分支,所以并不会失去任何东西。
查看所有包含未合并工作的分支,可以运行 git branch --no-merged**:
git branch --no-merged
testing
这里显示了其他分支。 因为它包含了还未合并的工作,尝试使用 git branch -d 命令删除它时会失败:
git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
如果真的想要删除分支并丢掉那些工作,如同帮助信息里所指出的,可以使用 -D 选项强制删除它。
gitlab的使用
前面我们已经知道Git人人都是中心,那他们怎么交互数据呢?
• 使用GitHub或者码云等公共代码仓库
• 使用GitLab私有仓库
安装配置gitlab
官方安装文档 https://about.gitlab.com/installation/
国内软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/
安装
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-9.1.4-ce.0.el6.x86_64.rpm
[root@gitlab ~]# yum localinstall gitlab-ce-9.1.4-ce.0.el7.x86_64.rpm
初始化
[root@gitlab ~]# gitlab-ctl reconfigure
状态
在服务器上创建ssh密钥 使用ssh-ketgen 命令
[root@gitlab ~]# ssh-keygen
[root@gitlab .ssh]# cat id_rsa.pub
首先clone仓库到本地,创建文件写入内容,然后git add ,git commit 提交,最后push到远端
GitHub托管服务
Github顾名思义是一个Git版本库的托管服务,是目前全球最大的软件仓库,拥有上百万的开发者用户,也是软件开发和寻找资源的最佳途径,Github不仅可以托管各种Git版本仓库,还拥有了更美观的Web界面,您的代码文件可以被任何人克隆,使得开发者为开源项贡献代码变得更加容易,当然也可以付费购买私有库,这样高性价比的私有库真的是帮助到了很多团队和企业。
注册GitHub
浏览器访问github官网 : https://github.com/ ,点击Sign up 进行注册
添加密钥
在github上添加一个新的ssh密钥
[root@gitlab ~]# ssh-keygen [root@gitlab ~]# cat .ssh/id_rsa.pub