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

网址

官网https://about.gitlab.com 中文官网https://www.gitlab.com.cn

安装

网上很多介绍gitlab的安装教程,无比复杂,其实在gitlab官网就有介绍安装过程,十分简单,本文基本按照官网的介绍来安装。这里的环境为centos7

配置必要的依赖关系

yum install curl policycoreutils openssh-server openssh-clients
systemctl enable sshd
systemctl start sshd
yum install postfix     #安装邮件服务
systemctl enable postfix
systemctl start postfix
firewall-cmd --permanent --add-service=http     #配置防火墙策略,我这里没有开启防火墙,其实可以不用
systemctl reload firewalld

下载GitLab的rpm包并安装

由于国内网络环境,这里用的清华大学开源软件镜像站

curl -LJO https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-9.4.4-ce.0.el7.x86_64.rpm
rpm -i gitlab-ce-9.4.4-ce.0.el7.x86_64.rpm

配置并启动GitLab

注意:服务器最低内存为2G,不然web页面无法访问

gitlab-ctl reconfigure初始化时间可能有点长

如果出现下面的报错,则需要安装libsemanage

================================================================================
    Error executing action `run` on resource 'execute[semodule -i /opt/gitlab/embedded/selinux/rhel/7/gitlab-7.2.0-ssh-keygen.pp]'
    ================================================================================

yum install libsemanage-static libsemanage-devel -y

修改URL地址

创建git项目时,默认的项目地址域名为:gitlab.example.com,需要修改为本机IP或自定义域名。 配置文件目录为:/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml 配置如下:

host: 172.31.101.22
port: 80
https: false

查看状态

[root@localhost ~]# gitlab-ctl status
run: gitaly: (pid 4536) 5991s; run: log: (pid 3456) 6660s
run: gitlab-monitor: (pid 4541) 5990s; run: log: (pid 3767) 6488s
run: gitlab-workhorse: (pid 4544) 5990s; run: log: (pid 3472) 6654s
run: logrotate: (pid 20979) 2389s; run: log: (pid 3501) 6637s
run: nginx: (pid 7637) 4852s; run: log: (pid 3483) 6648s
run: node-exporter: (pid 4563) 5988s; run: log: (pid 3585) 6579s
run: postgres-exporter: (pid 4570) 5988s; run: log: (pid 3722) 6499s
run: postgresql: (pid 4579) 5987s; run: log: (pid 3279) 6718s
run: prometheus: (pid 5286) 5902s; run: log: (pid 3552) 6595s
run: redis: (pid 4593) 5986s; run: log: (pid 3219) 6725s
run: redis-exporter: (pid 4599) 5986s; run: log: (pid 3658) 6546s
run: sidekiq: (pid 7490) 4926s; run: log: (pid 3436) 6666s
run: unicorn: (pid 7756) 4814s; run: log: (pid 3398) 6672s

访问

输入服务器ip即可访问,gitlab服务自带nginx,第一次登录,需要配置root密码

使用

  • 创建新仓库
mkdir test      ## 创建新文件夹
cd test         ## 进入到此目录
git init        ## 相当于初始化
  • 克隆新仓库
git clone /path/to/repository   ## 克隆本地仓库
git clone username@host:/path/to/repository     ## 克隆远端仓库
  • 添加与提交
git add <filename>/*    ## 将计划改动添加到缓存区
git commit -m "代码提交信息"      ## 然后将改动提交到HEAD
  • 推动改动
git push origin master      ## 将HEAD中的改动推送到远端仓库,可以把 master 换成你想要推送的任何分支。
git remote add origin <server>      ## 添加远程主机
git remote rm <主机名>     ## 删除远程主机
git remote -v       ## 查看远程主机的网址
  • 拉取更新
git pull        ## 取回远程主机某个分支的更新,再与本地的指定分支合并
等同于:
git fetch origin        ## 将远程主机的更新取回本地,但不合并
git merge origin/master ## 在本地分支上合并远程分支
  • 分支
git checkout -b feature_x       ## 创建分支
git checkout master             ## 切换回主分支
git branch -d feature_x         ## 删除分支
git push origin <branch>        ## 推送分支

提交项目

将本地项目提交到github

首先在github上创建新项目,例如web_ceshi,然后进入本地项目目录:

git init 
git remote add origin git@github.com:pangerl/web_ceshi.git
git add *
git commit -m 'XXX'
git push origin master

删除敏感信息

创建gitignore文件

git pull origin master
vim .gitignore
echo '.idea' > .gitignore
git rm -r --cached .idea  #删除已经上传到github的文件夹
git commit -m '删除隐藏目录'
git push origin master

参考链接:

git使用建议指南 Git远程操作详解