服务器初始化配置
连接服务器
ssh 用户名@IP
服务器安装 Git
以 Ubuntu 为例:
sudo apt update
sudo apt install git
服务器配置 Git
以下命令在服务器上创建了一个 Git 用户充当管理员:
git config --global user.name "GitAdmin"
git config --global user.email "邮箱"
以下命令将初始分支的默认名称改为 Git 最新约定的 main,以避免某些错误,之后本地配置同理。
git config --global init.defaultBranch main
服务器初始化仓库
切换到当前用户主目录依次创建文件夹 MC/saves,再进入其中创建一个与存档文件夹名相同的文件夹:
cd ~
mkdir -p MC/saves/存档名 && cd MC/saves/存档名
进入该文件夹运行以下命令:
git init --bare
这是创建了一个 bare 仓库,等于是没有工作目录(那些原始文件)的 Git 仓库,bare 仓库里面的内容就是普通仓库里 .git 文件夹里的内容。要提取出普通文件还需要另外使用命令。bare 仓库一般被用作服务器上的中心仓库,用户可以从其中 clone 和 push,而不会遇到奇怪的权限问题。
如果在初始化时忘记了添加 –bare 选项(bare 仓库允许直接推送到当前分支),可使用以下命令将其转换:
git config --bool core.bare true
本地初始化配置
本地安装 Git
本地配置 Git
git config --global init.defaultBranch main
git config --global user.name "名字"
git config --global user.email "邮箱"
事实上这里名字甚至可以写中文。
设置 ssh 密钥认证
当将更新推送到服务器,或从服务器拉取最新内容时时,将会要求服务器相应用户的密码。为简化推送流程,可以考虑设置 SSH 密钥认证。
ssh-keygen -t rsa -C "邮箱"
之后一路回车(即选择默认保存位置、不设置密钥的密码短语)即可。该密钥一般保存在 C:\Users\用户名\.ssh
位置。
在服务器上找到 ~/.ssh
路径,例如 /root/.ssh
,没有就 mkdir -p ~/.ssh
创建一个,之后可以使用 FileZilla 下载并打开里面的 authorized_keys 文件,向其中追加 C:\Users\用户名\.ssh\id_rsa.pub
中的内容,再上传覆盖即可。
本地初始化仓库
用 VS Code 打开存档文件夹,找到左侧的源代码管理
标签,点击“初始化仓库”;这时仓库没有名字,可在之后将远程仓库与其关联时再指定。
此时会显示当前目录下诸多更改,在“消息”处填写更新说明,不妨写成“初始化”,确认无误可以点击“提交”,之后每次更新这个消息就写成日期。之后跳出的提示是是否跳过暂存直接提交,确认即可。
此时,本地仓库已经可以正常工作。
本地添加远程仓库
为了将该仓库的内容发布到服务器,在 VS Code 打开的存档文件夹根目录中打开终端,输入以下命令:
git remote add 仓库名 服务器用户名@服务器IP地址:仓库路径
这是将之前服务器上创建的空白仓库关联到本地当前打开这个仓库,今后发布更新就可以选择发布到该远程仓库。注意成功执行后不会有任何输出提示;运行 git remote -v
可以确认是否添加成功。
本地发布到服务器
之后在侧面源代码管理
中点击“发布 Branch”即可。
检查是否发布成功,可在服务器上运行类似以下命令:
du -sh /root/saves/存档名
如果发现文件夹大小和本地存档类似,说明已成功推送。
玩家初始化配置
玩家电脑初始化配置
请参照本地初始化配置部分安装 Git、配置 Git、设置 ssh 密钥认证。
玩家拉取存档
进入游戏的 saves 文件夹,打开终端运行以下命令:
git clone 服务器用户名@服务器IP地址:仓库路径
之后使用 NBTExplorer 打开 level.dat,删除其中的 Player 词条,这样能避免存档在不同电脑、不同玩家间转移时出现串物品栏的问题。
玩家日常使用
特别提示
MC 存档包含大量二进制文件,因为 Git 无法有效合并二进制文件的修改,在出现冲突时可能会直接采用来自最新提交玩家的版本,而非将不同玩家对同一文件的更改全部保留。因此,请确保同时只有一个玩家使用该存档,当该玩家推送更新到服务器后,才能允许下一个玩家拉取存档。
本文考虑使用 Git 管理存档的目的是在用自己电脑开服的服主未在线时,其他玩家也可以拉取服务器的存档。最佳实践:使单独一个玩家拉取存档并开服,其他玩家均连接该玩家的电脑。
开始游戏前拉取最新版存档
用 VS Code 打开存档文件夹,找到侧面“源代码管理”标签,点侧边栏右上角“…”中的“拉取”。
之后使用 NBTExplorer 打开 level.dat,删除其中的 Player 词条,再进入游戏。
游玩后提交更新
用 VS Code 打开存档文件夹,找到侧面“源代码管理”标签,依次点击“提交”“同步更改”即可。
发表回复
要发表评论,您必须先登录。