Motivation:本来把一些项目代码放在Github的私有仓库上,邀请项目参与同学协作。但是有些项目放到Github上不符合规定,尽管是私有仓库。因此考虑在服务器上搭建Git服务,通过自己的服务器同步代码,项目成员协作参与。
服务器操作系统为 Ubuntu 18.X
1. 安装Git服务
在Ubuntu上,轻松使用以下命令安装Git服务。
sudo apt-get install git
2. 创建Git用户
使用以下命令来创建一个专门的 git 管理用户。
sudo adduser git
3. 添加ssh公钥
Windows用户在
C:\Users\XXX\.ssh
目录下可以看到系统的.ssh公钥id_rsa.pub。Linux用户使用 ssh-keygen -t rsa -C “xxxxx@xxxxx.com“生成密钥,密钥在
~/.ssh/id_rsa.pub
文件中。将公钥导入到
/home/git/.ssh/authorized_keys
文件里,一行一个。若没有.ssh文件夹,表示该用户还没有使用过ssh服务,使用命令
$ ssh localhost
登陆本机,并输入密码,自动生成.ssh文件夹。在.ssh文件夹下,使用命令
vim authorized_keys
添加公钥。也可不添加公钥,每次使用git用户的密码进行clone、push和pull操作
4. 在服务器新建空远程仓库
就像我们在Github上新建仓库一样,我们首先需要在自己的Git服务器上建立远程仓库。
不过建议首先建立一个文件夹,便于归属权管理,此文件夹等同于Github的用户名。
$ mkdir folder_name
$ git --bare init repository_name.git
注意:
- 使用 –bare 参数表示这是一个公共仓库,而非私人仓库,详细参考git init 与 git init –bare 区别,使用
git init
会导致后续push代码出现错误,无法成功push。 - 确保建立的仓库的所有权为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