0%

搭建自己的Git服务器,实现团队协作

Motivation:本来把一些项目代码放在Github的私有仓库上,邀请项目参与同学协作。但是有些项目放到Github上不符合规定,尽管是私有仓库。因此考虑在服务器上搭建Git服务,通过自己的服务器同步代码,项目成员协作参与。

服务器操作系统为 Ubuntu 18.X

1. 安装Git服务

在Ubuntu上,轻松使用以下命令安装Git服务。

sudo apt-get install git

2. 创建Git用户

使用以下命令来创建一个专门的 git 管理用户。

sudo adduser git

3. 添加ssh公钥

  1. Windows用户在C:\Users\XXX\.ssh目录下可以看到系统的.ssh公钥id_rsa.pub。

  2. Linux用户使用 ssh-keygen -t rsa -C “xxxxx@xxxxx.com“生成密钥,密钥在~/.ssh/id_rsa.pub文件中。

  3. 将公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

  4. 若没有.ssh文件夹,表示该用户还没有使用过ssh服务,使用命令$ ssh localhost登陆本机,并输入密码,自动生成.ssh文件夹。

  5. 在.ssh文件夹下,使用命令vim authorized_keys添加公钥。

    也可不添加公钥,每次使用git用户的密码进行clone、push和pull操作

4. 在服务器新建空远程仓库

就像我们在Github上新建仓库一样,我们首先需要在自己的Git服务器上建立远程仓库。

不过建议首先建立一个文件夹,便于归属权管理,此文件夹等同于Github的用户名。

$ mkdir folder_name

$ git --bare init repository_name.git

注意:

  1. 使用 –bare 参数表示这是一个公共仓库,而非私人仓库,详细参考git init 与 git init –bare 区别,使用 git init会导致后续push代码出现错误,无法成功push。
  2. 确保建立的仓库的所有权为git用户,即在git用户下创建仓库,否则导致push时权限不够的问题。

5. 绑定本地仓库到远程仓库

在本地使用以下命令,将本地仓库绑定到远程仓库,其中XX.XX.XX.XX为git服务器的IP或者域名。

$ git remote add origin git@XX.XX.XX.XX:folder_name/repository_name.git

6. PUSH代码

添加远程仓库后就可以像Github那样进行push,pull,commit操作了。

$ git push --set-upstream origin master