Git,Gitlab,Github,svn,代码迁移

目录

第1章版本控制

1.1重点学习

git:分布式版本控制系统

1.2版本控制概念

对软件开发过程中各种程序代码,配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。

1.3需要掌握内容

版本控制系统的构建,维护和使用。

1.4版本控制系统的分类

1.4.1本地版本控制

复制整个项目目录保存不同版本(例如加入时间戳以示区别)。
缺点:需要对比每天的不同时非常麻烦。
仅适用于一台电脑。

1.4.2集中化版本控制

主要以SVN为主,占市场30%~40%。
都要有一个单一的集中管理服务器,所有人需要连接这台服务器才可以工作。每天上传新的版本信息(方便回滚到某一版本)。
主要工具:CVS,SVN,Perforce
缺点:脱离SVN,离线状态,SVN服务器故障都无法工作了。
不适用于开源软件。
主要缺点:主要围绕着SVN服务器工作。

1.4.3分布式版本控制系统

主要工具:Git,mercwrial,Bazzaar,Darcs…
客户端不知提取最新版快照,而是把代码仓库完整镜像克隆下来。这样,每台机器都有完整的代码信息,服务器故障也无所谓。
每一台客户端(开发者电脑),都与server端相同。server端数据是最旧的。

第2章Git介绍

2.1官网

https://git-scm.com
帮助手册网址:https://git-scm.com/book/zh/v2

2.2git功能

可以有效管理很小到极大的项目版本。

2.3基于Git的产品

2.3.1GitHub

可以以公开或私有方式存放代码信息等的版本控制平台,web界面(类似于百度网盘),后被微软收购。

2.3.2Gitlab

可以在自己的网络中搭建git服务器(安全)。

2.3.3码云

国内的代码托管平台。

2.4git特点

克隆数据版本:服务器到本机克隆数据库。
提交代码:本机将代码等版本信息提交到服务器。
合并分支:在本机上合并版本分支。
拉取合并分支:在服务器拉取(fetch),然后与自己的主分支合并。
代码冲突解决:解决代码冲突(go语言等方法),然后提交补丁。

第3章Git安装

3.1yum安装

缺点:版本过低

[root@git_server ~]# yum -y install git
[root@git_server ~]# rpm -aq git

在这里插入图片描述

3.2源码安装

缺点:慢
Git下载地址:https://github.com/git/git/releases

3.2.1安装依赖关系

如果之前有旧版本需要移除(git --version 查看,yum remove git 移除)

[root@git_server ~]# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
[root@git_server ~]# yum -y install perl-ExtUtils-MakeMaker
[root@git_server ~]# yum -y install gcc-c++ autoconf automake libtool

3.2.2编译安装

(后面我改成了最新版本,没有影响)
在这里插入图片描述
没有安装包的执行 wget https://github.com/git/git/archive/v2.22.0.tar.gz

[root@git_server tools]# tar xf git-2.22.0.tar.gz -C /usr/src/
[root@git_server tools]# cd /usr/src/git-2.22.0/
[root@git_server git-2.22.0]# make configure

[root@git_server git-2.30.1]# make prefix=/usr/local/git all  //编译
[root@git_server git-2.30.1]# make prefix=/usr/local/git install  //安装
[root@git_server git-2.30.1]# ln -sf /usr/local/git/bin/git /usr/bin/  //软链接
[root@git_server git-2.30.1]# git --version   //查看版本

在这里插入图片描述
在这里插入图片描述

PS:另一个版本的安装

[root@git_server ~]# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
[root@git_server ~]# yum -y install perl-ExtUtils-MakeMaker
[root@git_server tools]# tar xf git-2.22.0.tar.gz -C /usr/src/
[root@git_server tools]# cd /usr/src/git-2.22.0/
[root@git_server git-2.22.0]# make configure
[root@git-server git-2.22.0]# ./configure --prefix=/usr/local/git && make && make install
[root@git_server git-2.30.1]# ln -sf /usr/local/git/bin/git /usr/bin/  //软链接
[root@git_server git-2.30.1]# git --version   //查看版本

3.2.3首次进入前设置

