Git服务器搭建

1、Git的简介与优缺点

什么是git?

  Git是目前世界使用最广泛的分布式版本控制系统,它是由林纳斯·托瓦兹(Linus Torvalds)创作,最初的目的是为了更好地管理Linux内核开发而设计的。

与svn对比优缺点?

  1、与svn对比最核心区别就是Git是分布式,而svn是非分布式。这主要表现在使用Git时每一个开发人员电脑本地上存在一个Local Repository,这个Local Repository包含着远程库中的所有文件,因此,即使在没网的时候也可以进行commit提交,查看历史版本记录,创建项目分支等操作,等网络再次连接上Push到Server端。

  2、Git把内容按元数据方式存储,而SVN是按文件方式存储。表现为.git文件与.svn文件大小区别很大

  3、SVN存在一个自增的全局版本号;而Git每次提交,通过对文件的内容或目录的结构计算出一个SHA-1 哈希值,得到一个40位的十六进制字符串,以此来作为版本号。

  4、Git的内容的完整性要优于SVN:Git的内容存储使用的是SHA-1哈希算法。Linux kernel开创者和Git的开发者——Linus说,Git使用了SHA-1并非是为了安全性,而是为了数据的完整性;它可以保证,在很多年后,你重新checkout某个commit时,一定是它多年前的当时的状态,完全一摸一样,完全值得信任。

  5、Git下载下来后,在OffLine状态下可以看到所有的Log,SVN不可以。

  6、SVN必须先Update才能Commit,忘记合并时就会出现一些错误,git还是比较少的出现这种情况。

  7、克隆一个新项目,Git只需克隆master分支;svn则需要复制所有的版本。Git省时。

  8、 版本库(repository):SVN只能有一个指定中央版本库。当这个中央版本库有问题时,所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成。而 Git可以有无限个版本库。或者,更正确的说法,每一个Git都是一个版本库,区别是它们是否拥有活跃目录(Git Working Tree)。如果主要版本库(例如:置於GitHub的版本库)发生了什麼事,工作成员仍然可以在自己的本地版本库(local repository)提交,等待主要版本库恢复即可。工作成员也可以提交到其他的版本库!

  9、SVN创建分支会影响其他人;Git则可以在本地创建任意分支,只要我不合并及提交到主要版本库,则不会影响任何人。

  10、提交(Commit)在SVN,当你提交你的完成品时,它将直接记录到中央版本库。当你发现你的完成品存在严重问题时,你已经无法阻止事情的发生了。如果网路中断,你根本没办法提交!而Git的提交完全属於本地版本库的活动。而你只需“推”(git push)到主要版本库即可。Git的“推”其实是在执行“同步”(Sync)。

  11、模式上会比SVN相对较复杂

 2、Git的安装

  安装环境:Linux  CentOS7

  我直接使用yum安装,直接在linux中执行下面两行命令

 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel    //安装依赖
 yum install git        //安装Git 也可以直接运行yum intall git  yum会自动安装软件依赖

  这样子Git环境就安装好了,接下老就是权限设置,哪些人可以访问这个Git服务器呢?

3、用户访问设置

  3.1、秘钥登陆类型

   1、首先创建一个用户组以及用户

1 groupadd git    //创建git用户组
2 useradd git -g git   //创建git用户,用来运行git服务

  2、收集所需登陆用户的公钥,并将公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。  

  Linux中的公钥在每个用户的home目录下(/home/用户/.ssh),没有则使用命令进行创建:ssh-keygen -t rsa

  Windowns中的公钥创建:

  使用git,打开Git Bash。   1. 安装git,从程序目录打开 "Git Bash"    2. 键入命令:ssh-keygen -t rsa -C "suifengin412@gmail.com"   //红色字体可有可无   3. 指定文件生成的目录   4. 在指定的目录下产生两个文件:id_rsa和id_rsa.pub

  进入git家目录,将收集的公钥(id_rsa.pub里面的内容),添加到authorized_keys文件中(一行一个)。

  没有authorized_keys文件则创建:

 cd /home/git/
 mkdir .ssh
 chmod 700 .ssh
 vim .ssh/authorized_keys
 chmod 600 .ssh/authorized_keys

  注意:.ssh 目录必须是700权限、authorized_keys文件必须是600权限

  3.2、密码登陆类型

  1、创建登陆用户并添加到git用户组中

useradd -M git1        //-M 表示不创建家目录
useradd -M git2    
passwd git1  //设置密码
passwd git2
usermod -G git git1   //将新建的两个用户添加到git组中                 
usermod -G git git2 

  2、禁止新创建的用户ssh登陆linux服务器

which git-shell       //查看git-shell所在路径 (我的是:/usr/bin/git-shell)
vim /etc/passwd   //将用户名称:x:1000:1000::/home/用户名称:/bin/bash  将/bin/bash替换为git-shell所在路径

注意:

  创建用户的时候加-M,主要目的是不在home目录下生成该用户的拥有读写权限的家目录。这是因为我们创建的这些用户是用于git服务上面,并不想给用户除了git访问以外其他的权限;同理,需禁止用户通过ssh登陆linux服务器。 

4、初始化git服务器

  我们就选取git目录作为git的仓库

chmod g-w /home/git    //这个是必要的
cd /home/git    //进入git家目录
git init --bare test.git    //创建一个空仓库,服务器上的Git仓库通常都以.git结尾
chown -R git:git test.git/    //设置权限,因为我使用root来创建这个空仓库,因此需要变相应的权限设置
chmod  -R 775 test.git/     //设置所属组的所有权限,否则秘钥类型push不成功

  注意:变更文件的所有者以及组权限非常重要,切记。

5、克隆仓库

git clone git@git_ip:/home/gitrepo/runoob.git   //git_ip为Git所在服务器ip ,需要将其修改为你自己的 Git 服务ip。

6、参考资料

 1. 《话说Svn与Git的区别(以后别再问我了)》

(以上是自己的一些见解,若有不足或者错误的地方请各位指出)

 作者:那一叶随风 http://www.cnblogs.com/phpstudy2015-6/

 原文地址:https://www.cnblogs.com/phpstudy2015-6/p/9153497.html

 声明:本博客文章为原创,只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何将PostgreSQL数据目录移动到Ubuntu 18.04上的新位置

数据库随着时间的推移而增长,有时会超出原始文件系统的空间。当它们与操作系统的其余部分位于同一分区时,这也可能导致I / O争用。

18900
来自专栏前端小栈

利用Hexo+coding搭建博客,优化github博客打开速度

上次用hexo和github上搭建博客后,用了几天发现博客搭建在github上有一定的局限:

18920
来自专栏TARS GO

TarsGo新版本发布,支持protobuf,zipkin和自定义插件

Tars是腾讯从2008年到今天一直在使用的后台逻辑层的统一应用框架,目前支持C++、Java、PHP、Nodejs、Golang语言。该框架为用户提供了涉及到...

35260
来自专栏ionic3+

【开发指南】(一)Ionic3开发环境配置常规ionic的环境搭建如下:

工欲善其事,必先利其器,搭好环境是开发的前提,有时环境没弄好,不时报错往往很扎心。

12230
来自专栏架构师之路

缓存与数据库一致性保证

本文主要讨论这么几个问题: (1)啥时候数据库和缓存中的数据会不一致 (2)不一致优化思路 (3)如何保证数据库与缓存的一致性 一、需求缘起 上一篇《缓存架构设...

690100
来自专栏大数据智能实战

HBase启动过于缓慢的原因及其优化策略

当HBASE导入了几十亿的数据记录时,某一天重启一下HBASE,发现启动过于缓慢,一直在提示PleaseHoldException:Master is init...

25290
来自专栏IMWeb前端团队

Express使用手记:核心入门

本文作者:IMWeb 陈映平 原文出处:IMWeb社区 未经同意,禁止转载 入门简介 ? Express是基于nodejs的web开发框架。优点是易上...

21860
来自专栏Python爬虫与数据挖掘

如何在vSphere Client的虚拟机上安装Centos6.7操作系统

前几天给小伙伴们介绍了Centos对应版本的下载教程以及如何在vSphere Client上如何创建虚拟机,感兴趣的童鞋们可以点击进去看看~~

16510
来自专栏流柯技术学院

loadrunner录制回放常见问题及解决办法

1.录制错误     1)录制本机 WebTours 或录制本地网站无法打开     当 使 用 Vista 以 后 的 操 作 系 统 时 , 会 出 现 该...

31520
来自专栏Ryan Miao

resin4的初次配置与使用

之前用的resin3,结果发布新项目老师文件冲突,我也找不到是哪里有问题,于是尝试使用resin4. 首先从官网下载最新resin4。 然后放到opt下,tar...

384110

扫码关注云+社区

领取腾讯云代金券