博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

私有git搭建

Posted on 2018-11-21 18:07  southtianmen  阅读(600)  评论(0编辑  收藏  举报

Git简介(目前世界上最先进的分布式版本控制系统)

那什么是版本控制系统?

你可以把一个版本控制系统(缩写VCS)理解为一个特殊的“数据库”,在需要的时候,它可以帮你完整地保存一个项目的快照。当你需要查看一个之前的快照(称之为“版本”)时,版本控制系统可以显示出当前版本与上一个版本之间的所有改动的细节。

 

为什么要使用版本控制系统?

防止代码、配置相互覆盖,保留历史,方便回滚等操作

 

Git有什么特点?

简单来说就是:分布式,高端大气上档次!

 

除了git 还有什么样的版本控制系统?

集中式的版本控制系统  cvs  svn

集中式和分布式版本控制系统有什么区别呢?

集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

弊端:

集中式版本控制系统最大的毛病就是必须联网才能工作

 

分布式版本控制系统的优势:

分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。 和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。 在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。 CVS作为最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。同样是开源而且免费的SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。 除了免费的外,还有收费的集中式版本控制系统,比如IBM的ClearCase(以前是Rational公司的,被IBM收购了),特点是安装比Windows还大,运行比蜗牛还慢,能用ClearCase的一般是世界500强,他们有个共同的特点是财大气粗,或者人傻钱多。 微软自己也有一个集中式版本控制系统叫VSS,集成在Visual Studio中。由于其反人类的设计,连微软自己都不好意思用了。 分布式版本控制系统除了Git以及促使Git诞生的BitKeeper外,还有类似Git的Mercurial和Bazaar等。这些分布式版本控制系统各有特点,但最快、最简单也最流行的依然是Git!

 

 

gitBitKeeper的恩怨情仇

git安装:

yum install git-xxx 安装git软件包

git-coregit核心文件

git-daemon  git协议守护进程

git-web  一个简单的 git web

 

1.如果只是单纯使用 git 基本功能安装 git-core 即可

2.如果想使用 git://gitserver/repo.git 方式访问git服务器请安装 git-daemon

3.如果想使用 web 方式访问 git 请安装 git-web

 

私有 git 服务器的搭建

服务端搭建本地仓库

yum -y install git-core git-daemon git-web

groupadd -g 150 git //创建git,并制定git150

useradd -g 150 -u 150 -s /usr/bin/git-shell -r -d /var/lib/git git

mkdir /var/lib/git //创建一个目录用来做git仓库

chown -R 150.150 /var/lib/git/

id git

cd ~git

pwd

mkdir .ssh

cd .ssh/

ssh-keygen -t rsa -b 2048 -N "" -f id_rsa

mv id_rsa.pub authorized_keys

chmod 600 authorized_keys

chown 150.150 *

mv id_rsa /root/

cd ~

scp id_rsa 192.168.1.240:/root/

cd /var/lib/git/

sudo -u git git init --bare ooxx.git

 

设置无秘钥用户下载资料,但不可上传

systemctl start git.socket

ss -ntulp(监听9418端口)

 

部署git-web

yum -y install httpd gitweb

apachectl -t

systemctl start httpd

启动以后就可以通过 http://ip.xx.xx.xx/git/访问了,也可以设置默认跳转页面

也可以设置默认跳转页面

<html>

<head>

    <!-- <meta http-equiv="refresh" content="10"> -->

    <meta http-equiv="refresh" content="0;url=git">

</head>

</html>

 

密钥客户端的访问

mv id_rsa /root/.ssh/

yum -y install git

git clone git@192.168.1.250:ooxx.git

cd ooxx/

vim a.txt //

git add --all .

git commit -m 'ooxx'

git config --local user.name "lucky"

git config --local user.email "lucky@tedu.cn"

git commit -m 'abc'

git config --local push.default simple

git push

 

无密钥客户端访问

yum -y install git

git clone git://192.168.1.250/ooxx.git