程序员必会的git语法及gitlabgithub应用

Posted 宝山的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员必会的git语法及gitlabgithub应用相关的知识,希望对你有一定的参考价值。

文章目录

3分钟掌握git语法及gitlab、github应用

关于作者

  • 作者介绍


    🍊 博客主页作者主页:rivers.blog.csdn.net
    🍊 简介:云计算领域优质创作者🏆、CSDN 博客专家、在校期间参与众多计算机相关的省赛、国赛,斩获系列荣誉。考取华为资深工程师、红帽工程师等系列认证。

    🍊 关注我简历模板、学习资料、文档下载、技术支持 都可以私信我哦!
    让生命像一团热烈燃烧的火,直到死亡才能使它熄灭


前言

  • 博文介绍

    ​ 亲爱的粉丝们,在这里,首先祝大家新年快乐。新的梦想,新的希望,带着微笑,拥抱阳光,往事不回头,未来不将就,希望2022百毒不侵,活的认真,笑的放肆。

    ​ 2022年我们注定不凡,愿你我 踔厉奋发,笃行不怠,致广大而尽精微,加油!

    ​ 从今天开始,我将继续更新博文,争取2022年分享一套Centos7.x系列的linux云计算技术。将我所学、所闻、所知的都分享出来,如果你觉得本文有用,欢迎点赞、关注。

一、控制版本

1.1 什么是版本

  • 最初指一种书籍经过多次传抄、刻印或以其他方式而形成的各种不同本子
  • 在我们计算机领域,版本则是指 一个文件或代码经过修改后,每一次修改都可以称之为一个版本

1.2 什么是控制版本

  • 版本控制软件提供完备的版本管理功能,用于存储、追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是软件公司的基础设施。版本控制软件的最高目标,是支持软件公司的配置管理活动,追踪多个版本的开发和维护活动,及时发布软件。
  • 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统

1.3 版本管理工具

  • 集中式管理(cvs、svn)

    集中式版本控制系统,版本库是集中存放在中央服务器的 而干活的时候,用的都是自己的电脑
    所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器 中央服务器就好比是一个图书馆
    你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆
    
    
    集中式版本控制系统最大的毛病就是必须联网才能工作 所有的版本都在一个服务器上面 如果服务挂了, 所有记录的版本都没了
    
  • 分布式管理(git)

    分布式版本控制系统,则不需要中央服务器
    每个协同开发者都拥有一个完整的版本库
    这么一来,任何协同开发者用的服务器发生故障,事后都可以用其它协同开发者本地仓库恢复
    

二、git 版本管理

2.1 git 介绍

  • git是一款开源的分布式版本管理工具,作者Linux之父-Linus
  • git官网

2.2 git 安装

  • 下载地址:https://git-scm.com/download/

  • linux系统上,直接yum 安装

    # YUM 安装git
    [root@jenkins_server ~]#yum -y install git
    
    [root@jenkins_server ~]# git --version
    git version 1.8.3.1
    [root@jenkins_server ~]# 
    
    #查看参数帮助
    [root@vm1 ~]# git --help  
    git的操作可以说只需要git一条命令加参数即可
    

2.3 git工作转态

  • Git 管理项目时,文件流转分为三个工作区域(工作目录、工作目录、以及本地仓库)

    Git 的工作目录:从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录,实际上都是从 Git 目录中的压缩对象数据库中提取出来的
    
    暂存区域:是个简单的文件 .git目录之下,名为index,它一般很小,一般不超过1KB左右 一般都放在 Git 目录中,有时候人们会把这个文件叫做索引文件
    
    以及本地仓库:当我们在某个目录下运行git init命令后,在该目录下便会生成一个.git的子目录,这个目录是隐藏的。它是 Git 用来保存元数据和对象数据库的地方,这个目录可以说是Git的核心
    
  • 对于任何一个文件,在 Git 内都只有三种状态

    1.已修改(modified) 已修改表示修改了某个文件,但还没有提交保存
    2.已暂存(staged) 已暂存表示把已修改的文件放在下次提交时要保存的清单中
    3.已提交(committed) 已提交表示该文件已经被安全地保存在本地数据库中了
    

