当前位置:   article > 正文

gitlab 仓库创建及使用_gitlab新建仓库

gitlab新建仓库

git的工作环境

  1. 工作区
  2. 暂存区 git add *
  3. 版本库 git commit -m “版本描述信息”
  4. HEAD
  5. 版本号
  6. 版本日志
  1. git clone git@IP地址:/自建的目录/自建的库/ #克隆到本地
  2. git add . #存储到暂存区
  3. git commit -m "描述信息" #更新版本
  4. git push origin master #上传到gitlab
  1. [root@vm20 ~]# git log
  2. commit fbecfa3d04ae5038aa11bf55942e46c840077ace #id号

每个版本都会有一个id号,也就是commit id

部署git

  1. 环境:
  2. git-server 192.168.246.214 充当服务器
  3. client 192.168.246.213
  4. 安装:所有机器都安装
  5. [root@git-server ~]# yum install -y git
  6. [root@git-server ~]# git --version
  7. git version 1.8.3.1
  8. `所有的机器都添加,只要邮箱和用户不一样就可以`
  9. # git config --global user.email "soho@163.com" ----设置邮箱
  10. # git config --global user.name "soho" ----加添用户

git使用

  1. 1.创建一个空目录:在中心服务器上创建
  2. [root@git-server ~]# mkdir /git-test
  3. [root@git-server ~]# useradd git #创建一个git用户用来运行git
  4. [root@git-server ~]# passwd git #给用户设置密码
  5. [root@git-server ~]# cd /git-test/
  6. 2.通过git init命令把这个目录变成Git可以管理的仓库:
  7. 第1种情况:可以改代码,还能上传到别人的机器,别人也能从你这里下载但是别人不能上传代码到你的机器上。
  8. 第2种情况:只是为了上传代码用,别人从这台机器上下载代码也可以上传代码到这台机器上,经常用于核心代码库。

