在Linux下搭建Git服务器步骤

当我们需要在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仓库

  1. 第一步是在Git服务器上创建一个新用户。我们可以使用以下命令进行操作:
sudo adduser user1

这里采用用户user1作为服务器的Git用户。

  1. 创建一个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
  1. 然后,我们需要添加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
  1. user1用户添加一个简单的readme文件,并提交更改:
touch README.md
echo "Initial commit" >> README.md
git add README.md
git commit -m "Initial commit"
git push origin master
  1. 然后user1用户可以查看Git Web界面进行简单的代码审查:
http://123.123.123.123/gitweb/?p=project.git;a=summary

在Web页面中,您可以看到您刚才提交的更改。

从远程主机克隆Git仓库

  1. 在远端电脑(例如,您的笔记本)上生成SSH钥匙:
ssh-keygen
  1. 复制您的公钥,并将其添加到远程服务器上:
cat ~/.ssh/id_rsa.pub

将以上命令输出的内容复制到服务器的~/.ssh/authorized_keys文件中。

  1. 然后在您的本地计算机上,使用以下命令克隆项目:
git clone git@123.123.123.123:/srv/git/project.git
  1. 这将使您既可在本地计算机上查看该项目,也可在服务器上查看该项目。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Linux下搭建Git服务器步骤 - Python技术站

(1)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Linux系统下/tmp目录文件重启后自动删除,不重启自动删除10天前的/TMP的文件(转)

      /tmp目录文件重启后自动删除现在知道有ubuntu和solaris系统source:http://blog.chinaunix.net/uid-26212859-id-3567875.html经常会把临时性的log或抓包等文件放在/tmp目录下,重启后发现文件都丢失了。查下资料发现,可以通过设置解决这个问题。在/etc/default/目录下有个rcS…

    Linux 2023年4月12日
    00
  • Linux Centos 启动mysql ERROR * The server quit without updating PID file (/usr/local/mysql/data/mysql.pid).

    做了一些尝试;比如kill -9 进程id  发现根本就杀不死。 查看ERROR.LOG 2015-12-07 18:50:08 29710 [ERROR] /usr/local/mysql/bin/mysqld: unknown variable ‘scripts/mysql_install_db –user=mysql’ 第一感觉;百度了下。大部分都是…

    Linux 2023年4月11日
    00
  • VMware Workstation Pro 16安装CentOS7超详细图文步骤

    VMware Workstation Pro 16安装CentOS7超详细图文步骤 硬件要求 在安装Linux操作系统时,需要满足以下基本硬件要求: 4GB以上内存,建议8GB以上 50GB以上的硬盘容量 支持64位操作系统的CPU 安装VMware Workstation Pro 16 首先,我们需要安装VMware Workstation Pro 16。…

    Linux 2023年5月24日
    00
  • linux下gsoap的初次使用 — c风格加法实例

    摘自: http://blog.csdn.net/jinpw/article/details/3346844 https://www.cnblogs.com/dkblog/archive/2011/08/19/2145942.html   这两天,接到一个项目,需要在linux程序中调用远程的web应用,通过soap协议。开始上网查了下资料,发现了gsoap…

    Linux 2023年4月11日
    00
  • centos7 PHP环境搭建 GD库 等插件安装方法

    CentOS 7 PHP环境搭建GD库等插件安装方法 在 CentOS 7 上搭建 PHP 环境并安装 GD 库等插件可以通过以下步骤完成。 安装 PHP 在 CentOS 上安装 PHP 可以使用 yum 命令轻松完成: sudo yum install php 安装 GD 库 安装 GD 库依赖库: sudo yum install -y libpng-…

    Linux 2023年5月14日
    00
  • Linux中的工作队列(转载)

    转载自《Linux中的工作队列》 http://blog.chinaunix.net/space.php?uid=487105&do=blog&cuid=971040 [前记]Linux自从2.6.20之后,工作队列发生了一些变化,目前从网络上搜索的资料一般都是介绍老版本的工作队列,很少见到对新版本的介绍。本文对新老版本都做了简要概述,并分别…

    Linux 2023年4月11日
    00
  • cygwin怎么用 cygwin使用图文教程

    下面是关于cygwin怎么用及使用图文教程的完整攻略。 一、什么是Cygwin Cygwin是一个在Windows系统上运行的类Unix环境,它提供了类似Linux/Unix操作系统下的shell、工具链以及一些基础的系统库,可以帮助开发者在Windows系统上完成类Unix的开发任务。 二、Cygwin的安装 1. 下载Cygwin 首先需要从Cygwin…

    Linux 2023年5月24日
    00
  • linux shell判断输入的是哪个不可见字符,例如^X(Ctrl-X)

    最近有一个需求,shell终端输入^X切换到另一个登陆界面。 如何判断输入的是^加上其他字母成为要解决的问题。 查了一堆资料,发现可以这样判断: #!/bin/sh echo Please input ^X: read a echo $a if [ $a = $’\030′ ];then echo ACK else echo NAK fi 其中\030是^X…

    Linux 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部