在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日

相关文章

  • CentOS8.1搭建Gitlab服务器详细教程

    CentOS8.1搭建Gitlab服务器详细教程 确认安装环境 在开始搭建Gitlab服务器前,确保安装了以下依赖: 一个托管Gitlab的域名 一台运行CentOS 8系统的服务器 2GB以上的RAM 安装了curl、openssh-server、postfix等依赖 开放了必要的端口(如80/443/22) 安装和配置Gitlab 1. 添加Gitlab…

    Linux 2023年5月14日
    00
  • Linux下安装MySQL教程

    Linux下安装MySQL教程 MySQL是一种流行的开源关系型数据库管理系统,本教程将教你在Linux操作系统下安装MySQL。 步骤一:安装MySQL 首先,使用以下命令更新当前所使用的软件包: sudo apt-get update 接着,可以通过以下命令安装MySQL软件包: sudo apt-get install mysql-server 在安装…

    Linux 2023年5月14日
    00
  • 为VMware的多台虚拟机绑定IP地址的方法

    为VMware的多台虚拟机绑定IP地址,可以分为以下几个步骤: 确定虚拟机网络类型 首先,需要确定虚拟机的网络类型,例如NAT、Bridge、Host-only等。根据不同的网络类型,绑定IP地址的方法也会有所不同。 手动配置IP地址 在确定虚拟机的网络类型后,可以手动配置虚拟机的IP地址。具体步骤如下: 在虚拟机中打开网络设置界面; 选择TCP/IP协议,…

    Linux 2023年5月24日
    00
  • DELPHI开发LINUX插件架构的程序

    DELPHI开发LINUX插件架构的程序 DELPHI可以开发LINUX配置型插件架构的程序,并且这一套插件架构,同样适用于MSWINDOWS和MAC。 配置插件: 根据配置,动态加载插件:

    Linux 2023年4月11日
    00
  • docker 部署 postgres

    1. 打开dockerhub查找postgres版本  地址 https://registry.hub.docker.com/_/postgres/tags      2.复制需要的版本 docker pull postgres:alpine3.17   复制需要的版本到服务器上执行      3.运行容器   -d 后台运行          postgr…

    2023年4月8日
    00
  • Linux系统复制vmware 虚拟机后网卡不能启动该怎么办?

    这是一个常见的问题,在Linux系统上复制VMware虚拟机后,其网卡不能正常启动。这种情况通常是因为虚拟机复制时,虚拟机的网卡MAC地址没有改变,导致与原来的虚拟机冲突。在这种情况下,我们可以根据以下步骤解决问题。 步骤一:停止我们的虚拟机 如果我们的虚拟机正在运行,请先停止虚拟机,确保虚拟机处于关闭状态。如果我们已经复制了一个虚拟机,复制后的虚拟机也必须…

    Linux 2023年5月24日
    00
  • 深入理解 Linux 物理内存分配全链路实现

    基于内核 5.19 版本,带你深入理解 Linux 物理内存分配全流程 前文回顾 在上篇文章 《深入理解 Linux 物理内存管理》中,笔者详细的为大家介绍了 Linux 内核如何对物理内存进行管理以及相关的一些内核数据结构。 在介绍物理内存管理之前,笔者先从 CPU 的角度开始,介绍了三种 Linux 物理内存模型:FLATMEM 平坦内存模型,DISCO…

    Linux 2023年4月11日
    00
  • linux centos 7.x 安装 python3.x 替换 python2.x的过程解析

    下面是“Linux CentOS 7.x安装Python 3.x替换Python 2.x的过程解析”完整攻略。 一、准备工作 确保已安装 CentOS 7.x 操作系统 在终端中输入以下指令以升级系统: yum update -y 安装 epel 和 IUS 仓库 yum install -y epel-release yum install -y http…

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