2.4 git 工作流

  • 工作区

  • 工作流

    工作目录(working directory): 也可叫工作区. 是存放项目代码文件的一个目录。
    
    仓库(repository) : 也可叫版本库. 在git init命令初始化工作目录后会产生一个隐藏的子目录.git, 可以将其理解为git的仓库或版本库。
    
    仓库分为本地仓库与远程仓库
    
    
    做好的改变,需要先放在暂存区,确认无误后,再一次git commit 保存
    

2.5 git基本操作

1.Ggit 身份标识

  • git 身份标识

  • 这里设置 github上的账号、邮箱,保持一致

    git config --global user.name "自已的名字"
    git config --global user.email "自已的邮箱地址"
    
    [root@jenkins_server ~]# git config --global user.name "hbs"
    [root@jenkins_server ~]# git config --global user.email "rivers_hbs@163.com"
    
    #查看配置的信息 git config --list
    
    [root@jenkins_server ~]# git config --list 
    user.name=hbs
    user.email=rivers_hbs@163.com
    
    # 为啥需要设置标识呢
    因为git是分布式版本控制系统,不同的人提交代码需要区分,所以每个人都要设置一个身份标识。如果不设置的话谁会知道你这个开发者是A,B,还是C?
    
    查看当前配置的远程仓库
    git remote -v  
    
    删除本地指定的远程地址
    git remote remove origin
    

2.git 初始化工作目录

  • 初始化工作目录 git init
    # 1.首先这里采用的是linux,不是windows ,所有我们先创建一个工作目录 git-work
    
    [root@jenkins_server ~]# mkdir git-work
    [root@jenkins_server ~]# ls
    anaconda-ks.cfg  git-work
    
    # 2.进入自己创建的工作目录,并查看
      oot@jenkins_server ~]# cd git-work/
    [root@jenkins_server git-work]# ls 
    [root@jenkins_server git-work]# ls -a
    .  ..
    
    # 初始化 工作目录
    [root@jenkins_server git-work]# git init 
    Initialized empty Git repository in /root/git-work/.git/
    [root@jenkins_server git-work]# ls -a
    .  ..  .git
    
    在git init命令初始化工作目录后会产生一个隐藏的子目录.git, 可以将其理解为git的仓库或版本库。
     
     # 查看 工作状态
    [root@jenkins_server git-work]# git status
    # On branch master
    #
    # Initial commit
    #
    nothing to commit (create/copy files and use "git add" to track) 
     现在是 nothing to commit ,没有可以提交的,所以作为开发者,我们临时准备了一个vx.py文件。再次看出状态
    
    
    [root@jenkins_server git-work]# vim wx.py
    [root@jenkins_server git-work]# cat vx.py 
    hello world
    [root@jenkins_server git-work]# 
    
    
    [root@jenkins_server git-work]# git status 
    # On branch master
    #
    # Initial commit
    #
    # Untracked files:
    #   (use "git add <file>..." to include in what will be committed)
    #
    #	vx.py
    nothing added to commit but untracked files present (use "git add" to track)
    
     再次查看状态时,发现有一个 vx.py 文件,需要使用git add 加入暂存区,现在还没有提交到仓库。相当于还没提交
    

