gitlab的网络仓库gitee和本地仓库gitlab
一、前言
一、简介
Git特点: 速度快、简单的设计、对非线性开发模式的强力支持(允许成千上万个并行开发的分支)、 完全分布式、 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
二、Git的分区方式
有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)。
已修改表示修改了文件,但还没保存到数据库中。
已提交表示数据已经安全地保存在本地数据库中
已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
三、实验环境
将用server12(172.25.42.12)实验gitee网络仓库,server11(172.25.42.11)搭建本地的gitlab本地仓库。
二、git的使用
一、基本使用
1、开启虚拟机,下载git,初始化git
创建工作目录demo,初始化版本库,现在demo目录就是存放版本的版本库,.git目录是git跟踪管理版本库的,不要乱动。git命令必须在版本库中使用,出去就不顶用了,因为信息都记录在版本库中
[root@server12 demo] yum install git
[root@server12 ~] mkdir demo
[root@server12 ~] cd demo/
[root@server12 demo] git init
2、创建用户,注册邮箱
[root@server11 demo] git config --global user.name "ck"
[root@server11 demo] git config --global user.email ck@westos.org
3、建立文件,查看状态变化
[root@server12 demo] touch README.md 建立任意文件
[root@server12 demo] git status 第一种查看文件方式
[root@server12 demo] git status -s 第二种查看文件方式、简化输出
可以看到文件处于暂存区的状态
4、add传至工作区
[root@server12 demo] git add README.md
[root@server12 demo] git statu -s
此时A状态表示为被添加至工作区
5、commit传至git目录(必须已经建立账户和密码)
特定上传一个文件,否则会将整个暂存区的东西都上传
[root@server12 demo] git commit -m "add readme.md" 不分大小写
[root@server12 demo] git statu -s
此时git不存在任何新改变,没有输出
6、修改初始文件,给予内容
[root@server12 demo] echo westos > README.md
[root@server12 demo] git status -s
[root@server12 demo] git status
M在右边,表示文件修改过,在暂存区
7、再次上传至工作区
M在左边,表示文件修改过,在工作区
[root@server12 demo] git add README.md
[root@server12 demo] git status
[root@server12 demo] git status -s
8、上传至目录
git会对文件进行监控,同一个文件上传至目录时用update,此时没有文件状态改变
注意无论怎么更改工作区的文件,上传至目录的只有暂存区的文件
二、撤销操作
1、工作区使用checkout撤销之前的操作
恢复到工作区修改之前的版本
[root@server12 demo] git checkout README.md
2、暂存区的撤销
修改内容,即使添加至暂存区,也可以在暂存区用reset HEAD
撤销,再到工作区用checkout
撤销
这里更改工作区的内容,上传至暂存区,再两次撤销即可恢复原样。
[root@server12 demo] git reset HEAD README.md
[root@server12 demo] git checkout README.md
三、恢复删除
1、工作区删除文件的恢复
工作区删除文件也可以恢复,同样的checkout命令
[root@server12 demo] git checkout README.md
2、暂存区里删除的恢复
提交到暂存区后,删除后。可以在暂存区和工作区分别恢复一下,即可恢复我们的文件
[root@server12 demo] git reset HEAD README.md
[root@server12 demo] git checkout README.md
三、网络仓库
git结合网络仓库gitee使用,也可以结合github使用,因为github网络较为卡顿,所以使用网络仓库gitee作为例子(国内版)
1、新建用户
2、建立私有仓库
生成公钥
导入公钥
上传文件
上传文件
git remote add origin git@gitee.com:kang-chen-westos/demo.git 连接远程仓库
git push -u origin master 上传文件
上传成功
查看文件,发现上传成功。
四、私有化仓库Gitlab的安装
server11作为仓库,安装gitlab
获取安装包
获取地址为 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/
1、安装
[root@server11 mnt]# yum install -y curl policycoreutils-python openssh-server
[root@server11 mnt]# yum install -y gitlab-ce-14.1.2-ce.0.el7.x86_64.rpm
2、修改配置文件
vim /etc/gitlab/gitlab.rb
重新载入服务
gitlab-ctl reconfigure
进行访问172.25.42.11发现需要密码
查看登陆密码
进入后用户为root,密码为刚才查看的密码
中文的设定方式,应用后刷新,重新进入即可
进去后重新设置自己的密码。
设置密钥连接
[root@server11 ~] ssh-keygen
[root@server11 ~] cd .ssh/
[root@server11 .ssh] ls
id_rsa id_rsa.pub
[root@server11 .ssh] cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6E8tixpTldgCDSY/i4zR/VlipgAsmzr+73g5VN4q15DtzTUjORZS5WfMXSSzI9VfXLEd6MB9L0sdYJFJKcutKJb2j6zYDKOVCW/5Nq+siqP4Vd5K3+fsI4n5xtfKTRri6Ek2aSX3u+D6ZIXAifQDptBgorVg2xFkDF+8BhLKiskiC3dflP46FD9eek+Xe6pbfC5tTe7p+v61qnBmePS+1OYkuUxRyeKp2WAt1ktXempA+5ayTIFlZWq/ZjHbyW4+mYfjf+gUSZ5W/Yt9bHwgikz7Uhqmr8gtHuw4WXaZMmISGDJFZCLp/INplWvGxH722r1hK2J6LktfMee0ds0rP root@server11
复制公钥给gitlab
server11安装git,建立连接
[root@server11 .ssh] yum install git
[root@server11 ~] git clone git@172.25.42.11:root/demo.git 复制得到
ssh成功建立连接
通过ssh克隆,可以发现帮你在/root生成了一个demo目录,进入目录,拉取了README.md
[root@server11 ~] cd demo/
[root@server11 demo] ls
README.md
[root@server11 demo] git remote -v
origin git@172.25.42.11:root/demo.git (fetch)
origin git@172.25.42.11:root/demo.git (push)
上传
Git 提供了一个跳过使用暂存区域的方式, 只要在提交的时候,给 git commit 加上-a选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤
首先在demo目录中创建了一个index.html文件,提交到版本库,然后push上传到gitlab
[root@server11 demo] git config --global user.name "ck"
[root@server11 demo] git config --global user.email ck@westos.org
[root@server11 demo] git commit -a -m "add index.html"
# On branch main
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# index.html
nothing added to commit but untracked files present (use "git add" to track)
[root@server11 demo] git add index.html
[root@server11 demo] git status
# On branch main
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: index.html
#
[root@server11 demo] git status -s
A index.html
[root@server11 demo] git commit -m "index.html"
[main c71496d] index.html
1 file changed, 1 insertion(+)
create mode 100644 index.html