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 git2usermod -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)

相关推荐

  • 【Git笔记】分布式版本控制系统

    前言 作为一名程序员,关于软件版本控制系统的使用是一项很重要的技能. 一.毕业找工作时,很多大厂的线上简历都有一项选填的选项--你的Github账号是什么. 二.工作的时候,也要用到,因为产品总是要更 ...

  • CentOS 7下使用Gitolite搭建Git私服

    CentOS 7下使用Gitolite搭建Git私服

  • SSH的免密登录详细步骤(注释+命令+图)

    需求 为了保证一台Linux主机的安全,所以我们每个主机登录的时候一般我们都设置账号密码登录.但是很多时候为了操作方便,我们都通过设置SSH免密码登录. 在这里我对本地机器Cloud10和目标机器Cl ...

  • Win10下搭建Git服务器

    一. 搭建Git服务器环境前的必要准备 1.Windows10 2.Java环境 3.GitBlit服务器 4.Git版本管理工具 二. 开始搭建 第一步.安装JAVA运行环境 https://www ...

  • 自己动手搭建家庭局域网(一),服务器搭建和文件共享

    自己动手搭建家庭局域网(一) 总体说明 GitLab服务器环境组建 局域网文件共享(方案并不实用,一段时间就换了,仅记录) 数据传输测试效果 总体说明 从本篇起分享一下本人自己家里搭建局域网网络环境的 ...

  • 面向新手的Web服务器搭建(一)

    很多童鞋说自己是做移动开发的,想挂个简单的Web API,可是服务器又不会搭,这样一来测试就成了问题.看看网上的教程,发现略难懂,而且大多是一个转一个,没价值,所以干脆写几篇文章讲讲简单的Web服务器 ...

  • 旧电脑废物利用之:改变成服务器!云服务器搭建!

    折腾一下 因为自己家里有一台很旧很旧的闲置笔记本,刚好听说电信的宽带可以免费申请到公网ip,同时家里的光猫和路由这次也从百兆换成了千兆,所以就想着搭建一套属于自己的云服务器放在家里,希望能够从外网访问 ...

  • 微软太良心了,来试试免费服务器搭建Python网站

    有时候,我们使用 Flask 或者 Django 写了一个简单的网页,想把它部署起来给所有人使用,但是又没有服务器.这个时候,除了买一台云服务外,我们还可以使用微软 Azure 免费提供的应用服务来部 ...

  • 使用香港云服务器搭建论坛怎么样

    网站论坛作为行业技术交流.交友圈子.实时新闻.互联网八卦等互联网场所,用户流量通常远远高于比起普通的个人博客.企业官网.而香港云服务器凭借其价格实惠.无需备案.国内外访问速度快等优势,成为搭建网络论坛 ...

  • 香港多IP服务器搭建采集程序的好处

    新网站要想充实内容除了自己做原创内容,最有效率的方法就是做伪原创,不仅能够快速充实网站,而且对于SEO的好处也比较明显,那么对于采集类的网站为什么都推荐使用香港多IP服务器呢,下面就来介绍一下多IP服 ...

  • (3条消息) FRP服务器搭建成功后,配置多个客户端使用

    2018-10-19 10:36:58 12318 收藏 4 最后发布:2018-10-19 10:36:58首次发布:2018-10-19 10:36:58 版权声明:本文为博主原创文章,遵循 CC ...

  • FTP服务器搭建详细步骤

    前言: FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务. FTP是File Transfer Prot ...