指令碼復原和存放區遷移

如果您不小心刪除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 憑證:

  1. 在網路瀏覽器中開啟無痕或私密瀏覽視窗,然後前往 Git 密碼產生器: earthengine.googlesource.com/new-password (注意:請務必使用已註冊 Earth Engine 的 Google 帳戶登入。如要將存放區遷移至「選項 C」下的新帳戶,請先與新帳戶共用舊存放區,然後使用新 Google 帳戶登入這裡。
  2. 複製畫面上顯示的整組產生的殼層指令。
  3. 在電腦上開啟終端機 (指令列),貼上複製的指令,然後執行。這會自動設定機器的 Git Cookie 憑證。
  4. 如果這是您第一次在電腦上使用 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):

  1. 查看檔案記錄,找出刪除的提交內容,以及緊接在該內容之前的提交內容 (列在記錄輸出內容中):

    git log --oneline -- "MyScript"
    
  2. 將檔案仍存在的最後一個版本還原至資料夾 (將 <commit_hash> 替換為刪除前的提交雜湊,或使用 <deletion_commit_hash>~1):

    git checkout <commit_hash> -- "MyScript"
    
  3. 提交並將還原的指令碼推送回伺服器:

    git commit -m "Restore MyScript from history"
    git push origin
    

推送後,請重新載入瀏覽器中的「程式碼編輯器」Scripts 分頁 (或按一下「Scripts」分頁頂端的 按鈕),即可查看還原的腳本。

方法 B:還原已刪除的資料夾

如要復原已刪除的資料夾和其中的所有指令碼 (例如 MyFolder/):

  1. 查看 Git 提交記錄,找出刪除提交和緊接在刪除提交之前的提交 (列在記錄輸出內容中刪除提交之後):

    git log --oneline -- "MyFolder/"
    
  2. 將資料夾還原至資料夾仍存在的最後一個版本 (將 <commit_hash> 替換為刪除前的提交雜湊,或使用 <deletion_commit_hash>~1):

    git checkout <commit_hash> -- "MyFolder/"
    
  3. 提交並將復原的資料夾推送回伺服器:

    git commit -m "Restore MyFolder and all its scripts"
    git push origin
    

推送完成後,請重新載入瀏覽器中的「程式碼編輯器」Scripts分頁 (或點選「程式碼編輯器」Scripts分頁頂端的 按鈕),即可看到還原的資料夾。

選項 C:遷移整個存放區

如要將整個存放區及其完整提交記錄遷移至新帳戶 (例如在機構和個人帳戶之間轉換):

憑證和權限: 如果您要在不同 Google 帳戶之間遷移存放區 (例如從大學或公司帳戶遷移至個人帳戶),請務必先確認新帳戶有權讀取舊存放區,再開始遷移:

  • 分享的先決條件:登入舊的程式碼編輯器帳戶,按一下舊存放區名稱旁的 圖示,然後將存放區分享給新的 Google 帳戶電子郵件地址,並授予「讀者」存取權。
  • 這樣一來,您只需要在本地電腦上驗證一次 (使用在步驟 1 中產生新帳戶的 Git 憑證)。新帳戶將有權從舊存放區複製,並推送至新存放區,避免認證衝突。
  1. 使用標準 Git 在本機複製舊存放區:

    git clone https://earthengine.googlesource.com/users/old_username/old_repository
    
  2. 在新的程式碼編輯器帳戶中,從「New」>「Repository」選單建立新的空白存放區。(注意:推送前請勿在新存放區中建立或儲存任何指令碼或資料夾,否則推送會失敗。)

  3. 前往本機複製的目錄:

    cd old_repository
    
  4. 將整個本機提交記錄和指令碼直接推送至新的空白 Earth Engine 存放區:

    git push https://earthengine.googlesource.com/users/new_username/new_repository --all
    

推送完成後,請重新載入新帳戶程式碼編輯器的「指令碼」分頁 (或點選 按鈕),即可查看已遷移的存放區和記錄。