3.git 提交版本

  • 提交版本 git add
    [root@jenkins_server git-work]# git add vx.py
    [root@jenkins_server git-work]# git status 
    # On branch master
    #
    # Initial commit
    #
    # Changes to be committed:
    #   (use "git rm --cached <file>..." to unstage)
    #
    #	new file:   vx.py
    #
    [root@jenkins_server git-work]# 
    git add 后,才真正的加入到暂存区,但是还没有保存。
    
    使用git add命令提交到暂存区(逆向操作为git rm --cached vx.py)
    
    
    
    [root@jenkins_server git-work]# git commit -m "v1_vx.py."
    [master (root-commit) b84d34a] v1_vx.py.
     1 file changed, 1 insertion(+)
     create mode 100644 vx.py
    [root@jenkins_server git-work]# git status 
    # On branch master
    nothing to commit, working directory clean
    [root@jenkins_server git-work]# 
    
    git commit 才算提交保存了。将已经同步的暂存区的状态保存为一个版本,此时三大区状态一致
    git commit -m "注释说明",建议给个说明
    
    提交第一个文件后,版本库.git子目录里就多了一个index
    [root@jenkins_server git-work]# ls .git/
    branches        description  index  objects
    COMMIT_EDITMSG  HEAD         info   refs
    config          hooks        logs
    
    使用 strings命令查看可以看到git add的文件列表
    
    [root@jenkins_server git-work]# strings .git/index 
    DIRC
    vx.py
    [root@jenkins_server git-work]# 
    
    注意:
    
    代码文件需要 commit 提交后才能纳入版本控制。
    可以使用git status查看工作目录里有哪些文件需要提交
    

  • 第一次 提交(第1个版本)

    创建一个工作目录
    [root@jenkins_server ~]# mkdir python
    [root@jenkins_server ~]# cd python/
    [root@jenkins_server python]# ls -a
    .  ..
    
    初始化目录
    [root@jenkins_server python]# git init 
    Initialized empty Git repository in /root/python/.git/
    [root@jenkins_server python]# ls
    [root@jenkins_server python]# ls -a
    .  ..  .git
    [root@jenkins_server python]# ls ./.git/
    branches  config  description  HEAD  hooks  info  objects  refs
    
    模拟开发者修改代码
    [root@jenkins_server python]# vim shell.sh
    [root@jenkins_server python]#  
    [root@jenkins_server python]# cat shell.sh 
    helloworld 1
    
    [root@jenkins_server python]#
    
    提交到 暂存区
    [root@jenkins_server python]# git add shell.sh
    [root@jenkins_server python]# git status 
    # On branch master
    #
    # Initial commit
    #
    # Changes to be committed:
    #   (use "git rm --cached <file>..." to unstage)
    #
    #	new file:   shell.sh
    #
    [root@jenkins_server python]# 
    
    第一次提交
    [root@jenkins_server python]# git commit -m "第一次提交"
    [master (root-commit) 4c63558] 第一次提交
     1 file changed, 2 insertions(+)
     create mode 100644 shell.sh
     查看文件状态
    [root@jenkins_server python]# git status 
    # On branch master
    nothing to commit, working directory clean
    [root@jenkins_server python]# 
    
    
    [root@jenkins_server python]# echo "helloworld 2" >>shell.sh 
    [root@jenkins_server python]# cat shell.sh 
    helloworld 1
    helloworld 2
    
    
  • 第二次修改后,提交(第2个版本)

    使用git status查看,信息告诉我们shell.sh被修改了
    [root@jenkins_server python]# git status 
    # On branch master
    # Changes not staged for commit:
    #   (use "git add <file>..." to update what will be committed)
    #   (use "git checkout -- <file>..." to discard changes in working directory)
    #
    #       modified:   shell.sh
    #
    no changes added to commit (use "git add" and/or "git commit -a")
    
    
    查看修改了什么
    [root@jenkins_server python]# git diff shell.sh
    diff --git a/shell.sh b/shell.sh
    index e4f340d..aea74ca 100644
    --- a/shell.sh
    +++ b/shell.sh
    @@ -1,2 +1,2 @@
     helloworld 1
    -
    +helloworld 2
    [root@jenkins_server python]# 
    
    
    加入到暂存区并查看状态
    [root@jenkins_server python]# git add shell.sh
    [root@jenkins_server python]# git status 
    # On branch master
    # Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage)
    #
    #       modified:   shell.sh
    #
    
    第二次提交
    [root@jenkins_server python]# git commit -m "第二次修改"
    [master ef67c67] 第二次修改
     1 file changed, 1 insertion(+), 1 deletion(-)
    [root@jenkins_server python]# git status 
    # On branch master
    nothing to commit, working directory clean
    [root@jenkins_server python]# 
    
    总结:
    工作目录中写好的代码文件需要先git add 文件名添加到暂存区,再git commit 文件名提交。以后每次修改都要重复前两步。
    git status查看工作目录中的状态
    git diff 文件名查看文件修改了什么
    

4.查看历史版本

  • 查看版本历史
    [root@jenkins_server python]# git log 
    commit ef67c67b55e79d0e819cf44a9b585a559acf02b5
    Author: hbs <rivers_hbs@163.com>
    Date:   Wed Feb 16 18:16:16 2022 +0800
    
        第二次修改
    
    commit 4c63558e595a21a8d5d94767662dfc8bddf04186
    Author: hbs <rivers_hbs@163.com>
    Date:   Tue Feb 15 22:48:08 2022 +0800
    
        第一次提交
    [root@jenkins_server python]# 
    
    使用git log --pretty=oneline查看提交的历史版本信息, 查看的显示信息更简洁。
    前面字符串你可以看作就是一个**版本号**(commit id)[root@jenkins_server python]# git log --pretty=oneline 
    ef67c67b55e79d0e819cf44a9b585a559acf02b5 第二次修改
    4c63558e595a21a8d5d94767662dfc8bddf04186 第一次提交
    [root@jenkins_server python]# 
    

