如何部署 git 服务

2018-10-29 09:29:14 浏览数 (1)

Git是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。Git是目前世界上最先进的分布式版本控制系统(没有之一)。那什么是版本控制系统?如果你曾经做过设计或者修改过PS文件,一定有过这样命名“初稿”,“初稿-1”“终稿”“这一定是终稿”“在改稿我就……”……

过了几天,你想找回当时写过某段文字,只好一个文件一个文件去看。看着一堆文件,想删又不敢删,怕那一天用到。有时候和同事协作修改一个文件,你这边改完了又得发给对方去修改,又费时又费力。有没有那个软件能让我方便修改代码,同样又能快速分享给同事呢?有的,这就是Git服务器,今天我们来教大家搭建一个Git。

想要搭建Git服务器需要服务器才能正常使用,想学习的同学可以去腾讯云开发者实验室免费领取主机进行在线手动实验。如果打算长期使用,也可以购买一台服务器。

安装Git

我们这里提供两种方式进行Git的安装,我这使用的系统是Ubuntu Server 16.04.1 LTS版本,其他操作系统安装请参考官方文档。

使用apt包管理器安装(推荐)

我们可以使用apt包管理器进行安装,但是Ubuntu官方使用的Git版本过旧,所以我们需要添加Git官方最新版的地址进行安装,安装起来很简单,请参考下面的命令。

代码语言:javascript复制
sudo add-apt-repository ppa:git-core/ppa

输入完成后,系统会提示

代码语言:javascript复制
Press [ENTER] to continue or ctrl-c to cancel adding it

我们只需要按下键盘上的回车键即可添加官方最新版地址,然后我们使用sudo apt-get update来更新列表,更新完成后使用sudo apt-get install git来安装Git。

代码语言:javascript复制
sudo apt-get update
sudo apt-get install git

等待几分钟后,Git就完成了安装,我们可以通过下面的命令来检查Git是否安装完成。

代码语言:javascript复制
git --version

当提示类似如下后,我们的Git就安装完成了。

代码语言:javascript复制
ubuntu@VM-0-7-ubuntu:~$ git --version
git version 2.19.1

使用编译安装

在编译之前,我们需要安装一些编译所需要的软件,你可以直接使用下面的命令进行安装。

代码语言:javascript复制
sudo apt-get update
sudo apt-get install build-essential libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip -y

几分钟后,这些软件就被安装完成,我们可以开始下载Git的源码包了。Git源码存储在Github上,因为我们没有下载安装Git,所以我们不能使用git clone功能去克隆这个项目,但是我们可以通过别的方法去下载Git源码,我们点击这里查看Git已经发布版本的源码。找到最新版,然后复制其源码地址。

然后使用wget命令将其下载到你的服务器上,之后将其解压出来。

代码语言:javascript复制
wget -c https://github.com/git/git/archive/v2.19.1.zip -O git.zip
unzip git.zip
cd git-*

现在,我们已经下载并解压完成,可以开始对其进行编译了。输入make然后耐心等待,编译速度看你当前服务器的配置。

代码语言:javascript复制
make

你会看到类似下面的输入

代码语言:javascript复制
GIT_VERSION = 2.19.1
    * new build flags
    CC credential-store.o
    * new link flags
    CC common-main.o
    CC abspath.o
......
    GEN bin-wrappers/test-line-buffer
    GEN bin-wrappers/test-parse-options
    GEN bin-wrappers/test-pkt-line
    GEN bin-wrappers/test-svn-fe
    GEN bin-wrappers/test-tool
    GEN git-remote-testgit

编译完成后什么都没有提示,我们就可以开始安装了。输入sudo make install耐心等待。

代码语言:javascript复制
sudo make install

同样,会有一大堆输出。具体如下:

代码语言:javascript复制
    SUBDIR git-gui
    SUBDIR gitk-git
    SUBDIR templates
install -d -m 755 '/home/ubuntu/bin'
install -d -m 755 '/home/ubuntu/libexec/git-core'
......
done && 
./check_bindir "z$bindir" "z$execdir" "$bindir/git-add"

接下来,我们就可以看看是否编译安装完成了。

代码语言:javascript复制
ubuntu@VM-0-7-ubuntu:~$ git --version
git version 2.19.1

我们看到,git命令已经正确安装。

创建Git账户及密码

接下来,我们创建一个名为gituser的账户给Git使用,可以使用下面的命令。

代码语言:javascript复制
sudo useradd -m gituser

之后,为这个账户设置密码

代码语言:javascript复制
sudo passwd gituser

这里输入密码的时候是没有提示的,输入一遍密码后回车在输入一遍即可创建。为了安全考虑,接下来我们要设置限制 git 账号的 ssh 连接只能是登录 git-shell,在你的命令行中输入下面的命令检查git的安装位置。

代码语言:javascript复制
which git

可能输出是这样子的,我们记下这个位置,我这里是通过编译安装的,所以位置在/home/ubuntu/bin,其他人位置会有所不同。

代码语言:javascript复制
ubuntu@VM-0-7-ubuntu:~/bin$ which git
/home/ubuntu/bin/git

之后我们编辑/etc/passwd这个文件,找到gituser行,然后改为下面的代码。

代码语言:javascript复制
sudo nano /etc/passwd
代码语言:javascript复制
gituser:x:1000:1000::/home/gituser:/home/ubuntu/bin/shell

注意将/home/ubuntu/bin更换为上一步你用which git找到的目录。

初始化Git仓库

接下来我们创建/data/git目录用于存放Git仓库。

代码语言:javascript复制
sudo mkdir /data/git

创建完成后,我们初始化这个仓库。

代码语言:javascript复制
sudo git init --bare first.git

我们远程项目就已经创建了,最后同样是为了安全考虑,我们给Git仓库目录设置用户和用户组并设置权限。

代码语言:javascript复制
sudo chown -R gituser:gituser /data/git
sudo chmod 755 /data/git

从本地clone你在服务器的项目

接下来,我们就可以开始测试你在远程服务的项目是否能正常clone了,请在本地电脑使用下面的命令。

代码语言:javascript复制
git clone gituser@你的服务器的地址:/data/git/first.git

这时,你可能会看到如下输出

代码语言:javascript复制
E:Desktop>git clone gituser@118.24.118.150:/data/git/first.git
Cloning into 'first'...
The authenticity of host '118.24.118.150 (118.24.118.150)' can't be established.
ECDSA key fingerprint is SHA256:Pj1Ggh9AQxBM3kM1Be75bV9jfJ8ER7bbE1N0cm81rII.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '118.24.118.150' (ECDSA) to the list of known hosts.
gituser@118.24.118.150's password:
warning: You appear to have cloned an empty repository.

注意,系统会要求你输入密码,输入的时候没有显示,输入完成回车即可。这时,系统提示你已经完成clone,并且因为我们在储存库没有任何文件,系统提醒我们可能clone了一个空的储存库。

总结

至此,Git 服务器搭建完成, 从此以后你可以方便地将你的本地代码提交到 Git 服务器托管了。如果自己无条件或不想搭建Git服务,欢迎大家使用免费的腾讯Git代码托管(工蜂)服务,腾讯云为开发者提供基于 Git 的在线代码托管工具,包含代码提交/存储/下载/复刻/分支/历史/比对/合并等功能。可一站式完成对代码及代码质量管理,项目及项目人员管理,大大提升研发效率。有任何使用问题欢迎大家留言评论哦!

0 人点赞