目录
git简介
centos下安装git
git管理
提交版本
文件提交暂存区
撤销是暂存区的文件
删除恢复工作去的文件
提交暂存区的文件到版本库
版本恢复
比较不同版本的区别
git 分支管理:
github:
ssh 连接
gitlab
配置GitLab
添加组,用户,项目
分布式文件管理系统,实现多版本的文件的管理
yum install git -y
初始化,创建一个git_test目录作为git 的初始化目录
mkdir /home/user_z/git_test
cd /home/user_z/git_test
#初始化
git init
#这时git_test下会生成一个.git的文件,这个就是git的管理文件,工作区就是当前的目录
根据空间的不同,git划分为两个区域
工作区:当前目录
版本库:
1,暂存区:文件临时存放的位置
2,版本库: 文件提交到本地之后存放不同的版本的区域
创建用户:
#创建仓库级别的用户
git config user.name=NAME
git config user.email= [email protected]
#创建当前系统级别的用户
git config --global user.name=NAME
git config --global user.email= [email protected]
查看提交日志与工作区暂存区状态
#暂存区工作区状态
git status
#提交日志
git log
#单行显示,版本信息显示前几个及字符
git log --oneline
#单行显示,版本信息显示完全
git log --pretty=online
#显示到显示版本需要几步HEAD[@]
git relog
touch test.sh
#git add test.py
#查看git状态:
git staus
root@localhost gittest]# git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# modified: test.sh
#
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# dashboard_image/
[root@localhost gittest]#
git reset --hard HEAD test.sh
#
--hard:
--soft: 仅在本地版本库当中移动HEAD指针。
--mix: 本地版本库当中移动HEAD指针,重置暂存区与本地版本库
#分两种情况:工作区文件提交到暂存区;工作区文件没有提交
1,提交到暂存区
1,撤销提交的文件
git reset --hard HEAD test.sh
2, git rm test,sh
#此时删除的文件的信息提交到了暂存区,需要提交之后下一个版本才会没有test.sh文件
1,工作区的文件没有提交到暂存区,直接删除,同样删除的文件的版本信息会提交到暂存区,提交到版本库才会实现下一个版本当中没有删除的文件
git rm test.sh
#提交版本库:
git commit test.sh -m "has been deleted file test.sh"
#恢复文件
git checkout -- test.sh
git checkout :用于恢复工作文件树,与切换分支。找回之前的版本,也可以指定恢复到哪个版本
git checkout master~2 -- test.sh
#master分支上前两个版本 test.sh 文件
git commit test.sh -m "has been deleted file test.sh"
#HEAD指针: 指向当前版本的一个文件指针。
# 回到前一个版本: git reset HEAD~1
# 回到后一个版本:
# 1,获取git 的提交记录
# git reflog
# 2,回到指定的版本
# git reset 【版本号(commit之后自动生成的版本号,git reflog 会显示其版本#号,只需取版本号的前几个字符即可)】
git reset a52627
#HEAD~[num]
num: 是指相对于当前版本的前num个版本,恢复到前3个版本可以使用:
git reset HEAD~3
1,对比工作区文件与前一个版本
git diff HEAD~1 -- [file_name]
2,对比当前版本与上一个版本的不同
git diff HEAD HEAD~1 -- [file_name]
[root@localhost gittest]# git diff HEAD HEAD~2 -- test.sh
diff --git a/test.sh b/test.sh
index 4c28eea..beda459 100644
--- a/test.sh
+++ b/test.sh
@@ -1 +1 @@
-echo "this git test file version: 0.0.2"
+echo "this git test file v
---: HEAD 所指向的版本
+++: HEAD~1 所指向的版本
-: 表示HEAD 版本比HEAD~2 多出的内容
+: HEAD~2 版本比HEAD多出的内容。
开发过程当中,master 分支是默认的一条版本时间线。 如果其他人员也需要编辑master版本线上的文件,但是不是master这个版本线上面进行,这个时候就需要创建branch,通过不同的版本线进行
文件的编辑。
创建分支
git branch testing
切换到分支
git checkout testing
创建并切换到分支
git checkout -b testing
在master上合并testing分支
1,切换到master分支
git checkout master
2,合并testing分支的版本库
git merge [branch_name]
删除分支
git branch -d [branch_name]
冲突管理:
默认合并分支时采用的是快速合并的方式,不同分支在版本线上出现冲突时,我们需要手动修改
禁用fast-forward
git merge --no-ff dev -m "fast-forward -no"
保存当前工作现场,去修复bug
1,保存当前的工作现场
git stash
2,创建bug分支,合并到master分支,这时不能使用fast-forward,需要再次在msster上提交。
git checkout master
git checkout -b bug001
这个时候在bug001分支上编辑修复bug 并提交,然后切换回master分支,在master分支上进行合并
git merge --no-ff dev -m "修复bug001"
这个时候在master 上提交新的版本信息
3,切换到dev分支继续之前的工作
git stash list
列出保存的工作现场
git stash pop
切换到工作修复bug时保存的工作现场。
开放的版本管理仓库,提供远程的版本管理。要使用github 首先需要到github上注册用户账号。
1,本地生成与github相互认证的私钥与公钥。用于与github进行ssh连接
ssh-keygen -t rsa -C "[email protected]"
#一般文件会生成在/root/.ssh/ 下,
#查看.pem 文件,复制公钥信息
cat NAME.pem
2,在github Setting (在用户头像的下拉菜单当中)当中的ssh and GPG keys 选项当中添加生成的公钥信息,添加完成之后会进行github密码的再次认证。
测试连接git仓库
ssh -T [email protected]
配置gitlab
1,环境配置
#安装插件
yum -y install policycoreutils openssl-server openssl-client postfix
#启动ssh服务设置为开机自启动
systemctl enable sshd && systemctl start sshd
#设置postfix开机自启动,并启动,postfix支持gitlab发信功能
systemctl enable postfix && systemctl start postfix
#开放ssh以及http服务,重新加载防火墙列表
firewall-cmd --add-service=sshd --permanent
firewall-cmd --add-service=http --ermanent
firewall-cmd --reload
2,软件安装
下载地址 清华镜像:https://mirrors.tuna.tsinghua.edu.cn/
yum install gitlab-ee-12.4.2-ee.0.el7.x86_64.rpm -y
修改gitlib的地址和端口,防止端口冲突
编辑配置文件/etc/gitlab/gitlab.rb 内的external_url
external_url 'http://192.168.10.150:82'
nginx['listen_port'] = 82
#重载配置文件:
gitlab-ctl reconfigure
gitlab-ctl restart
界面:
初次登陆的用户名是root,用户密码需要进行修改,修改完成之后再次登陆
修改完成之后使用用户名和修改过后的密码登录,登录之后的界面:
1)创建组:
使用管理员root创建组,一个组里面可以有多个项目分支,可以将开发添加组到组里面进行权限的设置,不同的组就不同的项目或服务模块,不同的组添加不同的开发人员即可以实现对开发人员设置权限管理。
2)组添加添加项目:
3)添加用户并且添加到用户组:
添加用户到组内:
用户权限设置:
一共提供了5种权限:
权限 | 含义 |
---|---|
Guest | 可以创建issue,发表评论,不能读写版本库 |
Reporter | 可以克隆代码,不能提交,QA,PM可以赋予这个权限 |
Developer | 可以克隆,开发,提交,push,普通开发可以赋予这个权限 |
Maintainer | 可以创建项目,添加tag,保护分支的,添加项目成员,编辑项目,核心开发可以赋予这个全面 |
Owener | 可以设置项目的访问权限-visibilityLevel ,删除项目,迁移项目,管理组成员,开发组长可以设置这个权限 |