一、Git和SVN的区别

和SVN类似,Git是一个版本控制系统(Version Control System,VCS),不同的是SVN为集中式版本控制系统,为单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新,git为分布式版本控制系统,关于SVN和git的对比,可以通过下图进行说明(但最大的区别在于svn为集中式,git为分布式)


svn好比一个巨大的图书馆,当你要借一本书的时候,需要先从图书馆借出,回家之后自己改,改完之后还是返回给图书馆,而git的方式完全不同,所有的客户端都一个是完整的版本库,没有中央控制的概念,可以这样类比,git提供了一个虚拟的全量图书馆,所有人都有一个虚拟的图书馆,当你想看其中一本书的时候,从自己的虚拟图书馆里面检索出来即可,如果你修改了其中的内容,可以直接提交到自己的虚拟图书馆里面,也不会影响其他人的图书馆,当有其他人想要看你修改的一本书的时候,你只要将对应的一本书的URL发给对方即可。

二、Gitlab的搭建与使用

Gitlab可以用rpm包安装,也可以用yum安装。我们这里采用yum安装。

2.1 配置YUM源

# 配置yum源
# cd /etc/yum.repos.d/
# vim gitlab_ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

2.2 安装与配置

2.2.1 安装

# yum install gitlab-ce -y

2.2.2 配置

	# 配置gitlab域名访问地址
# vim /etc/gitlab/gitlab.rb
改:external_url 'http://gitlab.example.com'
为:external_url 'http://172.16.2.220' # 重新配置应用程序,修改了gitlab配置文件,都要执行这个命令
# gitlab-ctl reconfigure
# 查看gitlab状态
# gitlab-ctl status

2.2.3 使用

(1)、浏览器访问:http://172.16.2.220,设置密码

(2)、登录,用户名是root,密码是设置的密码

(3)、关闭注册功能

(4)、创建组

(5)、创建项目

(6)、创建用户

(7)、配置公钥,使用SSH拉取代码

# 生成公钥
# ssh-keygen
# 查看公钥
# cat ~/.ssh/id_rsa.pub
# 把公钥添加到项目里

三、Gitlab备份

使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份。

gitlab-rake gitlab:backup:create

使用以上命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1481598919_gitlab_backup.tar的压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的1481598919是备份创建的日期,此处以事务的形式进行gitlab的定时备份,创建定时脚本/iyunwen/bin/git_backup/git_backup.sh ,内容如下:

#!/bin/bash

cd /var/opt/gitlab/backups/

gitlab-rake gitlab:backup:create  

find  /var/opt/gitlab/backups/  -type f -ctime +5 -exec rm -rf {} \;
加入事务:echo "30 03 * * * root run-parts /iyunwen/bin/git_backup/" >> /etc/crontab 每天3:30分定时备份gitlab版本数据

四、Gitlab的迁移及数据恢复

迁移如同备份与恢复的步骤一样, 只需要将老服务器/var/opt/gitlab/backups目录下的备份文件拷贝到新服务器上的/var/opt/gitlab/backups即可(如果你没修改过默认备份目录的话)
但是需要注意的是新服务器上的Gitlab的版本必须与创建备份时的Gitlab版本号相同. 比如新服务器安装的是最新的10.2.2版本的Gitlab, 那么迁移之前, 最好将老服务器的Gitlab 升级为10.2.2在进行备份。

(1)、停止gitlab服务

 gitlab-ctl stop unicorn

 gitlab-ctl stop sidekiq

(2)上传备份文件至/var/opt/gitlab/backups,此处的备份文件名称为:1534793618_gitlab_backup.tar

(3)、数据恢复

cd /var/opt/gitlab/backups

chmod 777 1534793618_gitlab_backup.tar

gitlab-rake gitlab:backup:restore BACKUP=1534793618

五、Gitlab项目迁

旧地址:git.aaa.com,新地址:git.bbb.net
(1)、查看目前的gitlab地址

# git remote -v
origin git@git.aaa.com:360fang/360-fang.git (fetch)
origin git@git.aaa.com:360fang/360-fang.git (push)

(2)、在新的gitlab上新建fang项目,生成gitlab地址:git@git.bbb:360-fyd/fang.git
(3)、设置把本地gitlab地址替换成为新gitlab地址

# git remote set-url origin git@git.bbb.net:360-fyd/fang.git
# git remote -v
origin git@git.bbb.net:360-fyd/fang.git (fetch)
origin git@git.bbb.net:360-fyd/fang.git (push)

(4)、查看分支情况

# git branch -a
master
* v1.0.0
v1.1.1
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
remotes/origin/newtrust
remotes/origin/trust
remotes/origin/v1.0.0
remotes/origin/v1.0.1
remotes/origin/v1.1.1

