git 使用与介绍

目录

git简介

centos下安装git

git管理

提交版本

文件提交暂存区

撤销是暂存区的文件

删除恢复工作去的文件

提交暂存区的文件到版本库

版本恢复

比较不同版本的区别

git 分支管理:

github:

ssh 连接

gitlab

配置GitLab

添加组,用户,项目


git简介


分布式文件管理系统,实现多版本的文件的管理

centos下安装git

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 使用与介绍_第1张图片

创建用户:
   

#创建仓库级别的用户
    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管理

提交版本

查看提交日志与工作区暂存区状态

#暂存区工作区状态
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多出的内容。

git 分支管理:

开发过程当中,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 首先需要到github上注册用户账号。

ssh 连接

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 使用与介绍_第2张图片

git 使用与介绍_第3张图片

        测试连接git仓库
         ssh -T [email protected]

gitlab

配置GitLab

配置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,用户密码需要进行修改,修改完成之后再次登陆

git 使用与介绍_第4张图片

 

修改完成之后使用用户名和修改过后的密码登录,登录之后的界面:

git 使用与介绍_第5张图片

 

添加组,用户,项目

1)创建组:

使用管理员root创建组,一个组里面可以有多个项目分支,可以将开发添加组到组里面进行权限的设置,不同的组就不同的项目或服务模块,不同的组添加不同的开发人员即可以实现对开发人员设置权限管理。

 

git 使用与介绍_第6张图片

2)组添加添加项目:

 

 

git 使用与介绍_第7张图片

 

 

 

只有组内成员可以访问此项目git 使用与介绍_第8张图片

 

 

3)添加用户并且添加到用户组:

git 使用与介绍_第9张图片

 

添加用户密码:git 使用与介绍_第10张图片

 

添加用户到组内:

git 使用与介绍_第11张图片

用户权限设置:

git 使用与介绍_第12张图片

一共提供了5种权限:

权限 含义
Guest 可以创建issue,发表评论,不能读写版本库
Reporter 可以克隆代码,不能提交,QA,PM可以赋予这个权限
Developer 可以克隆,开发,提交,push,普通开发可以赋予这个权限
Maintainer 可以创建项目,添加tag,保护分支的,添加项目成员,编辑项目,核心开发可以赋予这个全面
Owener 可以设置项目的访问权限-visibilityLevel ,删除项目,迁移项目,管理组成员,开发组长可以设置这个权限

你可能感兴趣的:(git)