克隆仓库
克隆(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 "your.email@example.com"按提示完成:
- 选择保存位置(默认即可)
- 输入密码(可选)
- 确认密码
步骤 3:添加 SSH 密钥到 GitHub
- 复制公钥内容:
bash
# macOS
pbcopy < ~/.ssh/id_rsa.pub
# Windows
clip < %USERPROFILE%\.ssh\id_rsa.pub
# Linux
cat ~/.ssh/id_rsa.pub | xclip -selection clipboard- 访问 GitHub SSH 设置:https://github.com/settings/ssh/new
- 粘贴公钥并保存
步骤 4:测试 SSH 连接
bash
ssh -T git@github.com应该看到:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.步骤 5:使用 SSH 克隆
bash
git clone --recurse-submodules git@github.com: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 --recursiveQ: 如何更新子模块?
A: 使用以下命令:
bash
# 更新所有子模块到最新版本
git submodule update --remote
# 更新特定子模块
git submodule update --remote libs/Easy4FormQ: 如何查看子模块状态?
A: 使用以下命令:
bash
# 查看子模块状态
git submodule status
# 查看子模块详细信息
git submodule foreach git log --oneline -5下一步
仓库克隆完成后,让我们继续学习 子模块管理。