[root@git_server ~]# git config --global user.name "hannibal"   //使用用户
[root@git_server ~]# git config --global user.email "hannibal1216@126.com"  //使用邮箱
[root@git_server ~]# git config --global color.ui true   
[root@git_server ~]# git config --list  //列出配置

在这里插入图片描述

第4章Git使用

4.1初始化git仓库

[root@git-server ~]# mkdir git_data
[root@git-server ~]# cd git_data/
[root@git_server git_data ~]# git init   //初始化

在这里插入图片描述

4.2添加文件

git add //添加到暂存区
git commit //提交git仓库 -m后面接上注释信息,内容关于本次提交的说明,方便查看
git commit 加入-a后可以取代前两条命令
例:git commit -a -m “2” =git add * && git commit -m “2”

4.3删除文件

没有添加到暂存区的数据直接rm删除即可
已经添加到暂存区的数据使用以下命令:
git rm --cached database删除(不会删除当前工作目录的数据文件)
git rm -f database 将文件数据从git暂存区和工作目录一起删除
在这里插入图片描述
这样删除文件123就没有了
在这里插入图片描述

4.4改名

[root@git-server git_data]# git add 123
[root@git-server git_data]# git mv 123 456.exe
[root@git-server git_data]# ls
456.exe  readme

在这里插入图片描述

4.5查看提交历史纪录

[root@git-server git_data]# git log   查看历史提交记录
[root@git-server git_data]# git log   查看最近提交的2条看记录
[root@git-server git_data]# git log -p -1  查看最近1次的差异

在这里插入图片描述

4.6还原历史数据

[root@git-server git_data]# git reset --hard bb6f   将readme文件恢复到只有111的时候

在这里插入图片描述

4.7还原未来数据

现在已经回到111状态,想撤销还原历史数据回到111,222,可以使用还原未来数据命令。

[root@git-server git_data]# git reflog  //查看
[root@git-server git_data]# git reset --hard b627

在这里插入图片描述

4.8标签使用

十六进制字符串不好记,所以使用标签的概念(git tag 标签名)

[root@git-server git_data]# touch jeck.txt
[root@git-server git_data]# echo 123 > jeck.txt
[root@git-server git_data]# git commit -a -m “123”
[root@git-server git_data]# git tag v1
[root@git-server git_data]# git status
[root@git-server git_data]#echo 456 >> jeck.txt
[root@git-server git_data]# git commit -a -m “456”
[root@git-server git_data]# git tag v2
[root@git-server git_data]# git log
[root@git-server git_data]# git reset --hard v1
[root@git-server git_data]# ls

4.9数据对比

git diff 标签 //当前文件与上一个版本作比较
在这里插入图片描述

4.10 数据备份与恢复

gitlab-rake gitlab:backup:create //备份
gitlab-rake gitlab:backup:restore BACKUP=备份文件编号 //恢复

4.11 作为远程仓库初始化

git --bare init

第5章分支结构

5.1分支结构

初始化仓库后默认是master主分支,但是实际生产环境很少使用主分支的,所以大家都是将代码先合并到dev分支上,然后再合并到master分支。
在这里插入图片描述

5.2分支切换

[root@git-server git_data]# git branch dev  //创建分支
[root@git-server git_data]# git branch  //查看分支
[root@git-server git_data]# git checkout dev  //切换到dev分支
[root@git-server git_data]# git branch   //查看当前分支

[root@git-server git_data]# touch mua~  
[root@git-server git_data]# git add .
[root@git-server git_data]# git commit -a -m "5"
[root@git-server git_data]# git checkout master
[root@git-server git_data]# ls

并没有dev分支上创建的文件,因为还没有合并分支。

5.3合并分支

[root@git-server git_data]# git checkout master  
切换到分支 'master'
[root@git-server git_data]# git merge dev  //合并分支到主分支
更新 4792a2e..0bf0403
Fast-forward
 mua~ | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 mua~

[root@git-server git_data]# ls

查看有了之前在dev分支创建的新文件了。合并分支一般又项目经理负责。
ps:当主分支和dev分支若都修改了相同文件并提交,那么合并分支时就会出现冲突。

5.4删除分支

经过一天,确定已经都把分支合并了,使用命令删除不需要的分支。

