首先服务器需安装git

搭建git服务器

1.新建git仓库主目录,可以选择创建在/data目录下。也可以选择放置在/var目录下【mkdir -p :递归创建目录,即使上级目录不存在,会按目录层级自动创建目录】



mkdir -p /data/gitrepos


2.新建访问用户,下面新增zhangsan,lisi两个git用户,添加后用户会生成/home/zahngsan家目录;



useradd zhangsan
useradd lisi


或【适用于使用密码登录的情况】



seradd -M zhangsan        //-M 表示不创建家目录


3.给用户设置密码,分别设置登陆密码,拉取代码和提交代码需要提供密码;



passwd zhangsan
passwd lisi


4.变更git仓库的所有者到任何人 ,赋予nobody就是把权限给了所有人;



chown -R nobody:nobody /data/gitrepos


5.修改git仓库的读写权限,这样子git仓库就能读写了,否则会报错拒绝提交的;



chmod -R 755 /data


6.修改用户shell登陆权限(禁止客户端shell登录),找到最后头的zhangsan、lisi,把冒号后面的/bin/bash改成/usr/local/git/bin/git-shell,就是你的git安装目录下的/bin/git-shell,然后保存退出。【每次都想输入密码则可忽略】



vi /etc/passwd


 如:

centos 搭建git服务器_git服务器

7.添加用户的SSH公钥,免密码登录【使用密钥对来增强安全性,并且免去输密码的麻烦,如需每次输入密码登录该步骤可省去】。【每次都想输入密码则可忽略】

创建公钥目录



mkdir -p /home/zhangsan/.ssh


切换目录后创建密钥存放文件



cd /home/zhangsan/.ssh
vi authorized_keys


将从zahngsan、lisi的电脑的C:/users/用户名/.ssh目录下找到id_rsa.pub,分别设置到对应的用户的.ssh目录中authorized_keys文件中;

(PS1:如果张三没有id_rsa.pub文件的话,那就用cmd执行git config --global user.name "zahngsan" git config --global user.email "张三的能接收邮件的邮箱",然后执行 ssh-keygen,然后按三下回车【PS:它先要求你确认保存公钥的位置(.ssh/id_rsa),然后它会让你重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空。】,就有那个文件了)

(PS2:也可是使用以下方法获取id_rsa.pub文件

  下载git客户端安装好后右键选择Git GUI Here->Help->Show SSH Key

centos 搭建git服务器_linux_02

centos 搭建git服务器_git仓库_03

centos 搭建git服务器_git仓库_04

 

命令截图如下:

centos 搭建git服务器_git_05

 

验证git服务器

1.linux git服务器创建裸仓库目录 创建裸仓库目录,test为项目名



mkdir -p /data/gitrepos/test


2.linux git服务器创建裸仓库 ,git服务器初始化仓库的时候一定要加上--bare,否则你的仓库不能推送代码,test为项目名;



git init --bare /data/gitrepos/test/test.git


3.linux git服务器修改git仓库的读写权限,这样子git仓库就能读写了,否则会报错拒绝提交的,如果push出错有可能这里的权限问题;



chmod -R 777 /data/gitrepos/test


4.在window安装git客户端,打开git bash切换到指定目录,输入git clone zhangsan@服务器IP:/data/gitrepos/test/test.git【PS:如git clone zhangsan@192.168.0.119:/data/gitrepos/test/test.git】,

然后按照提示输入密码就能clone项目;【PS:设置了SSH公钥免密码登录则不需要输入密码】

5.在window然后增加个readme.txt或者其他文件,然后随意添加文字内容,然后在git bash切换到test目录,执行git add readme.txt, git commit -m"新增readme文件", git push -u origin master,就看执行push以后是否成功就行了。

linux 命令如下:

centos 搭建git服务器_git_06

git bash命令如下:

 centos 搭建git服务器_git服务器_07

 

把用户添加到用户组【可不设置】

1.新建访问用户组: groupadd developer(创建developer用户组,你也可以改成其他的);

2.变更git仓库的所有人为developer用户组: chgrp -R developer /data/gitrepos/test, 这是修改权限给git用户组的。

3.添加用户到用户组: usermod -G developer zhangsan, usermod -G developer lisi

如果团队很小,把每个人的公钥收集起来放到服务器的​​authorized_keys​​文件里就是可行的。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥。