搭建自己的Git服务器

前言:

GitHub是一个免费托管开源代码的远程仓库,使用起来即方便又安全,但在国内有时访问巨慢,原因你懂得。还有一些公司和个人视源码如生命,既不想开源代码又不想给Github交保护费。这时搭建一个自己的Git服务器就很有必要了,下面介绍如何在CentOS上搭建自己的Git服务器。

本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。


一、搭建Git服务器及使用

1、安装Git

执行以下命令安装git

$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
$ yum install git

接下来我们创建一个git用户组和用户,用来运行git服务:

$ groupadd git
$ useradd git -g git
$ passwd yourpwd

最好切换到git用户 不然后面新建的git仓库都要改权限 烦烦烦!!

$ su - git    

2、创建证书登录

收集所有需要登录的用户的公钥,公钥位于id_rsa.pub文件中,把我们的公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

如果没有该文件则创建它:

$ cd /home/git/
$ mkdir .ssh
$ chmod 700 .ssh
$ touch .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys

3、初始化Git仓库

首先我们选定一个目录作为Git仓库,假定我们放在git用户的宿主目录/home/git/,在/home/git/目录下输入命令:

$ cd /home/git
$ git init --bare test.git
Initialized empty Git repository in /home/git/test.git/

以上命令会创建一个空仓库,服务器上的Git仓库通常都以.git结尾。

4、克隆仓库

$ git clone git@your-ip:test.git
Cloning into 'test'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

your-ip 为您 Git 所在服务器 ip 。

5、禁止Shell登录

出于安全考虑,git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。
找到类似下面的一行:

git:x:502:502::/home/git:/bin/bash

改为

git:x:502:502::/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。


二、注意事项及说明

1、git仓库可以放在任何目录

放在/home/git目录下(clone相对于git宿主目录 /home/git/)

git clone git@your-ip:test.git

放在根目录,新建git目录作为仓库(绝对路径 /git/)

git clone git@your-ip:/git/test.git

如果域名绑定IP就可以直接用域名clone

git clone git@www.mayanlong.com:test.git

    

2、目录权限问题

如果不是用git用户创建的,注意以下目录文件的权限问题。

.ssh
test.git...
    

如果有问题,可以把该目录的所属者改成git。

$ chown -R git:git test.git    

交友互动:

本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma

Markdown - 语法简介

本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。

标题

在文字里书写不同数量的“#”可以完成不同的标题,如下:

# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

列表

无序列表的使用,在符号“-”后加空格使用。如下:

- 无序列表1
- 无序列表2
- 无序列表3

如果要控制列表的层级,则需要在符号“-”前使用空格。如下:

- 无序列表1
- 无序列表2
  - 无序列表2.1
     - 列表内容
     - 列表内容

有序列表的使用,在数字及符号“.”后加空格几个,如下:

1. 有序列表1
2. 有序列表2
3. 有序列表3

有序列表如果要区分层级,也可以在数字前加空格。

引用

引用的格式是使用符号“>”后面书写文字,及可以使用引用。如下:

> 这个是引用
> 是不是和电子邮件中的
> 引用格式很像

粗体与斜体

斜体的使用则是在需要斜体的文字前后各加一个“*”,而粗体的使用是在需要加粗的文字前后各加两个“*”,如果要使用粗体和斜体,那么就是在需要操作的文字前后各加三个“*”。如下:

*这个是斜体*
**这个是粗体**
***这个是粗体加斜体***

链接与图片

在文中直接加链接,中括号中是需要添加链接的文字,圆括号中是需要添加的链接,如下:
[link text](http://example.com/ "optional title")

在引用中加链接,第一个中括号添加需要添加的文字,第二个中括号中是引用链接的id,之后在引用中,使用id加链接:如下:
[link text][id]
[id]: http://example.com/ "optional title here"

在文中直接引用链接,直接使用尖括号,把链接加入到尖括号中就可以实现,如下:
<http://example.com/> or <address@example.com>

插入互联网上图片,格式如下:
![这里写图片描述](http://img3.douban.com/mpic/s1108264.jpg)
![这里写图片描述][jane-eyre-douban]
[jane-eyre-douban]: http://img3.douban.com/mpic/s1108264.jpg

分割线与删除线

可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,同时需要在分隔线的上面空一行。如下:

---
****
___

删除线的使用,在需要删除的文字前后各使用两个符合“~”,如下

~~Mistaken text.~~

代码块与语法高亮

在需要高亮的代码块的前一行及后一行使用三个反引号“`”,同时第一行反引号后面表示代码块所使用的语言,如下:

print("Hello World!")

交友互动:

本文首发于马燕龙个人博客,欢迎分享,转载请标明出处。
马燕龙个人博客:http://www.mayanlong.com
马燕龙个人微博:http://weibo.com/imayanlong
马燕龙Github主页:https://github.com/yanlongma