[root@git-server git_data]# git branch --no-merged
[root@git-server git_data]# git branch -d dev
已删除分支 dev(曾为 0bf0403)。
[root@git-server git_data]# git branch
* master

第6章Git Windows版

6.1安装

在这里插入图片描述
双击一键安装
在这里插入图片描述

6.2字符界面操作

字符界面和linux操作相同。
在这里插入图片描述

6.3克隆

使用命令git clone root@192.168.9.7:/root/git_data

6.4图形界面

选择克隆(需要填写地址),或者创建仓库都行。
在这里插入图片描述

第7章Gitlab服务器部署与应用

7.1简介

Gitlab是一个基于Git实现的Web代码仓库托管软件,可以使用Gitlab搭建一个类似于Github的代码仓库,一般Gitlab私有仓库主要用于公司内部代码管理。
功能:
提交审核
问题追踪
大部分公司会选择 gitlab社区版,cpu两核,内存4G以上。

7.2工作原理

Gitlab和Github的原理其实就是Git的工作原理。
在这里插入图片描述
remote:远程仓库 (可以与也可以不与本地仓库同步,远程仓库的内容是最旧的)
repository:本地仓库 (保存了被提交的各个版本的代码)
index:缓存 (git add 提交到此处 不保存文件实体)
worksapce:工作区域 (开发改动代码的地方)

7.3Gitlab组件构成

1)nginx:静态Web服务
2)gitlab-shell:处理git命令和修改authorized keys列表
3)gitlab-workhorse:轻量级反向代理服务器(最敏捷的反向代理,会处理大的http请求,例如文件的上传、下载,其他的请求会反向代理给gitlab rails 应用)
4)logrotate:日志文件管理工具
5)postgresql:数据库(关系型)
6)redis:缓存数据库
7)sidekiq:用于后台执行队列任务
8)unicorn:gitlab rails应用是托管在这个服务器上面的

7.4Gitlab优点

1)git是分布式的,svn不是。svn需要连接服务器,git不用。
2)git和svn分支不同,svn是版本库中的一份copy,git一个仓库是一个快照,切换分支与合并分支更便捷。
3)git有强大的代码仓库管理系统-gitlab。方便管理权限、代码review、创建、管理project。

7.5Gitlab环境部署

7.5.1安装依赖包

[root@gitlab ~]# yum -y install curl openssh-server openssh-clients postfix cronie policycoreutils-python

7.5.2启动postfix,设置开机自启

[root@gitlab ~]# systemctl start postfix
[root@gitlab ~]# systemctl enable postfix

7.5.3下载gitlab的rpm包

