Git的家族成员
Git:是一种版本控制系统,是一个命令,是一种工具。
Gitlib:是用于实现Git功能的开发库。
Github:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放。
GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业、学校等内部网络搭建git私服。
Gitlab的服务构成
Nginx:静态web服务器。
gitlab-shell:用于处理Git命令和修改authorized keys列表。
gitlab-workhorse:轻量级的反向代理服务器。
logrotate:日志文件管理工具。
postgresql:数据库。
redis:缓存数据库。
sidekiq:用于在后台执行队列任务(异步执行)。
unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。
GitLab工作流程
GitLab安装搭建:
步骤一:在系统防火墙中打开HTTP和SSH访问,依次运行下面的命令,命令如下所示:
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
步骤二:安装Postfix 邮件通知服务
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
步骤三:安装 Gitlab 软件包
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
步骤四:配置 Gitlab 访问的域名
sudo EXTERNAL_URL="http://172.16.7.140" yum install -y gitlab-ee
步骤五:浏览器访问
http://172.16.7.140
常见指令:
修改 ip
gitlab 本身采用 80 端口,如安装前服务器有占用 80,安装完访问会报错。需更改gitlab 的默认端口,比如我们将 Gitlab 的默认端口改为 8082 。
第一步
打开阿里云服务器防火墙的 8082 端口
//打开防火墙服务
systemctl start firewalld
//开启防火墙 8082 端口
firewall-cmd --zone=public --add-port=8082/tcp --permanent
//重启防火墙服务,让配置生效
systemctl restart firewalld
第二步
修改 Gitlab 默认端口配置
打开 /etc/gitlab/gitlab.rb 文件,找到 external_url 字段,如下图所示:
http://47.94.230.26 改为 http://47.94.230.26:8082
然后执行 gitlab-ctl reconfigure 让配置立即生效。
在浏览器中访问 http://47.94.230.26:8082 , 就可以看到 Gitlab 的页面了。
其他命令
//启动
sudo gitlab-ctl star
//停止
sudo gitlab-ctl stop
//重启
sudo gitlab-ctl restart
//使更改配置生效
sudo gitlab-ctl reconfigure
修改管理员密码:
- 切换目录:cd /opt/gitlab/bin
- 执行 :sudo gitlab-rails console production 命令 开始初始化密码
- 在irb(main):001:0> 后面通过 u=User.where(id:1).first 来查找与切换账号(User.all 可以查看所有用户)
- 通过u.password='12345678'设置密码为12345678(最少8位字符串)
- 通过u.password_confirmation='12345678' 再次确认密码
- 通过 u.save!进行保存(切记切记 后面的 !)
- 如果看到true ,恭喜你已经成功了,执行 exit 退出当前设置流程即可
- 回到gitlab ,可以通过 root/12345678 这一超级管理员账号登录了
界面操作如下:
项目新建组:
1.创建用户组
2.将用户添加到对应的用户组
项目用户新增:
1.创建用户
2.设置用户初始密码
创建新项目
项目权限控制:
1.设置项目的操作者
点击项目—>SettingsàMembers
2.设置master的操作权限
点击项目—>SettingsàRepository Settings
修改为如图所示(默认都是Maintianers),作用是让developer可以提交或合并代码到master,默认master分支是不让developer提交或合并代码到master的。
项目迁移
1.删除.git隐藏文件夹
方式一:2.返回上级目录,在文件夹上右键选择git bash here
按顺序执行如下命令(user.name,user.email和origin根据实际情况填写):
#首次连接时需要执行
git config --global user.name "xiaozm"
git config --global user.email xiaozm@gzjp.cn
#非首次连接时,上面的指令不需要执行,直接从此处开始
git init
git remote add origin http://172.16.7.140/develop/jp-WI-WorkOrder-business-ms.git
git add .
git commit -m "Initial commit"
git pull --rebase origin master
git add README.md
git rebase --continue
git push -u origin master
免密提交代码:
1.在任意目录右键,选择git bash here
输入如下命令:ssh-keygen -t rsa -C 'xxx@xxx.com'
然后一路回车即可
2. 然后打开~/.ssh/id_rsa.pub文件(~表示用户目录,比如我的windows就是C:\Users\Administrator),复制其中的内容
3. 打开gitlab,找到Settings-->SSH Keys--->Add SSH Key,并把上一步中复制的内容粘贴到Key所对应的文本框,在Title对应的文本框中给这个sshkey设置一个名字,点击Add key按钮
4.本地配置多个ssh key
a.为gitlab生成一对秘钥ssh key
ssh-keygen -t rsa -C 'yourEmail@xx.com' -f ~/.ssh/gitlab-rsa
ssh-keygen -t rsa -C 'wangs@gzjp.cn' -f C:/Users/Administrator/.ssh/gitlab-rsa
b.为github生成一对秘钥ssh key
ssh-keygen -t rsa -C 'yourEmail2@xx.com' -f ~/.ssh/github-rsa
ssh-keygen -t rsa -C 'wangs@gzjp.cn' -f C:/Users/Administrator/.ssh/githab-rsa
再次查看~/.ssh目录下的文件,会有gitlab_id-rsa、gitlab_id-rsa.pub和github_id-rsa、github_id-rsa.pub四个文件
c.在~/.ssh目录下新建名称为config的文件(无后缀名)。用于配置多个不同的host使用不同的ssh key,内容如下:
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id-rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id-rsa
# 配置文件参数
# Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
# HostName : 要登录主机的主机名
# User : 登录名
# IdentityFile : 指明上面User对应的identityFile路径
d.按照上面的步骤分别往gitlab和github上添加生成的公钥gitlab_id-rsa.pub和github_id-rsa.pub