当我们需要在Linux下建立Git服务器时,可以使用以下步骤进行操作:
安装Git
在Linux服务器上安装Git命令行客户端,可以通过以下命令进行安装:
sudo apt-get update
sudo apt-get install git
创建Git用户
我们可以使用以下命令来创建Git用户和用户组:
sudo adduser git
sudo addgroup git
这里采用用户git
作为服务器的Git用户。
创建证书认证
创建一个可用于Git Server的公钥-私钥对:
ssh-keygen
接着会让您输入相关的信息,直接回车即可生成。公钥和私钥会分别存在~/.ssh/id_rsa.pub
和~/.ssh/id_rsa
(或您自己指定的路径)。
配置Git
在您的服务器上创建一个可供Git推送或拉取的空目录:
mkdir /srv/git/
cd /srv/git
mkdir project.git
cd project.git
git init --bare
这里新建了一个名为project.git
的目录,这个目录就是您的Git项目目录。其中--bare
标志表示这是一个裸的Git仓库。裸Git仓库没有工作目录,并且没有.gitignore,所以在这里不应该玩具体的代码。
接着,我们需要让Git用户拥有此仓库的读写权限,这可以通过以下命令实现:
sudo chown -R git:git /srv/git/project.git
这将使Git用户成为该文件夹及其所有子文件的所有者。
添加pre-receive钩子:
Git服务通常需要一些其他处理,例如撤销或控制提交。为此,我们需要添加一个特殊的标记文件pre-receive
(没有扩展名),这可以在Git服务器中提供其他操作。为此,请输入以下命令:
cd /srv/git/project.git/hooks
vim pre-receive
然后添加以下内容:
#!/bin/sh
set -e
# Block force-push
for rejected in $(git rev-list $1..$3 --not --branches); do
echo "[pre-receive hook] Notice: Someone force-push a commit ($rejected)"
exit 1
done
保存,并输入以下命令:
chmod +x pre-receive
从远程主机clone
首先,我们需要为我们的使用者添加访问权限。要创建一个新用户,我们需要将指定的公钥添加到服务器上的授权文件中:
sudo mkdir ~git/.ssh
sudo touch ~git/.ssh/authorized_keys
sudo vim ~git/.ssh/authorized_keys
现在,将用户的公钥复制并粘贴到授权文件中。如果你有多个用户,那么每个用户都需要在授权列表中有一个条目。
现在,我们可以从远程主机clone该仓库。例如,如果您的服务器IP地址为123.123.123.123,则可以使用以下命令:
git clone git@123.123.123.123:/srv/git/project.git
这将拉取由Git服务器提供的裸项目。
样例
在Git服务器上新建user1用户和project仓库
- 第一步是在Git服务器上创建一个新用户。我们可以使用以下命令进行操作:
sudo adduser user1
这里采用用户user1
作为服务器的Git用户。
- 创建一个Git项目目录并指定用户权限。
sudo mkdir -p /srv/git/project.git
sudo chown git:git /srv/git/project.git
chmod g+w /srv/git/project.git
cd /srv/git/project.git
sudo git init --bare
sudo chown -R git:git /srv/git/project.git
- 然后,我们需要添加Git用户的公钥至Git仓库授权文件中:
sudo mkdir -p /home/user1/.ssh
sudo chmod 700 /home/user1/.ssh
sudo vim /home/user1/.ssh/authorized_keys
将git用户的公钥拷贝到该文件内,并为了安全性,我们需要修改相关文件的权限:
sudo chmod 644 /home/user1/.ssh/authorized_keys
sudo chown user1:user1 /home/user1/.ssh/authorized_keys
最后user1用户只需要在本地输入以下命令来克隆项目:
git clone git@123.123.123.123:/srv/git/project.git
- user1用户添加一个简单的readme文件,并提交更改:
touch README.md
echo "Initial commit" >> README.md
git add README.md
git commit -m "Initial commit"
git push origin master
- 然后user1用户可以查看Git Web界面进行简单的代码审查:
http://123.123.123.123/gitweb/?p=project.git;a=summary
在Web页面中,您可以看到您刚才提交的更改。
从远程主机克隆Git仓库
- 在远端电脑(例如,您的笔记本)上生成SSH钥匙:
ssh-keygen
- 复制您的公钥,并将其添加到远程服务器上:
cat ~/.ssh/id_rsa.pub
将以上命令输出的内容复制到服务器的~/.ssh/authorized_keys
文件中。
- 然后在您的本地计算机上,使用以下命令克隆项目:
git clone git@123.123.123.123:/srv/git/project.git
- 这将使您既可在本地计算机上查看该项目,也可在服务器上查看该项目。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Linux下搭建Git服务器步骤 - Python技术站