(5)、把本地指定分支,推送到新的远程代码仓库

# git push origin master:master

(6)、把远程分支推送到远程
第一步:先checkout远程分支到本地

# git checkout -b develop origin/develop

第二步:在push本地分支到远程仓库

# git push origin develop:develop

Gitlab常规操作的更多相关文章

  1. FTP服务器常规操作

    导读 FTP协议是Internet文件传输的基础,它是由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据.下面就由我给大家简单介绍一下 ...

  2. Apache服务器常规操作

    导读 Apache是世界上排名第一的Web服务器,50%以上的Web服务器都在使用Apache,它几乎可以在所有计算机平台上运行.下面就由我给大家说说Apache服务器的一些常规操作. Apache服 ...

  3. mysql服务器的常规操作

    mysql服务器的常规操作 导读 MySQL是一个小型关系数据库管理系统,目前被广泛的应用在Internet上的中小型网站中,体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,使得许多中小型网站 ...

  4. 征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)

    有日子没写博客了,真的是忙得要疯掉. 完成项目基础架构搭建工作,解决了核心技术问题,接着需要快速的调研下基于Spring框架下的Redis操作. 相关链接: 征服 Redis 征服 Redis + J ...

  5. Mongodb常规操作【一】

    Mongodb是一种比较常见的NOSQL数据库,数据库排名第四,今天介绍一下Net Core 下,常规操作. 首先下C# 版的驱动程序 "MongoDB.Driver",相关依赖包 ...

  6. C#通过Ado.net对连接数据库并进行添加删除等常规操作的代码

    如下资料是关于C#通过Ado.net对连接数据库并进行添加删除等常规操作的内容. static string sqlcon = "server=.;database=;Integrated ...

  7. react-native 常规操作

    1.  关闭xcode打开模拟器的快捷键 , 等常规操作 https://www.jianshu.com/p/f6723f3406b7

  8. Linux 下的 netfilter 认识与常规操作

    Linux 下的 netfilter 认识与常规操作 前言 博客写到今天,1年7个月.可是包含所有写作经历,这个时间线可以达到三年. 上次更新了一篇 "镇站之宝" ,也是本站阅读量 ...

  9. 数据库mysql的常规操作

    1. 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进 ...

随机推荐

  1. 19cRAC增删节点

    由于测试环境打19c补丁失败,导致节点2  d2 crs无法启动!打补丁没有有效备份,亲人两行泪 先删再加节点. 一.删除节点 1.1 删除实例 参考 https://www.cnblogs.com/ ...

  2. JS入门系列(2)-原型-实例属性

    下面的例子中,在构造器内部定义了like,然后再原型上也定义了like.通过下面的测试表明: 在构造器内部创建的实例方法会阻挡原型上定义的同名方法 初始化操作的优先级如下: 首先,通过原型给对象实例添 ...

  3. hive常用函数三

    日期函数 1. UNIX时间戳转日期函数: from_unixtime 语法: from_unixtime(bigint unixtime[, string format]) 返回值: string ...

  4. Linux C++ 网络编程学习系列(4)——多路IO之epoll基础

    epoll实现多路IO 源码地址:https://github.com/whuwzp/linuxc/tree/master/epoll 源码说明: server.cpp: 监听127.1:6666,功 ...

  5. AJ学IOS(38)UI之核心动画简介

    AJ分享,必须精品 核心动画(简介) Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就 ...

  6. FJUT2019暑假第二次周赛题解

    A 服务器维护 题目大意: 给出时间段[S,E],这段时间需要人维护服务器,给出n个小时间段[ai,bi],代表每个人会维护的时间段,每个人维护这段时间有一个花费,现在问题就是维护服务器[S,E]这段 ...

  7. Unity 游戏框架搭建 2019 (二十九) 方法所在类命名问题诞生的原因

    我们在整理阶段解决了一些意外的问题.但是这些问题仅仅只是被解决而已,我们并没有去思考过这些问题是为什么产生的?以及在以后我们如何去避免这些问题的产生? 方法所在类的命名问题,最后我们通过方法分类解决了 ...

  8. Redis入门使用 -- 个人总结

    目录 什么是Redis? Redis 与其他 key - value 数据库的对比 Redis 能干什么 Redis的安装配置 Redis启动和连接 上面开启的是非守护线程下启动(独占模式),下面我们 ...

  9. 《闲扯Redis五》List数据类型底层之quicklist

    一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...

  10. python正则表达式详解之Match类及其方法

    1.Match对象简介 match对象通常是由正则表达式对象的match 方法,search 方法等经过匹配之后而产生.可以直接当做bool值使用,如果匹配则相当于True, 如果不匹配,则返回Non ...