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 dev01@qq.com
git config --list
user.name=lc
user.email=2504164765@qq.com
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远程仓库:
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://dev01@172.16.1.90':
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 git@172.16.1.90: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 git@172.16.1.90:java/app01.git (fetch)
origin git@172.16.1.90: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 dev02@qq.com
2)git clone:
git clone git@172.16.1.90:java/app01.git
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