千家信息网

Gitlab部署与应用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,[root@localhost ~]# mkdir xgp [root@localhost ~]# cd xgp/[root@localhost xgp]# git init 初始化空的 Git 版本
千家信息网最后更新 2026年11月03日Gitlab部署与应用

[root@localhost ~]# mkdir xgp [root@localhost ~]# cd xgp/[root@localhost xgp]# git init 初始化空的 Git 版本库于 /root/xgp/.git/[root@localhost xgp]# vim xgp.txt[root@localhost xgp]# cat xgp.txt 111master[root@localhost xgp]# git add  xgp.txt[root@localhost xgp]# git commit -m "第一次提交从master分支"[master(根提交) b211b8e] 第一次提交从master分支 1 file changed, 1 insertion(+) create mode 100644 xgp.txt

首先,我们创建 dev 分支,然后切换到 dev 分支:
[root@localhost xgp]# git checkout -b dev
切换到一个新分支 'dev'


git checkout 命令加上-b 参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev
Switched to branch 'dev'

然后,用 git branch 命令查看当前分支:
[root@localhost xgp]# git branch

  • dev
    Master

git branch 命令会列出所有分支,当前分支前面会标一个*号。

然后,我们就可以在 dev 分支上正常提交,比如对 xgp.txt 做个修改,加上一行:
[root@localhost xgp]# cat xgp.txt
111master
Qqqqdve 添加的

然后提交:

[root@localhost xgp]# git add xgp.txt[root@localhost xgp]# git commit  -m "第一次dev"[dev eac3426] 第一次dev 1 file changed, 1 insertion(+)

现在, dev 分支的工作完成,我们就可以切换回 master 分支:
[root@localhost xgp]# git checkout master
切换到分支 'master'

切换回 master 分支后,再查看一个 xgp.txt 文件,刚才添加的内容不见了!因为那个提交是在 dev 分支上,而 master分支此刻的提交点并没有变:
[root@localhost xgp]# cat xgp.txt
111master

现在,我们把 dev 分支的工作成果合并到 master 分支上:

[root@localhost xgp]# git merge dev 更新 b211b8e..eac3426Fast-forward xgp.txt | 1 + 1 file changed, 1 insertion(+)

git merge 命令用于合并指定分支到当前分支。合并后,再查看 xgp.txt 的内容,就可以看到,和 dev 分支的最新提交是完全一样的。
注意到上面的 Fast-forward 信息, Git 告诉我们,这次合并是"快进模式",也就是直接把 master 指向 dev 的当前提交,所以合并速度非常快。
当然,也不是每次合并都能 Fast-forward,我们后面会讲其他方式的合并。
合并完成后,就可以放心地删除 dev 分支了:

查看一下

[root@localhost xgp]# git log commit eac342633a72b3590a019e4d758f4a60707acda2Author: admin Date:   Thu Nov 14 09:18:47 2019 +0800    第一次devcommit b211b8ef636e987166fb4a056fb778020f6518aeAuthor: admin Date:   Thu Nov 14 09:12:11 2019 +0800    第一次提交从master分支删除dev分支[root@localhost xgp]# git branch -d dev 已删除分支 dev(曾为 eac3426)。删除后,查看 branch,就只剩下 master 分支了:[root@localhost xgp]# git branch * master

因为创建、合并和删除分支非常快,所以 Git 鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在 master
分支上工作效果是一样的,但过程更安全。
小结
Git 鼓励大量使用分支:
查看分支: git branch
创建分支: git branch
切换分支: git checkout
创建+切换分支: git checkout -b
合并某分支到当前分支: git merge
删除分支: git branch -d

解决冲突
人生不如意之事十之八九,合并分支往往也不是一帆风顺的。
准备新的 xgp 分支,继续我们的新分支开发:

[root@localhost xgp]# git checkout  -b xgp切换到一个新分支 'xgp'修改 xgp.txt 最后一行,改为:[root@localhost xgp]# cat xgp.txt 111masterqqqqdve冲突    添加在 xgp分支上提交:[root@localhost xgp]# git add xgp.txt[root@localhost xgp]# git commit -m "xgp 冲突"[xgp 9a92c8f] xgp 冲突 1 file changed, 1 insertion(+)切换到 master 分支:[root@localhost xgp]# git checkout  master 切换到分支 'master'[root@localhost xgp]# cat xgp.txt 111masterQqqqdve在 master 分支上把 xgp.txt 文件的最后一行改为:[root@localhost xgp]# cat xgp.txt 111masterqqqqdvebug冲突   添加提交:[root@localhost xgp]# git add xgp.txt[root@localhost xgp]# git commit -m "1 提交 冲突"[master 43f4ad7] 1 提交 冲突 1 file changed, 1 insertion(+)

现在, master 分支和 xgp 分支各自都分别有新的提交,变成了这样:

这种情况下, Git 无法执行"快速合并",只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:
[root@localhost xgp]# git merge xgp
自动合并 xgp.txt
冲突(内容):合并冲突于 xgp.txt
自动合并失败,修正冲突然后提交修正的结果。

果然冲突了! Git 告诉我们, xgp.txt 文件存在冲突,必须手动解决冲突后再提交。 git status 也可以告诉我们冲突的文件:

[root@localhost xgp]# git  status # 位于分支 master# 您有尚未合并的路径。#   (解决冲突并运行 "git commit")## 未合并的路径:#   (使用 "git add ..." 标记解决方案)##   双方修改:     xgp.txt#修改尚未加入提交(使用 "git add" 和/或 "git commit -a")我们可以直接查看 xgp.txt 的内容:[root@localhost xgp]# cat xgp.txt 111masterqqqqdve<<<<<<< HEAD    #删除bug冲突=======   #删除冲突-----------xgp    #删除再提交:[root@localhost xgp]# vim xgp.txt [root@localhost xgp]# git add xgp.txt[root@localhost xgp]# git commit -m "解决冲突"[master 8a29ce6] 解决冲突

现在, master 分支和xgp分支变成了下图所示:

用带参数的 git log 也可以看到分支的合并情况
[root@localhost xgp]# git log --graph --pretty=oneline --abbrev-commit

  • 8a29ce6 解决冲突
    |\
    | * 9a92c8f xgp 冲突
  • | 43f4ad7 1 提交 冲突
    |/ ``
  • eac3426 第一次dev
  • b211b8e 第一次提交从master分支

[root@localhost xgp]# cat xgp.txt
111master
qqqqdve
bug冲突
冲突

最后,删除 xgp 分支:

[root@localhost xgp]# git branch -d xgp 已删除分支 xgp(曾为 9a92c8f)。

工作完成。
小结
当 Git 无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用 git log --graph 命令可以看到分支合并图。

分支管理策略
通常,合并分支时,如果可能, Git 会用 Fast forward 模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用 Fast forward 模式, Git 就会在 merge 时生成一个新的 commit,这样,从分支历史上就可以看出分
支信息。
下面我们实战一下--no-ff 方式的 git merge:
首先,仍然创建并切换 dev 分支:

[root@localhost xgp]#  git checkout  -b dev切换到一个新分支 'dev'修改 readme.txt 文件,并提交一个新的 commit:[root@localhost xgp]# cat xgp.txt 111masterqqqqdvebug冲突冲突强制禁用 Fast forward  #添加[root@localhost xgp]# git add  xgp.txt   # 提交到缓存[root@localhost xgp]# git commit -m "强制禁用 Fast forward "   #提交到版本库[dev ea40f66] 强制禁用 Fast forward 1 file changed, 1 insertion(+)

现在,我们切换回 master:

[root@localhost xgp]# git checkout master切换到分支 'master'准备合并 dev 分支,请注意--no-ff 参数,表示禁用 Fast forward:[root@localhost xgp]# git merge --no-ff -m "merge with no-ff" devMerge made by the 'recursive' strategy. xgp.txt | 1 + 1 file changed, 1 insertion(+)

因为本次合并要创建一个新的 commit,所以加上-m 参数,把 commit 描述写进去。
合并后,我们用 git log 看看分支历史:

[root@localhost xgp]# git log --graph --pretty=oneline --abbrev-commit*   50623ba merge with no-ff|\  | * ea40f66 强制禁用 Fast forward|/  *   8a29ce6 解决冲突|\  | * 9a92c8f xgp 冲突* | 43f4ad7 1 提交 冲突|/  * eac3426 第一次dev* b211b8e 第一次提交从master分支

可以看到,不使用 Fast forward 模式, merge 后就像这样:

Bug 分支
软件开发中, bug 就像家常便饭一样。有了 bug 就需要修复,在 Git 中,由于分支是如此的强大,所以,每个 bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。当你接到一个修复一个代号 101 的 bug 的任务时,很自然地,你想创建一个分支 issue-101 来修复它,但是,等等,当前正在 dev 上进行的工作还没有提交:

并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需 1 天时间。但是,必须在两个小时内修复该
bug,怎么办?
幸好, Git 还提供了一个 stash 功能,可以把当前工作现场"储藏"起来,等以后恢复现场后继续工作:

制作一个测试文件

[root@localhost xgp]# vim xgp.txt[root@localhost xgp]# cat xgp.txt 111masterqqqqdvebug冲突冲突强制禁用 Fast forward测试存储区 #添加[root@localhost xgp]# vim xxx.txt[root@localhost xgp]# git add  xgp.txt  xxx.txt[root@localhost xgp]# git status 位于分支 dev 要提交的变更:   (使用 "git reset HEAD ..." 撤出暂存区)修改:      xgp.txt 未跟踪的文件:   (使用 "git add ..." 以包含要提交的内容)    xxx.txt [root@localhost xgp]# git stash Saved working directory and index state WIP on dev: ea40f66 强制禁用 Fast forward  HEAD 现在位于 ea40f66强制禁用 Fast forward[root@localhost xgp]# git status # 位于分支 master无文件要提交,干净的工作区

现在,用 git status 查看工作区,就是干净的(除非有没有被 Git 管理的文件),因此可以放心地创建分支来修复bug。
首先确定要在哪个分支上修复 bug,假定需要在 master 分支上修复,就从 master 创建临时分支:
[root@localhost xgp]# git checkout dev
切换到分支 'dev'
现在修复 bug,需要把"Git is free software ..."改为"Git is a free software ...", 然后用 git stash pop,恢复的同时把 stash 内容也删了:
先查看一下

[root@localhost xgp]# git stash  liststash@{0}: WIP on master: 88eeb08 提交[root@localhost xgp]# git stash  show xgp.txt | 1 + xxx.txt | 1 + 2 files changed, 2 insertions(+)     恢复[root@localhost xgp]# git stash  pop 位于分支 dev 要提交的变更:   (使用 "git reset HEAD ..." 撤出暂存区)    新文件:    xxx.txt 尚未暂存以备提交的变更:   (使用 "git add ..." 更新要提交的内容)   (使用 "git checkout -- ..." 丢弃工作区的改动)    修改:      xgp.txt丢弃了 refs/stash@{0} (f5b7fdc796da9978e268083f6985ed5ba28ec373)[root@localhost xgp]# git status 位于分支 dev要提交的变更:   (使用 "git reset HEAD ..." 撤出暂存区)    新文件:    xxx.txt 尚未暂存以备提交的变更:   (使用 "git add ..." 更新要提交的内容)  (使用 "git checkout -- ..." 丢弃工作区的改动)修改:      xgp.txt[root@localhost xgp]# git commit  -m "测试存储区 master提交暂存区 devtij交版本"[dev 1256166] 测试存储区 master提交暂存区 devtij交版本 1 file changed, 1 insertion(+) create mode 100644 xxx.txt[root@localhost xgp]# git status  位于分支 dev尚未暂存以备提交的变更:   (使用 "git add ..." 更新要提交的内容)   (使用 "git checkout -- ..." 丢弃工作区的改动)    修改:      xgp.txt修改尚未加入提交(使用 "git add" 和/或 "git commit -a")   #需要提交[root@localhost xgp]# git add *      #提交

查看一下
[root@localhost xgp]# ls
xgp.txt xxx.txt #可以看到已经恢复成功

切换到master分支合并分支
[root@localhost xgp]# git merge dev
更新 88eeb08..a1a9698
Fast-forward
xgp.txt | 1 +
xxx.txt | 1 +
2 files changed, 2 insertions(+)
create mode 100644 xxx.txt

小结
修复 bug 时,我们会通过创建新的 bug 分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场 git stash 一下,然后去修复 bug,修复后,再 git stash pop,回到工作现场。

Feature 分支
软件开发中,总有无穷无尽的新的功能要不断添加进来。
添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建
一个 feature 分支,在上面开发,完成后,合并,最后,删除该 feature 分支。
现在,你终于接到了一个新任务:开发代号为 Vulcan 的新功能,该功能计划用于下一代星际飞船。
于是准备开发:

[root@localhost xgp]# git checkout dev A   xx.txt切换到分支 'dev'[root@localhost xgp]# git checkout dev A   xx.txt切换到分支 'dev'[root@localhost xgp]# vim xgp.txt [root@localhost xgp]# vim xx.txt [root@localhost xgp]# git add  *[root@localhost xgp]# git stash Saved working directory and index state WIP on dev: a1a9698 存储quHEAD 现在位于 a1a9698 存储qu[root@localhost xgp]# git status # 位于分支 dev无文件要提交,干净的工作区[root@localhost xgp]# git stash apply  位于分支 dev 要提交的变更:   (使用 "git reset HEAD ..." 撤出暂存区)    新文件:    xx.txt 尚未暂存以备提交的变更:   (使用 "git add ..." 更新要提交的内容)  (使用 "git checkout -- ..." 丢弃工作区的改动)    修改:      xgp.txt[root@localhost xgp]# git stash list stash@{0}: WIP on dev: a1a9698 存储qu[root@localhost xgp]# git stash drop 丢弃了 refs/stash@{0} (0ab463ebbc4ee7f3a19cd8cadafd9ebe7b390aa9)

5 分钟后,开发完毕:

[root@localhost xgp]# git commit  -m "强制删除分支"[dev 81d2812] 强制删除分支 1 file changed, 2 insertions(+) create mode 100644 xx.txt

切回 dev,准备合并:

[root@localhost xgp]# git checkout  master M   xgp.txt切换到分支 'master'[root@localhost xgp]# git branch  -d dev error: 分支 'dev' 没有完全合并。如果您确认要删除它,执行 'git branch -D dev'。强制删除[root@localhost xgp]# git branch -D dev已删除分支 dev(曾为 81d2812)。

多人协作
推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样, Git 就会把该分支推送
到远程库对应的远程分支上:
浏览器登陆github换个密钥


[root@localhost ~]# ssh-keygen -t rsa -C "2877364346@qq.com" #linux生成密钥
然后把密钥放在githup放置密钥的地方

把刚刚复制的到Linux里克隆到根目录和xgp目录

  302  cd  303  ssh-keygen -t rsa -C "2877364346@qq.com"  304  cat /root/.ssh/id_rsa.pub   305  git clone git@github.com:xgp666/xgp.git  306  git clone git@github.com:xgp666/test.git  307  cd xgp/  308  git clone git@github.com:xgp666/test.git  309  cd test/  310  git checkout -b dev  311  vim index.html  312  ls  313  git add index.html  314  git commit -m "from /xgp"  315  git push origin dev

浏览器查看一下

删除远程分支
[root@localhost test]# git branch -d dev
error: 无法删除您当前所在的分支 'dev'。
[root@localhost test]# git branch -r -d origin/dev
已删除远程分支 origin/dev(曾为 63aeb0a)。
[root@localhost test]# git push origin :dev
To git@github.com:xgp666/test.git

  • [deleted] dev

    删除库




    持续集成之 Gitlab 安装

    rpm -ivh gitlab-ce-11.9.8-ce.0.el6.x86_64.rpm #安装

  1. 配置启动 gitlab
    gitlab-ctl reconfigure
  2. 查看端口
  3. 浏览器登陆

创建项目

克隆项目到本地
项目路径:

Linux克隆项目
git clone git@192.168.1.30:root/xgp-demo.git

336  git clone  git@192.168.1.30:root/xgp-demo.git  337  cd xgp-demo/  338  vim xgp.txt  339  git add  xgp.txt  340  git commit -m "test"  341  git push  origin master

修改git配置文件

vim  /etc/gitlab/gitlab.rb  修改external_url 'http://192.168.1.30'  #13初始化一下,重启一下gitlab-ctl  reconfiguregitlab-ctl  restart

浏览器查看,时间比较长


分支 冲突 切换 工作 文件 强制 内容 第一次 尚未 工作区 开发 命令 存区 存储 更新 模式 参数 密钥 浏览器 版本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 广东万易互联网科技有限公司惠州分公司 互联网科技工作委员会毛军 科技赋能下的互联网金融 深圳恒合互联网络科技有限公司 北京互联网科技 高科技与互联网 火传媒上海互联网科技 科技与互联网的利与弊 语蝶互联网科技有限公司 哈尔滨屹滨互联网科技有限公司 米聚互联网科技南京有限公司排面 高科技互联网发展前景如何 智帮互联网科技公司最近动向 广东工业互联网大赛深圳学泰科技 工业互联网科技创业 版纳互联网科技选哪家 科技互联网经济论坛 安徽零酒互联网科技有限公司 互联网对科技影响 菲比寻常互联网科技 郑州华宇互联网科技 上海万想互联网科技 科技互联网创业计划书 人人互联网科技是培训 随着互联网科技发展 互联网科技研发水平 上海互联网科技公司ppt 广西科技产业互联网是什么 西安左小互联网科技有限公司
0