创建----裸库:

  1. `语法:git init --bare 库名字
  2. #在server服务端
  3. [root@git-server git-test]# git init --bare testgit
  4. Initialized empty Git repository in /git-test/testgit/
  5. [root@git-server ~]# chown git.git /git-test -R #修改权限
  6. 2.仓库创建完成后查看库目录:
  7. [root@git-server git-test]# cd testgit/
  8. [root@git-server testgit]# ls
  9. branches config description HEAD hooks info objects refs

客户端

  1. 1.配置免密登录
  2. [root@client ~]# ssh-keygen #生成秘钥
  3. [root@client ~]# ssh-copy-id -i git@192.168.246.214 #将秘钥传输到git服务器中的git用户
  4. 2.克隆git仓库
  5. [root@client ~]# git clone git@192.168.246.214:/git-test/testgit/
  6. Cloning into 'testgit'...
  7. warning: You appear to have cloned an empty repository.
  8. [root@client ~]# ls #查看仓库已经克隆下来了
  9. anaconda-ks.cfg testgit

创建文件模拟代码提交到仓库

  1. 1.在testgit目录下创建一个测试文件test.txt
  2. [root@client ~]# cd testgit/
  3. [root@client testgit]# vi test.txt #随便写点东西
  4. 2.把文件添加到暂存区:使用 "git add" 建立跟踪
  5. [root@client testgit]# git add test.txt
  6. 注: 这里可以使用 git add * 或者 git add -A
  7. 3.提交文件到本地仓库分支:
  8. [root@client testgit]# git commit -m "test1"
  9. [master (root-commit) 2b51ff9] test1
  10. 1 file changed, 2 insertions(+)
  11. create mode 100644 test.txt
  12. -m:描述
  13. 4.查看git状态:
  14. [root@client testgit]# git status
  15. # On branch master #分支位于master
  16. 5.修改文件后再此查看状态:
  17. [root@client testgit]# echo '1122334' >> test.txt
  18. [root@client testgit]# git status
  19. # 位于分支 master
  20. # 尚未暂存以备提交的变更:
  21. # (使用 "git add <file>..." 更新要提交的内容)
  22. # (使用 "git checkout -- <file>..." 丢弃工作区的改动)
  23. #
  24. # 修改: readme.txt
  25. #
  26. 修改尚未加入提交(使用 "git add" 和/或 "git commit "
  27. 6.先add
  28. [root@client testgit]# git add -A
  29. 8.再次提交commit:
  30. [root@client testgit]# git commit -m "add2" test.txt
  31. [master 73bf688] add2
  32. 1 file changed, 1 insertion(+)
  33. [root@client testgit]# git status
  34. # On branch master
  35. nothing to commit, working directory clean

版本回退

  1. 查看现在的版本
  2. [root@client testgit]# git log
  3. 回到上一个版本
  4. #一个^代表回退一次,2个^代表回退2此,依此类推……
  5. [root@client testgit]# git reset --hard HEAD^
  6. HEAD is now at 0126755 test1
  7. 2.回到指定的版本(根据版本号):
  8. [root@client testgit]# git reset --hard dd66ff
  9. HEAD is now at dd66ff9 add2
  10. ==========================================================
  11. 注:消失的ID号:可以查看之前的所有的版本
  12. [root@vm20 gittest]# git reflog

删除文件

从工作区删除test.txt,并且从版本库一起删除

  1. 从工作区删除
  2. [root@client testgit]# rm -rf test.txt
  3. 从版本库删除:
  4. [root@client testgit]# git rm test.txt
  5. rm 'test.txt'
  6. [root@client testgit]# git commit -m "删除文件test.txt"
  7. [master cebc081] 删除文件test.txt
  8. 1 file changed, 3 deletions(-)
  9. delete mode 100644 test.txt

将代码上传到仓库的master分支

  1. [root@client testgit]# vi a.txt #创建一个新文件
  2. [root@client testgit]# git add a.txt
  3. [root@client testgit]# git commit -m "add"
  4. [root@client testgit]# git push origin master #上传到远程仓库master分支
  5. Counting objects: 11, done.
  6. Compressing objects: 100% (4/4), done.
  7. Writing objects: 100% (11/11), 828 bytes | 0 bytes/s, done.
  8. Total 11 (delta 0), reused 0 (delta 0)
  9. To git@192.168.246.214:/git-test/testgit/
  10. * [new branch] master -> master

测试:

客户端将仓库删除掉然后在克隆下来查看仓库中是否有文件

  1. [root@git-client ~]# rm -rf testgit/
  2. [root@client ~]# git clone git@192.168.246.214:/git-test/testgit/
  3. Cloning into 'testgit'...
  4. remote: Counting objects: 11, done.
  5. remote: Compressing objects: 100% (4/4), done.
  6. remote: Total 11 (delta 0), reused 0 (delta 0)
  7. Receiving objects: 100% (11/11), done.
  8. [root@client ~]# cd testgit/
  9. [root@client testgit]# ls
  10. a.txt
  11. [root@client testgit]# cat a.txt
  12. hello world

创建分支并合并分支

  1. [root@client testgit]# ls在客户端操作:
  2. [root@client ~]# git clone git@192.168.246.214:/git-test/testgit/
  3. [root@client testgit]# git status
  4. # On branch master #当前所在为master分支
  5. #
  6. # Initial commit
  7. #
  8. nothing to commit (create/copy files and use "git add" to track)
  9. 创建分支:
  10. [root@client testgit]# git branch dev #创建分支。
  11. [root@client testgit]# git branch #查看分支。*在哪里就表示当前是哪个分支
  12. dev
  13. * master
  14. 切换分支:
  15. [root@client testgit]# git checkout dev
  16. Switched to branch 'dev'
  17. [root@client testgit]# git branch
  18. * dev
  19. master
  20. 在dev分支创建一个文件;
  21. [root@client testgit]# vi test.txt
  22. [root@client testgit]# git add test.txt
  23. [root@client testgit]# git commit -m "add dev"
  24. [dev f855bdf] add dev
  25. 1 file changed, 1 insertion(+)
  26. create mode 100644 test.txt
  27. 现在,dev分支的工作完成,我们就可以切换回master分支:
  28. [root@client testgit]# git checkout master
  29. Switched to branch 'master'
  30. 切换回`master`分支后,再查看一个`test.txt`文件,刚才添加的内容不见了!因为那个提交是在`dev`分支上,而`master`分支此刻的提交点并没有变:
  31. [root@client testgit]# ls
  32. a.txt
  33. 现在,我们把`dev`分支的工作成果合并到`master`分支上:
  34. [root@client testgit]# git merge dev
  35. Updating 40833e0..f855bdf
  36. Fast-forward
  37. test.txt | 1 +
  38. 1 file changed, 1 insertion(+)
  39. create mode 100644 test.txt
  40. [root@client testgit]# ls
  41. a.txt test.txt
  42. 现在已经将dev分支的内容合并到master上。确认没有问题上传到远程仓库:
  43. [root@client testgit]# git push origin master
  44. 合并完成后,就可以放心地删除`dev`分支了:
  45. [root@client testgit]# git branch -d dev
  46. Deleted branch dev (was f855bdf).
  47. 删除后,查看`branch`,就只剩下`master`分支了:
  48. [root@client testgit]# git branch
  49. * master

部署gitlab服务

官网下载gitlab地址

  1. 百度搜索gitlab--点击https://gitlab.com/users/sign_in
  2. 拉到最下面--点击 关于 GitLab
  3. 再拉到最下面--有个Resources--点击Install--往下拉点击有个cenos 7版本的下载--安装命令步骤操作即可

配置yum源

  1. [root@git-server ~]# cd /etc/yum.repos.d/
  2. #配置yum源
  3. [root@git-server yum.repos.d]# vi gitlab-ce.repo
  4. [gitlab-ce]
  5. name=Gitlab CE Repository
  6. baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever
  7. gpgcheck=0
  8. enabled=1
  9. #安装相关依赖
  10. [root@git-server yum.repos.d]# yum install -y curl policycoreutils-python openssh-server
  11. [root@git-server yum.repos.d]# systemctl enable sshd
  12. [root@git-server yum.repos.d]# systemctl start sshd
  13. #安装postfix
  14. [root@git-server yum.repos.d]# yum install postfix #安装邮箱
  15. [root@git-server yum.repos.d]# systemctl enable postfix
  16. [root@git-server yum.repos.d]# systemctl start postfix
  17. #安装的版本,下面那条命令是安装最新版,可能存在不兼容的风险
  18. [root@git-server yum.repos.d]# yum install -y gitlab-ce-13.1.1-ce.0.el7.x86_64 #安装的版本
  19. [root@git-server yum.repos.d]# yum install -y gitlab-ce #将会安装gitlab最新版本

配置gitlab

  1. [root@git-server ~]# vim /etc/gitlab/gitlab.rb
  2. 1.# 添加对外的域名(gitlab.papamk.com请添加A记录指向本服务器的公网IP):将原来的修改为
  3. external_url 'http://192.168.246.214'
  4. 2.设置地区
  5. gitlab_rails['time_zone'] = 'Asia/Shanghai'
  6. 将数据路径的注释去掉,可以更改
  7. #第501-505行,去除注释
  8. git_data_dirs({
  9. "default" => {
  10. "path" => "/mnt/nfs-01/git-data"
  11. }
  12. })
  13. 开启ssh服务:
  14. #第519行,去除注释
  15. gitlab_rails['gitlab_shell_ssh_port'] = 22
  16. 开启邮箱服务
  17. #直接在637行开始添加以下内容
  18. gitlab_rails['smtp_enable'] = true #开启smtp服务
  19. gitlab_rails['smtp_address'] = "smtp.163.com" #指定smtp地址
  20. gitlab_rails['smtp_port'] = 465
  21. gitlab_rails['smtp_user_name'] = "xxxx@163.com" #指定邮箱
  22. gitlab_rails['smtp_password'] = "邮箱授权密码"
  23. gitlab_rails['smtp_domain'] = "163.com" #邮箱地址的域
  24. gitlab_rails['smtp_authentication'] = "login"
  25. gitlab_rails['smtp_enable_starttls_auto'] = true
  26. gitlab_rails['smtp_tls'] = true
  27. gitlab_rails['smtp_openssl_verify_mode'] = 'none'
  28. gitlab_rails['gitlab_email_from'] = 'xxxx@163.com' #指定发件邮箱
  29. gitlab_rails['gitlab_email_display_name'] = 'Admin' #指定发件人
  30. #user["git_user_email"] = "xxxx@163.com"

重置并启动GitLab执行:

[root@git-server ~]# gitlab-ctl reconfigure   #重新加载,需要等很长时间

启动

[root@git-server ~]# gitlab-ctl restart  #启动

邮箱测试

  1. [root@git-server ~] # gitlab-rails console #进入终端
  2. #开始测试
  3. irb(main):001:0> Notify.test_email('xxxx@qq.com', 'Message Subject', 'Message Body').deliver_now #测试发送邮件是否成功

测试web页面访问

输入IP地址,直接访问,会出来一个界面,它默认用户是root,直接输入密码就可以(设置密码)

在服务器通过在git客户端

  1. [root@client ~]# git clone git@192.168.246.214:root/testapp.git
  2. Cloning into 'testapp'...
  3. remote: Enumerating objects: 6, done.
  4. remote: Counting objects: 100% (6/6), done.
  5. remote: Compressing objects: 100% (4/4), done.
  6. remote: Total 6 (delta 0), reused 0 (delta 0)
  7. Receiving objects: 100% (6/6), done.
  8. [root@client ~]# ls
  9. testapp
  10. [root@client ~]# cd testapp/
  11. [root@client testapp]# ls
  12. test.txt 同步时间.txt
  13. [root@client testapp]#
  14. 注意:如果克隆不下来可以重新使用命令生成私钥
  15. [root@client ~]# ssh-keygen -t rsa #然后将公钥添加到gitlab中。
  16. 使用http的
  17. [root@client ~]# rm -rf testgit/
  18. [root@client ~]# git clone http://192.168.246.214/root/testapp.git
  19. Cloning into 'testapp'...
  20. Username for 'http://192.168.246.214': root
  21. Password for 'http://root@192.168.246.214':12345678 #为自己设置的密码
  22. remote: Enumerating objects: 6, done.
  23. remote: Counting objects: 100% (6/6), done.
  24. remote: Compressing objects: 100% (4/4), done.
  25. remote: Total 6 (delta 0), reused 0 (delta 0)
  26. Unpacking objects: 100% (6/6), done.
  27. [root@client ~]# ls
  28. testapp
  29. 提交到远程gitlab仓库
  30. [root@client ~]# cd testapp/
  31. [root@client testapp]# vi update.txt
  32. 1000phone
  33. [root@client testapp]# git add .
  34. [root@client testapp]# git commit -m 'updata-test'
  35. [root@client testapp]# git push origin master
  36. Counting objects: 4, done.
  37. Compressing objects: 100% (2/2), done.
  38. Writing objects: 100% (3/3), 266 bytes | 0 bytes/s, done.
  39. Total 3 (delta 1), reused 0 (delta 0)
  40. To git@192.168.153.156:root/testapp.git
  41. 4f35d4b..a0067ea master -> master

Gitlab 备份与恢复

查看系统版本和软件版本

  1. [root@git-server ~]# cat /etc/redhat-release
  2. CentOS Linux release 7.4.1708 (Core)
  3. [root@git-server ~]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
  4. 13.1.1

数据备份

  1. 打开/etc/gitlab/gitlab.rb配置文件,查看一个和备份相关的配置项:
  2. vim /etc/gitlab/gitlab.rb
  3. gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" #备份的路径
  4. gitlab_rails['backup_archive_permissions'] = 0644 #备份文件的默认权限
  5. gitlab_rails['backup_keep_time'] = 604800 #保留时长,秒为单位
  6. # 重启
  7. [root@git-server ~]# gitlab-ctl reconfigure
  8. 或者
  9. [root@git-server ~]# gitlab-ctl restart
  10. # 执行备份命令进行备份
  11. [root@git-server ~]# /opt/gitlab/bin/gitlab-rake gitlab:backup:create
  12. 也可以添加到 crontab -e 中定时执行:
  13. 0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
  14. 备份完成,会在备份目录中生成一个当天日期的tar包。
  15. [root@git-server ~]# ls /var/opt/gitlab/backups/
  16. 1588774133_2020_05_06_12.10.3_gitlab_backup.tar

数据恢复

特别注意:

备份目录和gitlab.rb中定义的备份目录必须一致
GitLab的版本和备份文件中的版本必须一致,否则还原时会报错

在恢复之前,可以删除一个文件,以便查看效果

执行恢复操作:

  1. [root@git-server ~]# cd /var/opt/gitlab/backups/
  2. [root@git-server backups]# gitlab-rake gitlab:backup:restore BACKUP=1588774133_2020_05_06_12.10.3
  3. 注意恢复文件的名称
  4. # 中途会输入2次yes
  5. 恢复完成后,或者重启服务,再打开浏览器进行访问,发现数据和之前的一致:
  6. [root@git-server backups]# gitlab-ctl restart

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/708121
推荐阅读
相关标签
  

闽ICP备14008679号