如果您不小心刪除Earth Engine 程式碼編輯器存放區中的指令碼或資料夾,或是需要將存放區遷移至新帳戶,伺服器上的 Git 記錄會保留完整的提交記錄。程式碼編輯器中的存放區 圖示會將整個存放區還原至先前的狀態,但使用標準 Git 命令行工具在本機複製存放區時,您可以選擇性還原個別指令碼或資料夾,而不會遺失其他指令碼的最新變更。
可復原的項目
在程式碼編輯器的「指令碼」分頁中,您的工作會以 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 帳戶登入這裡。
- 複製畫面上顯示的整組產生的殼層指令。
- 在電腦上開啟終端機 (指令列),貼上複製的指令,然後執行。這會自動設定機器的 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 詳細資料 (您也可以按一下「Scripts」分頁中存放區名稱旁的 圖示,複製確切的複製指令):
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
推送後,請重新載入瀏覽器中的「程式碼編輯器」Scripts 分頁 (或按一下「Scripts」分頁頂端的 按鈕),即可查看還原的腳本。
方法 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
推送完成後,請重新載入瀏覽器中的「程式碼編輯器」Scripts分頁 (或點選「程式碼編輯器」Scripts分頁頂端的 按鈕),即可看到還原的資料夾。
選項 C:遷移整個存放區
如要將整個存放區及其完整提交記錄遷移至新帳戶 (例如在機構和個人帳戶之間轉換):
憑證和權限: 如果您要在不同 Google 帳戶之間遷移存放區 (例如從大學或公司帳戶遷移至個人帳戶),請務必先確認新帳戶有權讀取舊存放區,再開始遷移:
- 分享的先決條件:登入舊的程式碼編輯器帳戶,按一下舊存放區名稱旁的 圖示,然後將存放區分享給新的 Google 帳戶電子郵件地址,並授予「讀者」存取權。
- 這樣一來,您只需要在本地電腦上驗證一次 (使用在步驟 1 中產生新帳戶的 Git 憑證)。新帳戶將有權從舊存放區複製,並推送至新存放區,避免認證衝突。
使用標準 Git 在本機複製舊存放區:
git clone https://earthengine.googlesource.com/users/old_username/old_repository在新的程式碼編輯器帳戶中,從「New」>「Repository」選單建立新的空白存放區。(注意:推送前請勿在新存放區中建立或儲存任何指令碼或資料夾,否則推送會失敗。)
前往本機複製的目錄:
cd old_repository將整個本機提交記錄和指令碼直接推送至新的空白 Earth Engine 存放區:
git push https://earthengine.googlesource.com/users/new_username/new_repository --all
推送完成後,請重新載入新帳戶程式碼編輯器的「指令碼」分頁 (或點選 按鈕),即可查看已遷移的存放區和記錄。