4、git和gitlab的配置(1)


4.0、服务器说明:

服务器名称

ip地址

controller-node1

172.16.1.90



4.1、git介绍:

1、git分布式图:

2、git区域:

3、四种状态:

上面的操作在工作目录——暂存区域——本地仓库中循环

4.2、git编译安装:

1、安装git需要的依赖包:

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

2、下载git包:

mkdir /tools/

cd /tools/

wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.20.0.tar.gz

3、编译:

mkdir /application/

tar -xzf git-2.20.0.tar.gz

cd git-2.20.0

make prefix=/application/git-2.20.0/ all

echo $?

make prefix=/application/git-2.20.0/ install

echo $?

4、设置环境变量:

ln -s /application/git-2.20.0/ /application/git

rm -f /usr/bin/git

ln -s /application/git/bin/git /usr/bin/git

5、查看版本:

git --version

git version 2.20.0

6、初始化git仓库:

mkdir /test/

cd /test/

git init

初始化空的 Git 仓库于 /test/.git/

7、设置git仓库信息:

git config --global user.name "dev01"

git config --global user.email [email protected]

git config --list

user.name=lc

[email protected]

core.repositoryformatversion=0

core.filemode=true

core.bare=false

core.logallrefupdates=true

4.3、git常用命令:

注意该命令只能在建立的仓库目录下进行;

git add <file>

#加入暂存区(索引区);. 代表加入所有;

git status #查看状态;

git rm --cached <file>

#从暂存区中移除,回滚暂存区中的数据;

git commit <file> -m <"注释">

#提交更新,不加文件名提交所有暂存区的文件;

git log

#查看本地库中的文件;

git status -s

#状态概览;

git diff

#尚未暂存的文件;
git diff --staged

#暂存区文件;

git reset

#回滚;

git rm <file>

#从版本库中移除,删除本地的文件,不会删除git log,方便git reset回滚版本库文件;

#相当于 rm <file>

git mv

#相当于 mv、git rm、git add 三个命令;

4.4、git分支管理:

1、分支图:

初始建立分支后,分支节点的 文件 和 master上的文件都是相同的,继承 master 分支进行自己分支的推进;

在不同的分支下创建的文件,只有在切换到该分支下才能查看;

2、常用的分支命令:

git branch about

#创建分支;

git checkout <branch>

#切换分支,切换指针;

git checkout -- <file>

#撤销对文件的修改,从提交库中拉出文件,覆盖工作目录中修改的文件,回滚工作目录;

git branch

#查看当前工作的分区;

git branch -d <branch>

#删除指定的分支;

git merge <branch>

#将指定的分支合并到 master 主分支;

#把分支上的代码merge到master,需要在master上进行分支,合并到master上的代码不能回滚到分支

#回滚的化只能单独分支的回滚;

git branch --merged

#查看已经合并到master上的分支;

git branch --no-merged

#查看没有合并到master上的分支;

3、回滚本地仓库的命令:

git reset --hard <本地库文件id>

#回滚到指定的本地仓库并清空工作目录和缓存区,就算本地物理文件删除也可以还原;

git reset --soft <本地库文件id>

#回滚到指定的本地仓库,工作目录和缓存区不会发生改变;

git reset --mixed <本地库文件id>

#默认选项,回滚本地仓库和缓存区,工作目录不会受影响;

4、回滚后回到之前的本地库:

git reflog

#分析git日志命令;

#git reflog命令分你的是所有分支的头指针的日志来查找出你在重写历史上可能丢失的提交;

git checkout <版本id>

#回滚到哪个本地库的id;

git status

#git master 的分支状态没有;

git branch test

#在丢失状态的 master 节点上创建分支;

git checkout master

git merge test

#新的分支内容merge到master;

git status

#发现git master的分支发生了改变;

4.5、git远程仓库:

1、git远程库图解:

2、git远程库命令:

git clone http://github.com/lc/scripts.git

#克隆git远程库;

#clone是本地没有repository时,将远程repository整个下载过来。

git fetch

#fetch是本地有repository时,将远程repository里新的commit数据(如有的话)下载过来,要手动与本地代码merge。

git pull

#pull是本地有repository时,将远程repository里新的commit数据(如有的话)下载过来,并且与本地代码merge。

