概述
本文将介绍如何在本地搭建Git服务器。我们知道Git其实是个分布式的版本管理系统,与中心化的版本管理系统如SVN有根本的不同,每个使用者都可以在本地存储一份独立的备份,每个Git的使用者并不会因为没有中心服务器而不能工作(如果是SVN之类的,如果服务器挂了是不能够提交改动的)。然而,在进行团队开发的时候,有时候还是非常需要有一个统一的地方管理唯一的一份完整的代码,这样可以非常方便的进行团队协作开发。这里讲述一种极为简单的搭建本地Git服务器的方法。
如何搭建
准备一台Linux服务器
这里不考虑windows系统,所以请务必准备一台Linux系统,分发版本没有关系,这里假定使用的是Centos 7
。
配置Git服务器
添加用户
123456sudo adduser gitsudo passwd gitChanging password for user git.New password:Retype new password:passwd: all authentication tokens updated successfully.配置好ssh
1234sudo su gitcdmkdir .ssh && chmod 700 .sshtouch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
初始化项目
假定我们有一个叫test
的项目需要管理,那么首先我们需要在Git服务器上面创建并初始化该项目。
1
2
3
4
5
6
|
sudo su git
cd
mkdir test
cd test
git init --bare
Initialized empty Git repository in /home/git/test
|
注意,其中git init --bare
就是用来初始化Git项目的,--bare
参数表示只存储Git的管理文件而不展现test
项目本身的文件。查看下初始化之后的目录:
1
2
|
ls
branches config description HEAD hooks info objects refs
|
可见里面只有Git管理有关的文件。
上传test
项目
假定Git服务器IP为10.10.10.10
,回到你的工作机器,打开test
项目目录,上传项目:
1
2
3
4
5
|
cd test
git remote add origin git@10.10.10.10:/home/git/mlc
git remote -v
origin git@10.10.10.10:/home/git/mlc (fetch)
origin git@10.10.10.10:/home/git/mlc (push)
|
如果发现git remote add origin
执行失败:
1
2
|
git remote add origin git@10.10.10.10:/home/git/mlc
fatal: remote origin already exists.
|
说明曾经已经设置过origin
地址了,可以更改如下:
1
2
3
4
5
6
|
git remote remove origin
git remote -v
git remote add origin git@10.10.10.10:/home/git/mlc
git remote -v
origin git@10.10.10.10:/home/git/mlc (fetch)
origin git@10.10.10.10:/home/git/mlc (push)
|
设置好之后,可以上传test
项目了:
1
2
3
4
5
6
7
8
9
|
git push origin master
git@10.10.10.10's password:
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 531 bytes | 0 bytes/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To 10.10.10.10:/home/git/mlc
* [new branch] master -> master
|
可见,Git服务器已经可以正常工作了。
结语
本文只是简单的介绍原生的Git服务器的搭建,实际上,在现实工作中很多情况下都会有专门的基于Git的管理系统,使用起来非常方便。这里面非开源的最有名当然是Github
了,开源的里面目前最好的应该是Gitlab
了,参照官方文档,你可以非常方便的搭建自己的Git服务器了。