环境

  • centos7
  • 内存最低不小于4G
  • docker

下载gitlab镜像

1
2
3
4
5
6
7
8
9
10
11
  # 搜索镜像
docker search gitlab

# 下载镜像
docker pull gitlab/gitlab-ce:10.5.7-ce.0

# 下载完成之后 docker iamges 命令可以查看
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 5b4c624c7fe1 33 hours ago 519MB
gitlab/gitlab-ce 10.5.7-ce.0 e5315b99f490 4 years ago 1.46GB

启动镜像

1
2
3
4
5
6
7
8
9
10
 docker run \
-itd \
--publish 9443:443 --publish 11180:80 --publish 11922:22 \
--volume /Users/yangchen/gitlab/etc:/etc/gitlab \
--volume /Users/yangchen/gitlab/log:/var/log/gitlab \
--volume /Users/yangchen/gitlab/opt:/var/opt/gitlab \
--restart always \
--privileged=true \
--name gitlab \
gitlab/gitlab-ce:10.5.7-ce.0

上面的命令主要意思的文件和端口映射关系配置

访问主机的11180端口,会被转发到gitlab容器的80端口

访问主机的11922端口,会被转发到gitlab容器的22端口

容器的名称叫 gitlab ,后面停止运行容器 输入 docker stop gitlab即可

配置

启动后可以通过 docker ps 查看启动的容器

启动后过一会,通过浏览器输入 http://IP:11180 即可访问容器gitlab

通过

1
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

命令我们可以拿到gitlab root账号的初始密码登录即可

访问地址配置,虽然容器启动,但是项目拉取和访问生成的地址是容器的id

访问地址的修改

可能是容器版本的问题,在项目访问上需要额外做一些配置,gitlab才能正常使用

比如主机的地址是:192.168.11.22

gitlab容器id是:ff3dgts

项目名称是:code

项目的访问地址生成的是 http://ff3dgts/code 这样导致git客户端不能成功拉去代码,

我们应该改成 http://192.168.11.22:11180/code 这样才能生效成功访问代码

  • 方法一 (docker重启后配置会丢失,不建议按照此方法配置)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 进入容器
    docker exec -it gitlab /bin/bash

    # 修改配置
    vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml


    #找到下面的配置修改

    gitlab:
    ## Web server settings (note: host is the FQDN, do not include http://)
    host: 192.168.11.22 #改为主机地址
    port: 11180 #改为主机端口
    https: false

    gitlab_shell:
    ssh_port: 11922 #改为主机端口
  • 方法二(推荐使用此方法,可以避免docker重启后配置丢失的问题)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    yangchen@yangchendeMacBook-Pro ~ % cd gitlab/etc
    yangchen@yangchendeMacBook-Pro etc % vim gitlab.rb


    #找到下面的配置修改

    external_url 'http://192.168.11.22:11180'
    nginx['listen_port'] = 80
    gitlab_rails['gitlab_shell_ssh_port'] = 11922

重启容器

在gitlab容器里面:

1
gitlab-ctl restart

或者在外面直接重启gitlab:
1
docker restart gitlab

git常用命令

最后就是git的常规使用了,下面我列举一下在实际开发项目中经常使用的git命令:

  • git init 新项目执行Git初始化,并进行第一次提交

    1
    2
    3
    4
    5
    6
    cd existing_folder
    git init
    git remote add origin ssh://git@localhost:11922/yangchen/test.git
    git add .
    git commit -m "Initial commit"
    git push -u origin master
  • git clone 对github、gitlab远程仓库,已有项目进行克隆

    1
    git clone ssh://git@localhost:11922/yangchen/test.git
  • git pull 拉去远程仓库的代码,默认对应相同的分支

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    yangchen@yangchendeMacBook-Pro mellower_store % git pull
    remote: Counting objects: 8, done.
    remote: Compressing objects: 100% (8/8), done.
    remote: Total 8 (delta 6), reused 0 (delta 0)
    展开对象中: 100% (8/8), 755 字节 | 53.00 KiB/s, 完成.
    来自 47.100.8.218:mellower/mellower_store
    6b013c97..3043c0a0 master -> origin/master
    更新 6b013c97..3043c0a0
    Fast-forward
    config/aliyunsms.php | 4 ++--
    config/services.php | 4 ++--
    2 files changed, 4 insertions(+), 4 deletions(-)
  • git add

    • 添加指定目录到暂存区,包括子目录
      git add [dir]

      例如:添加2个文件到暂存区
      git add README index.php

    • 添加当前目录下的所有文件到暂存区
      git add .

  • git commit 将暂存区内容添加到本地仓库中
    git commit -m "提交内容备注"

    1
    2
    3
    4
    yangchen@yangchendeMacBook-Pro monster % git add .
    yangchen@yangchendeMacBook-Pro monster % git commit -m "这是一次测试提交"
    [master 92f3b10] 这是一次测试提交
    1 file changed, 7 insertions(+), 12 deletions(-)
  • git reset

    • 回滚代码,撤销某一次commit,并强推到远程仓库

      如果需要删除的 commit 是最新的,那么可以通过 git reset 命令将代码回滚到之前某次提交的状态,但一定要将现有的代码做好备份,否则回滚之后这些变动都会消失。具体操作如下:

      1
      2
      3
      4
      5
      git log   //查询要回滚的commit_id

      git reset --hard commit_id //HEAD就会指向此次的提交记录

      git push origin HEAD --force //强制推送到远端
    • 回退所有内容到上一个版本
      git reset HEAD^

      1
      2
      3
      yangchen@yangchendeMacBook-Pro monster % git reset HEAD^
      重置后取消暂存的变更:
      M app/Utilities/WeiXin.php
    • 回退 index.php 文件的版本到上一个版本

      git reset HEAD^ index.php

    • 回退到指定版本
      查看提交日志,回退到指定commit_id

      1
      2
      git log
      git reset --hard commit_id
  • git branch

    • 新建分支
      git branch 新建的分支名

    • 查看所有分支信息
      git branch

    • 删除分支
      git branch -d 分支名称
      删除分支前,需要切换到其他分支

      删除远程分支 git push origin --delete 远程分支名称

  • git status

    查看当前分支状态

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    yangchen@yangchendeMacBook-Pro monster % git status
    位于分支 master
    您的分支与上游分支 'origin/master' 一致。

    尚未暂存以备提交的变更:
    (使用 "git add <文件>..." 更新要提交的内容)
    (使用 "git restore <文件>..." 丢弃工作区的改动)
    修改: app/Utilities/WeiXin.php

    修改尚未加入提交(使用 "git add" 和/或 "git commit -a"
  • git checkout

    切换分支

    1
    2
    3
    4
    5
    6
    yangchen@yangchendeMacBook-Pro mellower_store % git checkout dev
    切换到分支 'dev'
    您的分支与上游分支 'origin/dev' 一致。
    yangchen@yangchendeMacBook-Pro mellower_store % git branch
    * dev
    master
  • git push

    将本地的 master 分支推送到 origin 主机的 master 分支

    git push origin master

    如果关联的远程分支名和本地分支名一致,则可以省略分支名

    git push

    本地版本与远程版本有差异,但又要强制推送可以使用 –force 参数

    git push --force origin master

完整操作

完整操作

这样我们就把新建的index.php文件提交到了gitlab仓库中了

提交

文中如有错误,请帮忙指正!谢谢!

感谢大家能认真阅读这篇文档,万分感谢!