5. 版本回退与还原

  • 版本回退与还原
    1, 使用git reset --hard HEAD回退到上一个版本(也就是第1个版本)
    
    [root@jenkins_server python]# git reset --hard HEAD^
    HEAD is now at 4c63558 第一次提交
    [root@jenkins_server python]# cat shell.sh 
    helloworld 1
    
    [root@jenkins_server python]# 
    
    
    2.使用git reset --hard 第2个版本号 (还原到第2个版本)
    [root@jenkins_server python]# git reflog 
    4c63558 HEAD@0: reset: moving to HEAD^
    ef67c67 HEAD@1: commit: 第二次修改
    4c63558 HEAD@2: commit (initial): 第一次提交
    [root@jenkins_server python]# git reset --hard ef67c67
    HEAD is now at ef67c67 第二次修改
    [root@jenkins_server python]# cat shell.sh 
    helloworld 1
    helloworld 2
    [root@jenkins_server python]# 
    
    
    
     回退到**上上**一个版本, 也就是回退两个版本,使用git reset --hard HEAD^^
    回退三个版本,使用git reset --hard HEAD^^^, 以此类推。
    如果回退100个版本,那用100个^符号不方便,可以换成git reset  --hard HEAD~100
    
    
    * 提交后的代码文件,使用git log查看当前版本及以前的历史版本。
    * 使用git reset --hard HEAD^或者`git reset --hard HEAD~100`实现版本回退。
    * 使用`git reflog`查看提交的所有操作及版本号
    
    * 使用git reset --hard 版本号你可以自由的在不同版本之间来回切换。
    

