Git学习笔记(10)——搭建Git服务器
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结。
Git远程仓库服务器
其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器。我们完全可以把自己的某台多余的机器设置成不关机状态。
但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。
搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。
Git的安装
现在的Ubuntu已经非常的人性化了,你想要什么,就敲打什么。敲个git,如果安装了,就会显示帮助信息,如果没有,就会把安装命令显示出来。如下
$ sudo apt-get install git
详细的内容,可以参见Git学习笔记开始的部分。
Git服务的搭建
//添加用户git,(注意这里使用的是adduser,而不是useradd。)
root@myUbuntu:/# adduser git
正在添加用户"git"...
正在添加新组"git" ()...
正在添加新用户"git" () 到组"git"...
创建主目录"/home/git"...
正在从"/etc/skel"复制文件...
输入新的 UNIX 密码: //为git设置密码
重新输入新的 UNIX 密码:
passwd:已成功更新密码
正在改变 git 的用户信息
请输入新值,或直接敲回车键以使用默认值//以下信息随意填写,也可以不填写
全名 []: gitserver
房间号码 []:
工作电话 []:
家庭电话 []:
其它 []:
这些信息是否正确? [Y/n] y
root@myUbuntu:/#
su git
//切换git用户,查看是否成功
git@myUbuntu:/$
exit
//退出重新登录,验证密码 //git用户创建成功后,会在home目录下自动生成git的用户目录
//收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥复制粘贴到/home/git/.ssh/authorized_keys文件里,一行一个。
//我的git目录里没有这个文件,所以需要手动创建
root@myUbuntu:/home/git#
mkdir .ssh
root@myUbuntu:/home/git#
cd .ssh/
root@myUbuntu:/home/git/.ssh# touch authorized_keys
root@myUbuntu:/home/git/.ssh#
vi authorized_keys
//将公钥添加进去
//进入根目录下的srv目录(本目录是Linux为了server而建立的,一般里面是空的)
root@myUbuntu:/srv# mkdir sample.git
root@myUbuntu:/srv# ls
sample.git
root@myUbuntu:/srv#
git init --bare sample.git/
//注意,在srv目录下进行git的初始化
初始化空的 Git 版本库于 /srv/sample.git/
//Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。所以,修改sample.git的用户和用户组的归属
root@myUbuntu:/srv#
chown -R git:git sample.git/
root@myUbuntu:/srv# ll
总用量
drwxr-xr-x root root 5月 : ./
drwxr-xr-x root root 4月 : ../
drwxr-xr-x
git git
5月 : sample.git/ //OK,到此git服务以基本完成了
shell安全设置
出于安全考虑,我们创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。
git:x:::,,,:/home/git:/bin/bash
改为:
git:x:::,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。(这个我没有测试。)
Windows端实现库的克隆
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved. C:\Users\joe> cd .\work
C:\Users\joe\work>
mkdir ubuntugit
//新建一个工作区 C:\Users\joe\work> cd .\ubuntugit
C:\Users\joe\work\ubuntugit>
git remote
//此时没有连接
fatal: Not a git repository (or any of the parent directories): .git C:\Users\joe\work\ubuntugit>
git clone git@10.6.17.30:/srv/sample.git
//直接克隆
Cloning into 'sample'...
Warning: Permanently added '10.6.17.30' (ECDSA) to the list of known hosts.
warning: You appear to have cloned an empty repository.
Checking connectivity... done. //克隆完成
C:\Users\joe\work\ubuntugit> ls
Directory: C:\Users\joe\work\ubuntugit
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- // : PM sample //已经出现了默认的sample C:\Users\joe\work\ubuntugit> cd .\sample
C:\Users\joe\work\ubuntugit\sample [master]>
git remote
//查看连接,OK。
origin
C:\Users\joe\work\ubuntugit\sample [master]>
公钥管理
如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,这时,可以用Gitosis来管理公钥。(这里就不详细记录了,我也不会。)
权限管理
有些不但视源代码如生命,而且视员工为窃贼的公司,会在版本控制系统里设置一套完善的权限控制,每个人是否有读写权限会精确到每个分支甚至每个目录下。因为Git是为Linux源代码托管而开发的,所以Git也继承了开源社区的精神,不支持权限控制。不过,因为Git支持钩子(hook),所以,可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite就是这个工具。(这个我也不会,就不记录了。)
小总结
这几天的学习,还算顺利,学习的内容都很基础,Git的学习暂时告一段落,后期有时间了,还会继续深入学习的。
- 下面是本人收集的一些Git的网站。
- 廖雪峰的官方网站:适合初学者,就像我一样的。
- Git的官方网站:可以提高英语水平。
- Git中文参考手册:适合查询使用。
- Git简明手册:适合回顾使用。
- Git图解:适合理解Git的原理。(多种语言)
- Git简明指南:一样的简单入门级内容。
- 国外网友制作的Git Cheat Sheet:这一个是pdf的内容,你点击,就会跳到我的QQ群,如果需要,请进群。
Git学习笔记(10)——搭建Git服务器的更多相关文章
- Hadoop学习笔记(10) ——搭建源码学习环境
Hadoop学习笔记(10) ——搭建源码学习环境 上一章中,我们对整个hadoop的目录及源码目录有了一个初步的了解,接下来计划深入学习一下这头神象作品了.但是看代码用什么,难不成gedit?,单步 ...
- Git学习笔记(2)-初探Git
1.创建版本库 (1)设置Git的配置变量.这些设置会在全局文件(.gitconfig)或系统文件(/etc/gitconfig)中做永久记录 $ git config --global user.n ...
- git学习笔记之二 -- git分支
前面对git基础作了简单的总结,这次对git的杀手锏--分支做一总结. Git分支简介 几乎每个版本控制系统都以某种形式支持分支,可以使你的工作从开发主线上分离开来,以免影响开发主线.很多版本控制系统 ...
- 【Git学习笔记】初始化Git仓库和版本回退
学习地址 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 什么是版本库呢?版本库又 ...
- git学习笔记03-本地git常用操作及原理-文件增删改
1.查看git状态 git status 这个可以告诉我们对git做了哪些操,比如增删改 2.既然我们修改了东西,有的时候想看看修改了什么,毕竟我们的记忆力并不如电脑 git diff 文件名 (默 ...
- Git学习笔记01--常用Git命令、cmd命令及Git总结性知识
资源:外国网友制作的 Git Cheat Sheet 第二次学习廖雪峰老师的Git教程,学习过程中把教程中涉及到的Git命令及总结性知识记录下来方便二次复习. 知识点 所有的版本控制系统,其实只能跟踪 ...
- Git学习笔记(windows git之初体验)
阿里国内镜像地址: https://npm.taobao.org/mirrors/git-for-windows/ 最近在学习廖雪峰老师关于git的教程,链接可以在我的首页找到.首先使用国内镜像下载并 ...
- git学习笔记——廖雪峰git教程
OK,先附上教程--廖雪峰的官方网站 友情连接:git官网 简介 这里我只想引用他的原文: Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的.实际情况是这样的: L ...
- 【Git学习笔记】用git pull取回远程仓库某个分支的更新,再与本地的指定分支自动merge【转】
本文转载自:http://blog.csdn.net/liuchunming033/article/details/45367629 git pull的作用是,从远程库中获取某个分支的更新,再与本地指 ...
- Git学习笔记01-安装Git
学习的资料来自廖雪峰官方网站的Git教程,菜鸟教程的Git教程 Git是一个分布式版本控制工具,在windows上使用Git可以直接从官网下载,然后默认选项安装即可. 安装完成后,在开始菜单中找到找到 ...
随机推荐
- Android手机编程初学遇到的问题及解决方法
对高手来讲不值一提,可是对我这个初学来讲却是因为这些问题费了老长时间,有的不是编程问题,但不注意也会浪费不少宝贵时间!随时遇到随时更新... 引入第三方类库的问题,开始引用后没什么问题,但发现了该类库 ...
- R语言读取excel文件的3种方法
R读取excel文件中数据的方法: 电脑有一个excel文件,原始的文件路径是:E:\R workshop\mydata\biom excel数据为5乘2阶矩阵,元素为 ...
- android 的数学公式图片转换
在应用中的数学公式是不能直接以文本显示和输入的,包括在一些学习类网站上看到的公式,他们都是以gif图片的形式展示出来的.而怎么样生成各种各样的gif图片形式的数学公式呢,此处未作深入研究,我所知道的是 ...
- mysql下载安装
1.下载 下载地址:http://dev.mysql.com/downloads/mysql/ 根据电脑配置来选,我选了 windows(x86,64-bit),ZIP Archive这个,点击Dow ...
- 命令行中mysql乱码问题
1.现象 在命令行中,执行sql语句如果包含中问题,提示“ Data too long for column '列名' at row 1” 或者在命令行中查询出的结果中,中文乱码 2.分析 ...
- Centos配置查看
Reference: [1] http://www.centoscn.com/CentOS/help/2013/0928/1743.html [2] http://www.cnblogs.com/hi ...
- 界面显示两个ListView
1.List界面布局 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:an ...
- js php json
js端生成json函数 function json_encode_js(aaa){ function je(str){ var a=[],i=0; var pcs="abcdefghijkl ...
- mysql 按时间段统计(年,季度,月,天,时)
按年汇总,统计: select sum(mymoney) as totalmoney, count(*) as sheets from mytable group by date_format(col ...
- JavaScript 学习笔记(一)
1.javascript中,值包括原始值和对象,原始值包括布尔值.数字.字符串.null和undefined,其他的值为对象. 原始值的特点:(1)按值进行比较:3===3> true; 'ab ...