Skip to content

克隆仓库

克隆(Clone)是获取 Git 仓库完整副本的过程。这个章节将教你如何克隆 EnderRealm 仓库。

什么是克隆?

克隆是 Git 的一个操作,它会:

  • 复制所有文件:获取仓库中的所有文件
  • 复制所有历史:获取所有的提交记录
  • 设置远程仓库:自动配置远程仓库地址
  • 创建本地仓库:在本地创建一个完整的 Git 仓库

克隆方式选择

克隆仓库有两种方式:

方式优点缺点适用场景
HTTPS简单,无需配置每次需要输入密码临时使用,新手推荐
SSH安全,无需每次输入密码需要配置 SSH 密钥长期开发,推荐

方式一:HTTPS 克隆(推荐新手)

步骤 1:获取仓库 URL

访问 EnderRealm GitHub 仓库: https://github.com/EnderRealmMC/EnderRealmServerCore

点击绿色的 "Code" 按钮,复制 HTTPS URL:

https://github.com/EnderRealmMC/EnderRealmServerCore.git

步骤 2:选择克隆目录

打开终端,选择要存放项目的目录:

bash
# Windows
cd D:\projects

# macOS/Linux
cd ~/projects

步骤 3:执行克隆命令

bash
git clone --recurse-submodules https://github.com/EnderRealmMC/EnderRealmServerCore.git

提示

--recurse-submodules 参数会自动初始化和克隆子模块。EnderRealm 项目使用了子模块,这个参数很重要!

步骤 4:等待克隆完成

克隆过程可能需要几分钟,取决于网络速度:

Cloning into 'EnderRealmServerCore'...
remote: Enumerating objects: 12345, done.
remote: Counting objects: 100% (12345/12345), done.
remote: Compressing objects: 100% (12345/12345), done.
Receiving objects: 100% (12345/12345), 12.34 MiB | 1.23 MiB/s, done.
Resolving deltas: 100% (12345/12345), done.
Submodule 'libs/Easy4Form' (https://github.com/EnderRealmMC/Easy4Form.git) registered for path 'libs/Easy4Form'
Submodule 'libs/EnderRealmFastGUI' (https://github.com/EnderRealmMC/EnderRealmFastGUI) registered for path 'libs/EnderRealmFastGUI'
Submodule 'libs/Floodgate' (https://github.com/EnderRealmMC/Floodgate.git) registered for path 'libs/Floodgate'
Submodule 'EnderRealmRuntime' (https://github.com/EnderRealmMC/EnderRealmRuntime.git) registered for path 'EnderRealmRuntime'
Cloning into 'D:/projects/EnderRealmServerCore/libs/Easy4Form'...
Cloning into 'D:/projects/EnderRealmServerCore/libs/EnderRealmFastGUI'...
Cloning into 'D:/projects/EnderRealmServerCore/libs/Floodgate'...
Cloning into 'D:/projects/EnderRealmServerCore/EnderRealmRuntime'...

步骤 5:验证克隆结果

进入项目目录并验证:

bash
# 进入项目目录
cd EnderRealmServerCore

# 查看目录结构
ls  # macOS/Linux
dir # Windows

# 验证 Git 状态
git status

# 验证子模块
git submodule status

应该看到类似输出:

 1a2b3c4d5e6f7g8h9i0j libs/Easy4Form (heads/main)
 0j9i8h7g6f5e4d3c2b1a libs/EnderRealmFastGUI (heads/main)
 9i8h7g6f5e4d3c2b1a0j libs/Floodgate (heads/main)
 8h7g6f5e4d3c2b1a0j9i EnderRealmRuntime (heads/main)

方式二:SSH 克隆

步骤 1:检查 SSH 密钥

首先检查是否已有 SSH 密钥:

bash
ls ~/.ssh/id_rsa.pub        # macOS/Linux
dir %USERPROFILE%\.ssh\id_rsa.pub  # Windows

如果文件不存在,需要生成新的 SSH 密钥。

步骤 2:生成 SSH 密钥

bash
ssh-keygen -t rsa -b 4096 -C "[email protected]"

按提示完成:

  • 选择保存位置(默认即可)
  • 输入密码(可选)
  • 确认密码

步骤 3:添加 SSH 密钥到 GitHub

  1. 复制公钥内容:
bash
# macOS
pbcopy < ~/.ssh/id_rsa.pub

# Windows
clip < %USERPROFILE%\.ssh\id_rsa.pub

# Linux
cat ~/.ssh/id_rsa.pub | xclip -selection clipboard
  1. 访问 GitHub SSH 设置:https://github.com/settings/ssh/new
  2. 粘贴公钥并保存

步骤 4:测试 SSH 连接

应该看到:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

步骤 5:使用 SSH 克隆

bash
git clone --recurse-submodules [email protected]:EnderRealmMC/EnderRealmServerCore.git

克隆失败的常见原因

网络问题

如果克隆速度很慢或失败,可能是网络问题:

bash
# 使用代理(如果有的话)
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

权限问题

如果提示权限错误:

bash
# HTTPS 方式:检查用户名和密码
# SSH 方式:检查 SSH 密钥配置

# 临时使用凭证管理器
git config --global credential.helper store

磁盘空间不足

确保目标目录有足够的磁盘空间(EnderRealm 项目约 500MB)。

验证项目完整性

克隆完成后,验证项目完整性:

bash
# 进入项目目录
cd EnderRealmServerCore

# 检查关键目录是否存在
ls -la EnderRealmServerCore/  # 核心模块
ls -la bedwars/              # 空岛战争模块
ls -la disaster/             # 灾难生存模块
ls -la BlockedInCombat/      # 方块战斗模块
ls -la libs/                 # 库模块
ls -la EnderRealmRuntime/    # 运行时模块

# 检查构建文件
ls build.gradle.kts
ls settings.gradle.kts
ls gradlew
ls gradlew.bat

常见问题

Q: 克隆时提示 "Permission denied"?

A: 检查以下几点:

  • SSH 密钥是否正确配置
  • GitHub 账户是否有仓库访问权限
  • 仓库 URL 是否正确

Q: 子模块克隆失败怎么办?

A: 手动初始化子模块:

bash
git submodule update --init --recursive

Q: 如何更新子模块?

A: 使用以下命令:

bash
# 更新所有子模块到最新版本
git submodule update --remote

# 更新特定子模块
git submodule update --remote libs/Easy4Form

Q: 如何查看子模块状态?

A: 使用以下命令:

bash
# 查看子模块状态
git submodule status

# 查看子模块详细信息
git submodule foreach git log --oneline -5

下一步

仓库克隆完成后,让我们继续学习 子模块管理