Git服务器的搭建与配置

  远程仓库诸如GitHub之类的其实与本地搭建的Git服务器没什么太大的区别,在一些对源代码保护比较看重的公司里,一般会选择自建Git服务器作为公司内网的私有仓库使用,这里记录的是Linux下的Git服务器搭建。

Git服务器配置

第一步 安装git

CentOS执行:

1
sudo yum install -y git

Ubuntu执行:

1
sudo apt-get intall -y git

第二步 权限配置

1
sudo adduser git

通过编辑/etc/passwd文件禁用git用户使用shell:
找到

1
git:x:1001:1001:,,,:/home/git:/bin/bash

修改为:

1
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

之后给需要权限的用户分配一个ssh公钥,加入/home/git/.ssh/authorized_keys中。

初始化裸仓库

进入需要放置的仓库的路径(如/home/git下)执行:

1
sudo git init --bare test.git  

这里是在此目录下初始化一个名为test.git的仓库。(所谓裸仓库是该仓库不包含工作区,也就是说我们不能在这个目录下执行一般我们使用的命令。)参见Git 本地仓库和裸仓库 @TaoBeier
然后更改该目录的所有者与所处组为git:

1
sudo chown -R git:git test.git

至此,Git服务器端已经配置完成,下面说说本地的使用:

本地使用

与GitHub等远程仓库基本一致。

项目初始化

假设Git服务器解析到git.iots.vip域名,则在项目目录下执行:

1
2
3
git init 
git add -A *
git commit -m 'first commit'

添加远程仓库:

1
git remote add origin git@git.iots.vip:/home/git/test.git

提交至远程仓库

执行

1
git push -u origin master

即可提交至远程仓库。

报错提示

  • 报错”unpack failed: unpack-objects abnormal exit”,这是因为远程仓库的目录权限问题,服务器端执行:
    1
    sudo chown -R git:git [仓库路径]
  • 本地仓库git add报错”fatal: Not a git repository (or any of the parent directories): .git” 项目未初始化导致。
    执行:
    1
    git init

待补充。