企业级CICD环境搭建-分布式版本控制系统

  • 2021年12月9日
  • DevOps

一、分布式版本控制系统
1、Git、Github、Gitlab 的区别
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Github是在线的基于Git的代码托管服务。 GitHub是2008年由Ruby on Rails编写而成。GitHub同时提供付费账户和免费账户。这两种账户都可以创建公开的代码仓库,只有付费账户可以创建私有的代码仓库。

Gitlab解决了这个问题, 可以在上面创建免费的私人repo。

2、区别
git:是一套软件 可以做本地私有仓库
github:本身是一个代码托管网站,公有和私有仓库(收费),不能做本地私有仓库
gitlab:本身也是一个代码托管的网站,功能上和github没有区别,公有和私有仓库(免费),可以部署本地私有仓库

二、Git与SVN区别
GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征。
1、GIT 与 SVN 区别
1)GIT是分布式的,svn不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。
2)GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。
3)GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。
4)GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
5)GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
2、本质区别
git:是分布式的版本控制器,没有客户端和服务器端的概念
svn:它是C/S结构的版本控制器,有客户端和服务器端,服务器如果宕机而且代码没有备份的情况下,完整代码就会丢失
三、部署Git 服务
1、创建git仓库
git-server上的操作:

[root@master ~]# yum install git git-core gitweb -y
[root@master ~]# useradd git
[root@master ~]# passwd git
[root@master ~]# mkdir /git-root/
[root@master ~]# cd /git-root/
[root@master git-root]# git init --bare shell.git
Initialized empty Git repository in /git-root/shell.git/

注意:
git init 和 git init –bare 的区别:
使用–bare选项时,不再生成.git目录,而是只生成.git目录下面的版本历史记录文件,这些版本历史记录文件也不再存放在.git目录下面,而是直接存放在版本库的根目录下面.

用”git init”初始化的版本库用户也可以在该目录下执行所有git方面的操作。但别的用户在将更新push上来的时候容易出现冲突。

使用”git init –bare”方法创建一个所谓的裸仓库,之所以叫裸仓库是因为这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,如果你硬要操作的话,只会得到下面的错误(”This operation must be run in a work tree”)这个就是最好把远端仓库初始化成bare仓库的原因

[root@master git-root]# chown -R git:git shell.git

2、git仓库测试
git-client上的操作:

[root@master ~]# ssh-keygen
[root@master ~]# ssh-copy-id git@192.168.9.142

[root@master shell]# git config --global user.email "you@example.com"
[root@master shell]# git config --global user.name "Your Name"

[root@master ~]# git clone git@192.168.9.142:/git-root/shell.git
[root@master ~]# ls
rh  shell
[root@master ~]# cd shell/
[root@master shell]# vim test.sh
[root@master shell]# git add test.sh

[root@master shell]# git commit -m 'first commit'
[master (root-commit) 33c5fbf] first commit
 1 file changed, 2 insertions(+)
 create mode 100644 test1.sh
[root@master shell]# git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 230 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.9.142:/git-root/shell.git
 * [new branch]      master -> master

发表评论

您的电子邮箱地址不会被公开。