安装 Git 服务器

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Git 是一个强大的开源分布式版本控制系统,对于高效管理项目版本至关重要。搭建自己的 Git 服务器不仅能加深你对 Git 内部机制的理解,还能为私有项目管理提供一个安全的环境。本实验将指导你在 Linux 机器上搭建 Git 服务器的过程。尽管有 GitHub 等平台可用于托管代码,但私有 Git 服务器能确保你的数据在你的控制下保持安全。

🎯 任务

在本项目中,你将学习:

  • 如何在 Linux 系统上安装和配置 Git
  • 如何创建和管理专门用于 Git 操作的用户
  • 如何生成和配置 SSH 密钥,以确保本地机器与 Git 服务器之间的连接安全
  • 如何在本地和服务器上初始化和管理 Git 仓库
  • 如何执行版本控制操作,如提交更改并将其推送到远程仓库
  • 如何通过克隆仓库来验证设置,以确保一切正常运行

🏆 成果

完成本项目后,你将能够:

  • 理解在 Linux 环境中安装和设置分布式版本控制系统 Git 的基本原理
  • 在 Unix/Linux 系统中处理特定应用任务的用户权限和安全性
  • 利用 SSH 密钥在机器之间进行安全通信的技术,这是管理远程服务器的一项基本技能
  • 创建和管理裸 Git 仓库,用于 Git 操作中的服务器端存储
  • 使用 Git 命令提交项目并进行版本控制,然后将这些更改推送到远程服务器
  • 通过克隆和检查数据完整性来验证和排查远程仓库管理中的常见问题

安装 Git

在这一步中,我们将在你的机器上安装 Git,这台机器将同时作为本地服务器和远程服务器。这个练习将为你在个人电脑上为本地网络托管搭建 Git 服务器做好准备。

## 更新 apt 软件包数据库,以确保我们使用的是最新的软件列表
sudo apt-get update

## 使用 apt-get 安装 Git
sudo apt-get install git

此命令会更新你的软件包列表,以确保所有后续安装都是最新的,然后安装 Git,即用于管理我们仓库的版本控制系统。

配置 Git 用户

为便于管理,我们将创建一个专门用于 Git 操作的新用户,并设置其工作目录。

## 创建一个用于 Git 操作的新用户
sudo useradd labex-git
sudo passwd labex-git

为 Git 用户设置密码(例如“labex”),你需要输入两次密码。

接下来,为 Git 用户创建一个工作目录并分配所有权

sudo mkdir /home/labex-git
sudo chown -R labex-git:labex-git /home/labex-git

这一系列命令创建了一个新用户,设置了密码,并为 Git 操作建立了一个专用的工作目录,确保仓库管理与其他系统活动隔离开来。

生成 SSH 密钥

使用 SSH 密钥将简化我们的 Git 操作,因为无需在每次操作时输入用户凭据。让我们生成一个 SSH 密钥对并进行设置。

## 生成一个 SSH 密钥对
ssh-keygen -t rsa -C "[email protected]"

按回车键接受所有提示以使用默认设置。然后,将公钥发送到 Git 用户的机器。

cat ~/.ssh/id_rsa.pub | ssh labex-git@localhost'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'

在这里你应该输入“yes”并输入你之前设置的密码。

此步骤生成一个 SSH 密钥对,确保本地和远程设置之间的连接安全。然后将公钥添加到 Git 服务器上的授权列表中,从而实现安全通信,而无需在每次操作时输入密码。

创建远程仓库

现在,我们将切换到 Git 用户并设置一个裸 Git 仓库,该仓库适用于服务器端存储。

## 切换到 Git 用户
su labex-git

输入你设置的密码。

现在,你可以创建一个仓库文件夹并初始化一个裸仓库。

mkdir -p /home/labex-git/project.git
cd /home/labex-git/project.git
git init --bare

此命令序列将当前用户切换到 Git 用户,为你的仓库创建一个新目录,并初始化一个裸仓库。此设置对 Git 服务器至关重要,因为它将存储发送给它的所有数据,而不维护任何工作副本,这使其非常适合推送和拉取数据。

设置本地仓库

在这一步中,我们将在你的机器上设置本地仓库。这个过程与你在代码托管平台上通常会做的事情类似。

首先,从 Git 用户切换回你的普通用户:

## 退出 Git 用户
exit

现在,让我们为你的项目创建一个目录并初始化一个 Git 仓库:

## 为你的项目创建一个目录
mkdir -p /home/labex/project/labex_project
cd /home/labex/project/labex_project

## 初始化一个 Git 仓库
git init

这会在指定目录中设置一个新的 Git 仓库,它将作为你项目的本地仓库。

配置你的 Git 用户详细信息:

## 设置你的 Git 用户名
git config --global user.name "labex"

## 设置你的 Git 邮箱
git config --global user.email "[email protected]"

此步骤可确保你所有的提交都将记录你的用户名和邮箱,便于跟踪更改。

创建一个文件来测试提交过程:

## 创建一个测试文档
echo "I am Labex Readme Doc" > readme.md

此命令创建一个名为 readme.md 的简单文本文件,其中包含一条示例消息,我们将使用它来测试向远程仓库的提交和推送过程。

提交并推送更改

在初始化仓库并设置好 Git 配置之后,是时候提交并推送你的首次更改了。

## 将所有更改添加到暂存区
git add.

## 提交更改
git commit -m "Initial commit"

## 添加远程仓库
git remote add origin labex-git@localhost:/home/labex-git/project.git

现在,我们可以将更改推送到远程仓库。

git push origin master

验证设置

最后,让我们克隆仓库,以确保你的提交已正确托管在远程服务器上。

## 导航到克隆目录
cd /home/labex/project

## 克隆仓库
git clone labex-git@localhost:/home/labex-git/project.git

你可以看到,在 /home/labex/project 路径下已克隆了一个新仓库,并且其中有 readme.md 文件。

总结

在本实验中,你学习了如何在 Linux 系统上设置和配置 Git 服务器、管理 SSH 密钥,以及执行诸如初始化仓库、提交更改并将其推送到远程服务器等典型的 Git 操作。此练习展示了设置和使用 Git 服务器的完整生命周期,为你在安全管理自己的代码仓库方面提供了坚实的基础。这里学到的技能不仅是软件开发的基础,还能增强你在私密、安全环境中对项目版本控制的理解。