如果您在 Earth Engine 代码编辑器中意外删除了代码库中的脚本或文件夹,或者需要将代码库迁移到新账号,我们服务器上的 Git 日志中会保留完整的提交历史记录。虽然代码编辑器中的代码库 图标会将整个代码库恢复到之前的状态,但使用标准 Git 命令行工具在本地克隆代码库可让您选择性地恢复单个脚本或文件夹,而不会丢失对其他脚本所做的较新更改。
可以恢复的内容
在代码编辑器的 Scripts 标签页中,您的工作将按 users/username/repository:folder/script 进行整理:
- 脚本和文件夹(可恢复):删除代码库中的脚本或文件夹只会将其从最新提交中移除。由于代码库本身仍然存在于
earthengine.googlesource.com上,因此您可以使用选项 A 或选项 B 克隆代码库并从其 Git 提交历史记录中恢复已删除的文件。 - 整个代码库(无法恢复):删除代码库 (
users/username/repository) 会从earthengine.googlesource.com中永久移除 Git 代码库、其脚本及其提交历史记录(返回"Repository is not found")。代码库一经删除便无法克隆或恢复。
首先完成前提条件,然后根据您的任务选择以下选项之一:
前提条件
第 1 步:生成 Git 凭据
由于 Google 托管的 Git 代码库使用安全令牌身份验证,因此您必须先生成本地 Git 凭据:
- 在网络浏览器中打开无痕浏览窗口或无痕式窗口,然后访问 Git 密码生成器: earthengine.googlesource.com/new-password (注意:请仅使用您注册的 Earth Engine Google 账号登录。如果您要根据选项 C 将代码库迁移到新账号,请先将旧代码库与新账号共享,然后使用新 Google 账号在此处登录。)
- 复制屏幕上显示的所有生成的 shell 命令。
- 在电脑上打开终端(命令行),粘贴复制的命令,然后运行这些命令。这会自动配置您机器的 Git Cookie 凭据。
如果您是首次在计算机上使用 Git,请配置作者姓名和电子邮件地址,以便 Git 允许您创建提交:
git config --global user.name "Your Name" git config --global user.email "you@example.com"
第 2 步:克隆代码库(选项 A 和 B)
如果您要将代码库从一个账号迁移到另一个账号,请跳至选项 C。如需恢复已删除的脚本或文件夹,请在本地终端中克隆您的代码库,方法是将 username 和 repository 替换为您的 Earth Engine 详细信息(您还可以点击脚本标签页中代码库名称旁边的 图标,复制确切的克隆命令):
git clone https://earthengine.googlesource.com/users/username/repository
完成后,进入克隆的文件夹:
cd repository
方法 A:恢复已删除的脚本
如需恢复已删除的脚本文件(例如 MyScript 或 MyFolder/MyScript),请执行以下操作:
查看文件的历史记录,找到删除提交和紧随其后的提交(在日志输出中列在删除提交之后):
git log --oneline -- "MyScript"将文件仍然存在的最后一个版本恢复到您的文件夹中(将
<commit_hash>替换为删除之前的提交的哈希值,或使用<deletion_commit_hash>~1):git checkout <commit_hash> -- "MyScript"提交并推送恢复的脚本到服务器:
git commit -m "Restore MyScript from history" git push origin
推送完成后,重新加载浏览器中的代码编辑器脚本标签页(或点击脚本标签页顶部的 按钮),即可看到已恢复的脚本。
方法 B:恢复已删除的文件夹
如需恢复已删除的文件夹及其中的所有脚本(例如 MyFolder/),请执行以下操作:
检查您的 Git 提交日志,找到删除提交和紧随其后的提交(在日志输出中列在删除提交之后):
git log --oneline -- "MyFolder/"将文件夹仍然存在的最后一个版本恢复到您的文件夹(将
<commit_hash>替换为删除之前的提交的哈希值,或使用<deletion_commit_hash>~1):git checkout <commit_hash> -- "MyFolder/"提交并推送恢复的文件夹,将其放回服务器:
git commit -m "Restore MyFolder and all its scripts" git push origin
推送完成后,重新加载浏览器中的代码编辑器脚本标签页(或点击脚本标签页顶部的 按钮),即可看到已恢复的文件夹。
选项 C:迁移整个代码库
如果您需要将整个代码库及其完整的提交历史记录迁移到新账号(例如,在机构账号和个人账号之间转换时):
凭据和权限:如果您要在两个不同的 Google 账号(例如,从大学或工作账号迁移到个人账号)之间迁移代码库,则必须确保您的新账号在开始迁移之前有权读取旧代码库:
- 共享前提条件:登录您的旧代码编辑器账号,点击旧代码库名称旁边的 图标,然后将该代码库与您的新 Google 账号电子邮件地址共享,并授予该地址读取者访问权限。
- 这样一来,您只需在本地计算机上进行一次身份验证(使用在第 1 步中生成的新账号的 Git 凭据)。新账号将同时拥有从旧代码库克隆和向新代码库推送的权限,从而避免凭据冲突。
使用标准 Git 在本地克隆旧代码库:
git clone https://earthengine.googlesource.com/users/old_username/old_repository在新的代码编辑器账号中,通过新建 > 代码库 菜单创建一个新的空代码库。(注意:在推送之前,请勿在新代码库中创建或保存任何脚本或文件夹,否则推送会失败。)
进入本地克隆的目录:
cd old_repository将整个本地提交历史记录和脚本直接推送到新的空 Earth Engine 代码库:
git push https://earthengine.googlesource.com/users/new_username/new_repository --all
推送完成后,重新加载新账号的代码编辑器中的脚本标签页(或点击 按钮),即可看到迁移后的代码库和历史记录。