6.撤销修改与删除恢复

  • 撤销修改与删除恢复

    只要文件git add到了暂存区, 无论有没有git commit提交。误删除后都可以使用 git checkout -- 文件名`来恢复。
    
    如果文件没有`git add`到暂存区, 误删除了就没了。
    [root@jenkins_server python]# touch 1.py
    [root@jenkins_server python]# ls
    1.py  shell.sh
    [root@jenkins_server python]# 
    [root@jenkins_server python]# git add 1.py
    [root@jenkins_server python]# rm -f 1.py 
    [root@jenkins_server python]# ls
    shell.sh
    [root@jenkins_server python]# git checkout -- 1.py
    [root@jenkins_server python]# ls
    1.py  shell.sh
    [root@jenkins_server python]# 
    

7. 文件删除

  • 文件删除
    1, 没有git add到暂存区的文件**直接rm删除就ok
    
    2.git add添加到暂存区,但没有git commit提交的文件。需要rm删除本地,还要git rm 文件名删除
    
    [root@jenkins_server python]#  touch 3.py
    [root@jenkins_server python]#  git add 3.py
    
    [root@jenkins_server python]#  rm  -rf 3.py 
    [root@jenkins_server python]#  git rm 3.py
    rm '3.py'
    
    
    
    3.git add添加到暂存区,并且已经git commit提交的文件。需要rm删除本地,再git rm 文件名删除,最后再提交删除
    [root@jenkins_server python]# touch 2.py
    [root@jenkins_server python]# git add 2.py
    [root@jenkins_server python]# git commit -m "删除测试"
    [master 92387f8] 删除测试
     2 files changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 1.py
     create mode 100644 2.py
    [root@jenkins_server python]# rm -f 2.py 
    [root@jenkins_server python]# ls -a
    .  ..  1.py  .git  shell.sh
    [root@jenkins_server python]# git rm 2.py
    rm '2.py'
    [root@jenkins_server python]# git commit -m "删除了2.py"
    [master cc48a02] 删除了2.py
     1 file changed, 0 insertions(+), 0 deletions(-)
     delete mode 100644 2.py
    [root@jenkins_server python]# 
    
    

8.分支管理

  • 分支管理
    1. 查看分支
    [root@jenkins_server python]# git branch 
    * master
    [root@jenkins_server python]# 
    
    2.创建分支
    [root@jenkins_server python]# git branch rivers
    [root@jenkins_server python]# git branch 
    * master
      rivers
    [root@jenkins_server python]# 
    
    3.切换分支
    [root@jenkins_server python]# git checkout rivers 
    Switched to branch 'rivers'
    [root@jenkins_server python]# git branch 
      master
    * rivers
    [root@jenkins_server python]# 
    
    
    4.合并分支
    (1).在rivers分支上新开发了一个代码文件,添加并提交
    [root@jenkins_server python]# ls
    1.py  shell.sh
    [root@jenkins_server python]# echo "修改内容" > 1.py 
    [root@jenkins_server python]# git add 1.py
    [root@jenkins_server python]# git commit -m "增加了新内容"
    [rivers d7e2923] 增加了新内容
     1 file changed, 1 insertion(+)
    [root@jenkins_server python]# 
    
    (2)切换到master上分支后,却发现根本没有这个文件
    [root@jenkins_server python]# git checkout master 
    Switched to branch 'master'
    [root@jenkins_server python]# cat 1.py 
    [root@jenkins_server python]# 
    
    
    [root@jenkins_server python]# git checkout rivers 
    Switched to branch 'rivers'
    [root@jenkins_server python]# cat 1.py 
    修改内容
    [root@jenkins_server python]# 
    
    (3).合并分支,在查看能在master分支上查看到了
    [root@jenkins_server python]# git checkout master 
    Switched to branch 'master'
    [root@jenkins_server python]# git merge rivers 
    Updating cc48a02..d7e2923
    Fast-forward
     1.py | 1 +
     1 file changed, 1 insertion(+)
    [root@jenkins_server python]# cat 1.py 
    修改内容
    [root@jenkins_server python]# 
    
    
    
    5.分支冲突
    有些复杂的情况会造成冲突,这个时候git就不能帮我们自动的合并分支。我们就要手动处理冲突。
    
    (1).在rivers 分支修改文件
    [root@jenkins_server python]# git checkout rivers 
    Switched to branch 'rivers'
    [root@jenkins_server python]# echo "冲突测试" >> 1.py 
    [root@jenkins_server python]# cat 1.py 
    修改内容
    冲突测试
    [root@jenkins_server python]# 
    
    
    (2).提交rivers分支上的修改
    [root@jenkins_server python]# git add 1.py
    [root@jenkins_server python]# git commit -m "冲突测试"
    [rivers 1cf5e93] 冲突测试
     1 file changed, 1 insertion(+)
     
     (3).切回master分支,也修改相同的文件
     [root@jenkins_server python]# git checkout master 
    Switched to branch 'master'
    [root@jenkins_server python]# echo "再一次修改" >>1.py 
    [root@jenkins_server python]# cat 1.py 
    修改内容
    再一次修改
    [root@jenkins_server python]# 
     
     
    (4).提交master分支上的修改
    [root@jenkins_server python]# git add 1.py
    [root@jenkins_server python]# git commit -m "冲突测试"
    [master 1f648be] 冲突测试
     1 file changed, 1 insertion(+)
    [root@jenkins_server python]# 
    
    (5).合并rivers分支到master,就会出现冲突了
    [root@jenkins_server python]# git merge rivers 
    Auto-merging 1.py
    CONFLICT (content): Merge conflict in 1.py
    Automatic merge failed; fix conflicts and then commit the result.
    [root@jenkins_server python]#
    
    (6).手工解决冲突
    git使用<<<<<<<<<,=========,>>>>>>>>符号分割冲突的内容,手动删除这些符号,并修改成你想要的内容
    [root@jenkins_server python]# cat 1.py 
    修改内容
    i xiang xiugaide
    再一次修改
    
    冲突测试
    修改过de 
    
    [root@jenkins_server python]# 
    
    (7).解决冲突后添加并提交,最后再合并
    [root@jenkins_server python]# git add 1.py
    [root@jenkins_server python]# git commit -m "冲突解决"
    [master 1068d39] 冲突解决
    [root@jenkins_server python]# git merge rivers 
    Already up-to-date.
    [root@jenkins_server python]# 
    
    6.删除分支
    使用`git branch -d 分支名`来删除分支。
    注意:不能删除当前使用的分支.
    [root@jenkins_server python]# git branch 
    * master
      rivers
    [root@jenkins_server python]# git branch -d rivers 
    Deleted branch rivers (was 1cf5e93).
    [root@jenkins_server python]# git branch 
    * master
    [root@jenkins_server python]# 
    

三、github和gitlab 介绍和使用

3.1 github 与gitlab区别

  • GitHub是目前最火的开源项目代码托管平台。它是基于web的Git仓库,提供公有仓库和私有仓库,但私有仓库是需要付费的。

  • github官网地址: https://www.github.com

  • GitLab可以创建免费的私有仓库。

  • GitLab是利用 Ruby开发的一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

3.2 使用github远程仓库

  • 从centos服务器里上传一个项目

    首先准备一个工作目录,并且初始化
    [root@jenkins_server ~]# mkdir test1
    [root@jenkins_server ~]# cd test1/
    [root@jenkins_server test1]# git init 
    Initialized empty Git repository in /root/test1/.git/
    [root@jenkins_server test1]# ls -a
    .  ..  .git
    
    准备一个上传文件
    [root@jenkins_server test1]# echo "test" >>REEAME.md
    加入暂存区
    [root@jenkins_server test1]# git add REEAME.md
    提交 
    [root@jenkins_server test1]# git commit -m "fist commit" 
    [master (root-commit) b35a8b7] fist commit
     1 file changed, 1 insertion(+)
     create mode 100644 REEAME.md
     
     选择分支
    [root@jenkins_server test1]# git branch -M master
    建立远程连接 连接就是你的github仓库连接
    [root@jenkins_server test1]# git remote add origin https://github.com/wyhe/test.git
    push 推送到仓库
    [root@jenkins_server test1]# git push -u origin main 
    
    
  • 使用下面的命令可以实现https的密码缓存(下次不用再输密码了)

    git config --global credential.helper store
    
    免密push其实就是利用了ssh免密登录的原理:
    1. 在本地产生空密码密钥对
    2. 本地保留私钥,把公钥给对方
    3. 实现本地到远程的免密
    这里具体就做演示,可以百度即可
    

3.3 gitlab 部署及使用

1.gitlab 部署

  • gitlab下载地址
    [root@gitlab ~]# #wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.3-ce.0.el7.x86_64.rpm --no-check-certificate
    [root@gitlab ~]#yum -y install policycoreutils-python
    [root@gitlab ~]#  rpm -ivh gitlab-ce-10.0.3-ce.0.el7.x86_64.rpm 
    

2.git lab 配置

  • 修改对外服务地址

    [root@gitlab ~]# vim /etc/gitlab/gitlab.rb 
    13 external_url 'http://10.0.0.71'				修改成gitlab服务器的IP地址,对外服务
    
  • 初始化

    [root@gitlab ~]# gitlab-ctl reconfigure
    时间较久,需要3分钟左右时间,会自动帮助配置各个组件,并启动
    
  • 查看状态

    [root@gitlab ~]#  gitlab-ctl status
    run: gitaly: (pid 18804) 521s; run: log: (pid 18340) 661s
    run: gitlab-monitor: (pid 18836) 519s; run: log: (pid 18497) 630s
    run: gitlab-workhorse: (pid 18822) 520s; run: log: (pid 18367) 655s
    run: logrotate: (pid 18430) 643s; run: log: (pid 18429) 643s
    run: nginx: (pid 18414) 649s; run: log: (pid 18413) 649s
    run: node-exporter: (pid 18469) 637s; run: log: (pid 18468) 637s
    run: postgres-exporter: (pid 18861) 517s; run: log: (pid 18561) 607s
    run: postgresql: (pid 18163) 734s; run: log: (pid 18162) 734s
    down: prometheus: 0s, normally up, want up; run: log: (pid 18527) 618s
    run: redis: (pid 18103) 740s; run: log: (pid 18102) 740s
    run: redis-exporter: (pid 18512) 624s; run: log: (pid 18511) 624s
    run: sidekiq: (pid 18324) 667s; run: log: (pid 18323) 667s
    run: unicorn: (pid 20413) 149s; run: log: (pid 18285) 673s
    

3.gitlab 登录

  • 浏览器输入 IP 10.0.0.71 直接访问
  • 设置登录密码

4.gitlab 设置

  • 设置邮箱

5. 开发者设置ssh密钥