安装 Git 服务器

GitBeginner
立即练习

介绍

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

🎯 任务

在这个项目中,你将学习:

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

🏆 成就

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

  • 理解在 Linux 环境中安装和设置 Git(一个分布式版本控制系统)的基础知识
  • 在 Unix/Linux 系统中处理应用程序特定任务的用户权限和安全
  • 利用 SSH 密钥进行机器间安全通信的技术,这是管理远程服务器的一项基本技能
  • 创建和管理裸 Git 仓库(bare Git repositories),这些仓库用于 Git 操作中的服务器端存储
  • 使用 Git 命令提交和版本化你的项目,并将这些更改推送到远程服务器
  • 通过克隆和检查数据完整性来验证和排查远程仓库管理中的常见问题
这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 86%。获得了学习者 96% 的好评率。

安装 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 "labex@labex.io"

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

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

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

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

✨ 查看解决方案并练习

创建远程仓库

现在,我们将切换到 Git 用户并设置一个适合服务器端存储的裸仓库(bare Git repository)。

## 切换到 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 "labex@labex.io"

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

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

## 创建一个测试文档
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 服务器的完整生命周期,为你安全地管理自己的代码仓库奠定了坚实的基础。在此获得的技能不仅是软件开发的基础,还能增强你对私有、安全环境中项目版本控制的理解。