git remote add origin http://172.16.1.100/lc.git

#添加git远程库,origin是别名,代表url路径;

git remote -v

#查看git远程库的地址;

git push origin master

#将 master 分支 push 到git远程库;

git remote rename origin gitlib

#更改远程库的信息;

git tag -a v1.0 -m "finish"

#创建标记-d,删除标签;

git tag

#查看git版本标记;

4.6、gitlab安装和配置:

1、gitlab介绍:

(1)gitlab基本介绍:

gitlab是一个基于git的源码托管解决方案;

gitlab是基于ruby on rails开发的;

gitlab集成了ngix postgreSQL redis sidekiq等组件;

(2)gitlab安装要求:

Centos7 64位;

内存 16GB+;

cpu 16颗;

2、安装依赖包:

yum install curl policycoreutils policycoreutils-python openssh-server openssh-clients postfix -y

3、开启相关服务:

(1)ssh服务(用于远程git clone仓库):

systemctl start sshd

systemctl enable sshd

4、安装gitlib:

cd /tools/

weget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.6.0-ce.0.el7.x86_64.rpm

rpm -ivh gitlab-ce-11.6.0-ce.0.el7.x86_64.rpm

5、修改配置文件:

(1)配置访问gitlab的url地址,git clone库资源的地址,如果有多个网卡,并不妨碍访问管理和配置;

vim /etc/gitlab/gitlab.rb

external_url 'http://172.16.1.90'

(2)使修改的配置文件生效;

gitlab-ctl reconfigure

(3)重启gitlaba:

gitlab-ctl restart

(4)启动并加入到开机自启动:

systemctl start gitlab-runsvdir.service

systemctl enable gitlab-runsvdir.service

(5)查看端口号信息:

netstat -tunlp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:8060 0.0.0.0:* LISTEN 30777/nginx: master

tcp 0 0 127.0.0.1:9121 0.0.0.0:* LISTEN 30854/redis_exporte

tcp 0 0 127.0.0.1:9090 0.0.0.0:* LISTEN 30814/prometheus

tcp 0 0 127.0.0.1:9187 0.0.0.0:* LISTEN 30801/postgres_expo

tcp 0 0 127.0.0.1:9093 0.0.0.0:* LISTEN 30731/alertmanager

tcp 0 0 127.0.0.1:9100 0.0.0.0:* LISTEN 30795/node_exporter

tcp 0 0 127.0.0.1:9229 0.0.0.0:* LISTEN 30757/gitlab-workho

tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 30982/unicorn maste

tcp 0 0 127.0.0.1:9168 0.0.0.0:* LISTEN 30753/puma 3.12.0 (

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 30777/nginx: master

tcp 0 0 127.0.0.1:8082 0.0.0.0:* LISTEN 30876/sidekiq 5.2.3

tcp 0 0 127.0.0.1:9236 0.0.0.0:* LISTEN 30743/gitaly

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1082/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1174/master

tcp6 0 0 :::9094 :::* LISTEN 30731/alertmanager

tcp6 0 0 ::1:9168 :::* LISTEN 30753/puma 3.12.0 (

tcp6 0 0 :::22 :::* LISTEN 1082/sshd

tcp6 0 0 ::1:25 :::* LISTEN 1174/master

udp 0 0 127.0.0.1:323 0.0.0.0:* 795/chronyd

udp 0 0 0.0.0.0:57555 0.0.0.0:* 36118/local

udp6 0 0 ::1:323 :::* 795/chronyd

udp6 0 0 :::9094 :::* 30731/alertmanager

6、http登录gitlab:

(1)输入新的密码:

(2)登录:

4.7、gitlab详解:

1、命令:

gitlab-ctl status

#查看gitlib各个组件的状态;

gitlab-ctl start

#启动gitlab服务;

gitlab-ctl stop

#关闭gitlab服务;

gitlab-ctl restart

#重启gitlab服务;

gitlab-ctl tail nginx

#查看gitlab组件nginx的日志信息;

gitlab-ctl reconfigure

#重置gitlab主配置文件;

gitlab-ctl show-config

#验证gitlab主配置文件;

2、gitlab组件:

nginx #静态web服务器;

gitlab-shell #用于处理git命令和修改authorized keys 列表;

gitlab-workhorse #轻量级的反向代理服务器;

logrotate #日志文件管理工具;

postgresql #数据库;

redis #缓存数据库;

sidekiq #用于在后台执行队列任务(异步执行);

unicorn #gitlab rails应用是托管在这个服务器上面的;

3、gitlab目录:

/var/opt/gitlab/git-data/repositories/

#默认的库存储目录;

/opt/gitlab/

#应用代码和相应的依赖程序目录;

/var/opt/gitlab/

#gitlab-ctl reconfigure命令编译后的应用数据和配置文件,不需要人为修改配置;

/etc/gitlab/

#gitlab的配置文件目录;

/var/log/gitlab/

#gitlab各个组件的日志存放目录;

/var/opt/gitlab/backups/

#gitlab默认备份路径;

4.8、gitlab使用流程:

1、root用户登录操作:

(1)创建组:

1)创建:

2)添加组信息:

(2)创建用户:

1) 创建:

2)添加用户内容:

3)初始化用户密码:

4)按照以上步骤分别添加dev02(开发02)、pm(项目经理),两个用户;

(3)创建项目:

1)创建:

2)填写项目内容:

3)项目信息:

(4)在项目中为用户授权:

1)

2)

2、pm用户登录操作:

(1)创建主分支:

1)

2)

3)

4.9、打通gitlab和与 git linux、windows客户端的通信:

1、git linux 客户端(dev01):

(1)在linux上安装 git ,参考前面的“4.2、git编译安装:”节;

(2)在linux客户端生成ssh秘钥对:

ls /root/.ssh/

ssh-keygen

ls /root/.ssh/

id_rsa id_rsa.pub

cat /root/.ssh/id_rsa.pub

(3)dev01登录,添加ssh公钥:

1)

2)

(4)验证:

1)http连接验证:

pwd

/root

git clone http://172.16.1.90/java/app01.git

正克隆到 'app01'...

Username for 'http://172.16.1.90': dev01

Password for 'http://[email protected]':

remote: Enumerating objects: 3, done.

remote: Counting objects: 100% (3/3), done.

remote: Total 3 (delta 0), reused 0 (delta 0)

展开对象中: 100% (3/3), 完成.

2)ssh连接验证:

rm -rf /root/aap01/

git clone [email protected]:java/app01.git

正克隆到 'app01'...

The authenticity of host '172.16.1.90 (172.16.1.90)' can't be established.

ECDSA key fingerprint is SHA256:1YdZ6fcsUnerAJsAm7qF7obWgE+pRgy0yyOewlb/Pto.

ECDSA key fingerprint is MD5:02:09:2b:53:5b:6d:a1:73:27:e2:e1:5f:f7:5d:02:68.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '172.16.1.90' (ECDSA) to the list of known hosts.

remote: Enumerating objects: 3, done.

remote: Counting objects: 100% (3/3), done.

remote: Total 3 (delta 0), reused 0 (delta 0)

接收对象中: 100% (3/3), 完成.

3)说明:

使用 git clone 命令会将远程连接 gitlab 的方式一起保存下来;

git remote -v

origin [email protected]:java/app01.git (fetch)

origin [email protected]:java/app01.git (push)

cd /root/app01/

git pull

已经是最新的。

#如果使用的http clone远程库的代码,在使用git pull 命令是需要输入账户和密码,而使用ssh clone

#远程库不需要用户名和密码;

2、git windows 客户端(dev02):

(1)下载 git windows 客户端,版本号要和linux中使用的一致;

https://github.com/git-for-windows/git/releases/download/v2.20.0.windows.1/Git-2.20.0-64-bit.exe

(2)安装:

一路默认;

(3)使用:
新建目录D:\git,右键鼠标,点击选择‘Git Bash Here’;

(4)生成ssh秘钥:

(5)dev02登录并加入ssh公钥:

(6)验证:

1)初始化 git 信息:

git config --global user.name "dev02"

git config --global user.email [email protected]

2)git clone:

git clone [email protected]:java/app01.git

猜你喜欢

转载自www.cnblogs.com/LiuChang-blog/p/12320949.html