一、git概述
Git 是一种分布式版本控制系统,用于跟踪和管理代码的变更
Git 是 一个服务系统,Github 是一个社区,Github 用的就是 Git 系统来管理它们的网站,Github 只支持 Git 分布式系统
Git 的主要功能:
1. 版本控制:Git 可以跟踪代码的变更,并且可以回滚到任何一个版本。
2. 分支管理:Git 支持多个分支,可以让不同的开发人员在不同的分支上 进行开发,然后再合并到主分支上。
3. 分布式:Git 是分布式的,每个开发者都可以在自己的本地分支上进行操作,不需要依赖于中央服务器。
4. 团队协作:Git 支持多人协作,可以让不同的开发人员在同一个项目上 进行协作。
5. 使用 Git 进行版本控制可以提高开发效率,减少代码冲突,并且可以更 好地管理代码变更。
二、Git 的功能特性
Git 是关注于文件数据整体的变化,直接会将文件提交时的数据保存成快 照,而非仅记录差异内容,并且使用SHA-1加密算法保证数据的完整性。主要功能如下:
1. 克隆数据库版本: 从服务器上克隆版本数据库(包括代码和版本信息)到本 机上;
2. 提交代码: 在本机上自己创建的分支上提交代码;
3. 合并分支: 在本机上合并分支;
4. 拉取合并分支: 新建一个分支,把服务器上最新版的代码 Fetch 下来, 然后跟自己的主分支合并;
5. 代码冲突解决: 一般开发者之间解决冲突的方法,开发者之间可以使用 pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
三、Git 的安装及配置
1.git的安装
搜索git软件包
[root@git ~]# yum search git
安装git
[root@git ~]# yum -y install git
查看
[root@git ~]# rpm -qa | grep git
[root@git ~]# rpm -ql git
直接输入git可通过提示查看到git的选项和 参数
[root@git ~]# git
2、配置 git 环境
参数:
config:配置 git 环境
global:长命令表示配置整个 git 环境
[root@YH1 ~]# git config --global user.name "admin" # 配置用户名
[root@YH1 ~]# git config --global user.email "yh123456@qq.com" # 配置邮箱
四、Git 的基本流程
第一步:在工作目录 (工作区) 中修改某些文件
第二步:对已修改文件作快照,并保存到暂存区域 git add .
第三步:将保存在暂存区的文件快照提交到版本库 git commit -m ""
第四步:查看提交历史 git log
1.创建本地空仓库
init:初始化当前目录为仓库,初始化后会自动将当前仓库设置为 master 创建本地仓库的条件是需要一个空目录,然后在空目录中初始化你的项目
创建一个名为 test 的空项目
[root@YH1 ~]# mkdir /test # 创建一个空目录
[root@YH1 ~]# cd /test/ [root@YH1 test]# git init # 将当前空目录做为master仓库
2、新建文件添加到本地仓库
add:将文件添加到缓存区
commit:提交到本地仓库
(1)新建文件并添加到缓存
(2)提交文件到仓库
[root@YH1 test]# touch test.c
[root@YH1 test]# ls -a
. .. .git test.c
[root@YH1 test]# git add test.c
使用-m命令来简写描述我们的信息,如果不使用-m,会调用终端的注释编 辑器来输入描述信息,而不建议使用注释编辑器,因为注释编辑器比较难 用,不舒服。
[root@YH1 test]# git commit -m "add new file "test.c""
3、查看历史提交信息
[root@YH1 test]# git log
五、分支概念
六、创建分支过程
[root@YH1 ~]# cd /test # 先切换到之前创建master主分支[root@YH1 ~]# git checkout master # 确保当前操作位置是在主分支上
[root@YH1 ~]# git branch feature-branch
[root@YH1 ~]# git checkout feature-branch[root@YH1 test]# git branch # 查看当前分支
[root@YH1 ~]# git checkout -b feature-branch[root@YH1 test]# git branch # 跟上面的操作效果一样* feature-branchmaster
[root@YH1 test]# vim test.c # 添加新内容hellotest[root@YH1 ~]# git add . # 提交到缓存区,这里也可以写master分支的目录名,比如test[root@YH1 ~]# git commit -m "提交消息" # 提交消息写清注释信息即可
[root@YH1 ~]# git checkout master[root@YH1 test]# git branchfeature-branch* master[root@YH1 test]# cat test.c
[root@YH1 ~]# git merge feature-branch[root@YH1 test]# cat test.c # 合并完成,其他分支的内容被合并到了master上hellotest
[root@YH1 ~]# git branch -d feature-branch
[root@YH1 ~]# git branch -D feature-branch
七、解决分支冲突
[root@YH1 test]# git checkout -b y123 # 创建并切换到新分支切换到一个新分支 'y123'[root@YH1 test]# vim test.c # 写入点内容hellotestyyyy[root@YH1 test]# git add test.c # 将新分支写入的内容提交到缓存[root@YH1 test]# git commit -m "yy" # 提交新分支并注释为“yy”[y123 32e5a5a] yy1 file changed, 1 insertion(+)
[root@YH1 test]# git checkout master # 切换到主分支切换到分支 'master'[root@YH1 test]# cat test.c # 此时还未合并,所以只显示当前 master分支的内容hellotest[root@YH1 test]# vim test.c # 向master分支内写入些内容hellotesthhhh[root@YH1 test]# git add test.c # 提交master分支[root@YH1 test]# git commit -m "hh" # 正式提交,注释信息为“hh[master 4a51362] hh1 file changed, 1 insertion(+)
[root@YH1 test]# git merge y123 # 合并新分支
[root@YH1 test]# git status # git状态信息也提示两个分支冲突了
[root@YH1 test]# cat test.c # git使用记号帮我们标记除 了冲突位置和新分支的内容hellotest<<<<<<< HEADhhhh=======yyyy>>>>>>> y123
[root@YH1 test]# vim test.c # 手动修改冲突文件hellotesthhhhyyyy
[root@YH1 test]# git add test.c # 提交修改后的分支[root@YH1 test]# git commit -m "zuizhong" # 正式提交,注释信息为“zuizhong”[master f13e70e] zuizhong[root@YH1 test]# git log --graph --pretty=oneline --abbrev-commit # 查看日志分析分支合并情况* f13e70e (HEAD -> master) zuizhong # 当前分支所处位置为zuizhong|\| * 32e5a5a (y123) yy # y123分支冲突时所处的分支位置为yy* | 4a51362 hh # master分支冲突时所处的分支位置为hh|/* 173a360 test* 9e89cac add new file test.c[root@YH1 test]# git branch -d y123 # 删除y123分支已删除分支 y123(曾为 32e5a5a)。[root@YH1 test]# cat test.c # 查看master分支上的最终版本hellotesthhhhyyyy
八、Git 拉取
再启动一台主机,YH2[root@YH2 ~]# ssh-keygen[root@YH2 ~]# ssh-copy-id root@192.168.33.11[root@YH2 ~]# yum -y install git[root@YH2 ~]# mkdir /yh2 # 新建git仓库[root@YH2 ~]# cd /yh2/[root@YH2 yh2]# git init # 仓库初始化,当前目录作为master[root@YH2 yh2]# git clone 192.168.33.11:/test/.git # 将YH1的test分支克隆到本机[root@YH2 yh2]# lstest[root@YH2 yh2]# ls test/test.c
九、部署 Gitlab 服务器
1.搭建环境
准备我们刚刚刚使用的两台机子就好了
2、安装 gitlab
在第一个机器上:
yum -y install git # 安装git
3.去浏览器访问gitee官网并注册
注册完成之后,来到这个页面
去第一台主机
我们创建一个仓库目录
mkdir lnck
然后再进入
再进行初始化
git init
简单创个文件进行测试
发现这里查看不到
是因为没上缓存,上传,而且我们没有账号和邮箱
首先创建账号,邮箱
再上传提交
然后我们注册的gitee上面创建一个仓库
创建完成之后按照以下操作执行:
首先初始化
然后点击这里
先复制该路径
去我们的第一台机子上上传
在这里随便加一些内容
再复制下面命令再执行
再连接目标仓库
不选择会报错,像下面这样
然后连接仓库
后面的http 是下图中的
再合并上传到本地
再上传
网页上就能看到我们上传的内容了