[root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm

7.5.4安装gitlab

[root@gitlab ~]# rpm -ivh gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm 

在这里插入图片描述

7.5.5修改配置文件

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
13 external_url ‘http://192.168.9.7’
[root@gitlab ~]# gitlab-ctl reconfigure    //重新加载配置文件

在这里插入图片描述

[root@gitlab ~]# gitlab-ctl restart
[root@gitlab ~]# netstat -lnpt | grep :80

在这里插入图片描述

head -1 /opt/gitlab/version-manifest.txt     //查看gitlab版本

7.5.6测试使用

访问测试
在这里插入图片描述

首次需要设置密码
在这里插入图片描述

创建项目
在这里插入图片描述
在这里插入图片描述

添加说明文件readme
提交
项目就创建好了
在这里插入图片描述

7.5.7具体使用

找一台装有git的主机进行连接测试

[root@git ~]# git clone http://192.168.9.7/root/hannibal.git

在这里插入图片描述

[root@git ~]# ls

在这里插入图片描述

[root@git hannibal]# touch littlecup.txt
[root@git hannibal]# git add *
[root@git hannibal]# git status
[root@git hannibal]# git commit -m "eatman"
[root@git hannibal]# git push http://192.168.9.7/root/hannibal.git

在这里插入图片描述

输入用户密码即可
在这里插入图片描述

Web界面就可以查看到刚刚客户端提交的数据了。

第8章Github托管服务

8.1简介

Github是一个Git版本库的托管服务,是目前全球最大的软件仓库,它可以托管各种Git版本仓库,还拥有美观的Web界面。可以下载开源软件或者购买付费内容。

8.2Github使用

访问github官网,注册账号。
首先添加一个key(密钥)。
在这里插入图片描述
在这里插入图片描述

[root@git ~]# ssh-keygen 
[root@git ~]# cat .ssh/id_rsa.pub 

复制公钥内容,粘贴到网页上。
创建仓库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按着网页上的推荐代码操作一下就可以了。
如果想用别人的就点code,复制url,git cloone就可以了。
在这里插入图片描述

[root@git ~]# git clone https://github.com/MaartenBaert/ssr.git

在这里插入图片描述

第9章版本控制系统的变更

9.1SVN数据迁移到Gitlab

9.1.1环境

svn服务器,git客户端,gitlab服务器 (svn和git服务器可以部署在一起)

9.1.2安装部署svn

[root@svn ~]# yum -y install subversion
[root@svn ~]# mkdir -p /application/svndata/hannibal   //存放项目位置
[root@svn ~]# mkdir -p /application/svnpasswd    //存放密码和授权文件
[root@svn ~]# svnadmin create /application/svndata/hannibal/master   //创建项目
[root@svn ~]# svnadmin create /application/svndata/hannibal/dev    //创建项目
[root@svn ~]# svnadmin create /application/svndata/hannibal/test    //创建项目 相当于创建了3个分支
[root@svn ~]# cd /application/svndata/hannibal/master/conf/
[root@svn conf]# cp svnserve.conf svnserve.conf-$(date +%F)   //备份
[root@svn conf]# vim svnserve.conf   //匿名授权、指定密码文件
[root@svn conf]# sed -n '19p;20p;27p;34p' svnserve.conf
anon-access = none
auth-access = write
password-db = /application/svnpasswd/passwd
authz-db = /application/svnpasswd/authz
[root@svn conf]# cp svnserve.conf ../../dev/conf/     //将配置文件同样发给dev、test分支
cp:是否覆盖"../../dev/conf/svnserve.conf"? y
[root@svn conf]# cp svnserve.conf ../../test/conf/
cp:是否覆盖"../../test/conf/svnserve.conf"? y
[root@svn conf]# ls /application/svnpasswd/    //svnpasswd下没有东西,都在当前目录下
[root@svn conf]# cp authz passwd /application/svnpasswd/
[root@svn conf]# vim /application/svnpasswd/passwd   //修改passwd文件,定义用户
[root@svn conf]# cat /application/svnpasswd/passwd 
[users]
manager=123456
dev=123456
hannibal=123
littlecup=123
testgroup = hannibal,littlecup

[root@svn conf]# vim /application/svnpasswd/authz   //配置用户权限group下面添加分组授权信息

testgroup = hannibal,littlecup
[hannibal/master:/]
manager = rw
dev = r
[hannibal/dev:/]
dev = rw
manager = rw
[hannibal/test:/]
@testgroup = r
manager = rw

[root@svn conf]# cd
[root@svn ~]# svnserve -d -r /application/svndata/   //启动

查看
在这里插入图片描述
应该是3690端口
搭建完毕

9.1.3客户端提交代码

使用windows的svn软件,一路下一步安装。
打开软件,右键检出三个分支。在分支里面创建文件,右键提交,就提交到了分支上的项目上了。

9.1.4 git-svn工具克隆svn代码

yum 安装的git是没有git-svn功能的,所以需要使用源码安装的软件包安装才行。
git安装前面有,不再演示。
安装好git后安装git-svn插件

[root@svn git-2.22.0]# yum -y install wget
[root@svn ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@svn ~]# mkdir /backup
[root@svn ~]# cd /backup
[root@svn backup]# git svn clone --no-metadata svn://192.168.9.6/hannibal/master /backup/master/
填写root密码,master用户名,master密码。(两外两个分支操作类似)
[root@svn backup]# git svn clone --no-metadata svn://192.168.9.6/hannibal/dev /backup/dev/
[root@svn backup]# git svn clone --no-metadata svn://192.168.9.6/hannibal/test /backup/test/

在这里插入图片描述

[root@svn backup]# tree //查看
在这里插入图片描述

目前位置已经把svn代码转换成git版本并保存了。

9.1.5 gitlab安装与创建项目推送代码

gitlab安装不再展示,下面是创建项目推送代码过程。
在这里插入图片描述

去到svn-git服务器提交代码到gitlab服务器。

[root@svn ~]# cd /backup/master/
[root@svn master]# git branch
[root@svn master]# git branch linux
[root@svn master]# git checkout linux
[root@svn master]# git branch
[root@svn master]# git add *
[root@svn master]# git commit -m "master"
[root@svn master]# git remote rm origin
[root@svn master]# git remote add origin http://192.168.9.7/root/pro.git
[root@svn master]# git push -u origin linux

在这里插入图片描述
在这里插入图片描述
查看分支,提交成功。另外两个操作相同。

9.2测试环境数据迁移到Gitlab

9.2.1项目背景

模拟测试环境代码迁移到生产环境,gitlab到gitlab的带啊迁移。保证数据安全稳定,搭建新的公司的gitlab,将自己的gitlab进行数据迁移。

9.2.2Gitlab数据备份

将老服务器Gitlab整体备份,使用一条命令即可。使用命令git-rake gitlab:backup:create,会在/var/opt/gitlab/backups目录生成一个gitlab——backuo.tar的压缩包,有备份日期、版本号作为压缩包前缀。
创建服务配置文件备份
/etc/kgitlab/gtilab.rb //gitlab配置文件
/var/opt/gitlab/nginx/conf //nginx配置文件
/etc/postfix/main.cf //postfix配置文件

9.2.3备份操作

[root@gitlab ~]# cp /etc/gitlab/gitlab.rb{,.bak}
[root@gitlab ~]# cp /var/opt/gitlab/nginx/conf/nginx.conf{,.bak}
[root@gitlab ~]# cp /etc/postfix/main.cf{,.bak}
[root@gitlab ~]# cd /var/opt/gitlab/backups/
[root@gitlab backups]# ls
[root@gitlab backups]# gitlab-rake gitlab:backup:create

在这里插入图片描述
在这里插入图片描述

9.2.4更改gitlab备份目录

如果想要更换备份文件默认存储路径,执行以下操作。

[root@gitlab ~]# mkdir /backup
[root@gitlab ~]# vim +334 /etc/gitlab/gitlab.rb

在这里插入图片描述

[root@gitlab ~]# gitlab-rake gitlab:backup:create
[root@gitlab ~]# cd /backup/
[root@gitlab backup]# gitlab-ctl reconfigure
[root@gitlab backup]# gitlab-rake gitlab:backup:create
[root@gitlab backup]# ls

9.2.5自动备份与过期时间

周期性计划任务,每天凌晨两点进行备份

[root@gitlab ~]# crontab -e
[root@gitlab ~]# crontab -l
0	2	*	*	*	cd /backup && gitlab-rake gitlab:backup:create
设置备份过期时间
[root@gitlab ~]# vim +342 /etc/gitlab/gitlab.rb

在这里插入图片描述

[root@gitlab ~]# gitlab-ctl reconfigure

9.2.6上传备份文件到新服务器

[root@gitlab1 ~]# cd /backup/
[root@gitlab1 backup]# ls
1616380250_2021_03_22_11.11.3_gitlab_backup.tar
[root@gitlab1 backup]# scp 1616380250_2021_03_22_11.11.3_gitlab_backup.tar 192.168.9.9:/var/opt/gitlab/backups/

切换到gitlab2上

[root@gitlab2 ~]# cd /var/opt/gitlab/backups/
[root@gitlab2 backups]# ls
[root@gitlab2 backups]# chmod +777 1616380250_2021_03_22_11.11.3_gitlab_backup.tar 
[root@gitlab2 backups]# ls -l 1616380250_2021_03_22_11.11.3_gitlab_backup.tar 
[root@gitlab2 backups]# gitlab-ctl stop unicorn  //停止数据连接服务
[root@gitlab2 backups]# gitlab-ctl stop sidekiq    //停止数据连接服务
执行备份恢复命令
[root@gitlab2 backups]# gitlab-rake gitlab:backup:restore BACKUP=1616380250_2021_03_22_11.11.3

在这里插入图片描述

[root@gitlab2 backups]# gitlab-ctl start //启动服务
连接测试
有点慢,等一会。
在这里插入图片描述

完成

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值