スクリプトの復元とリポジトリの移行

Earth Engine コードエディタでリポジトリ内のスクリプトやフォルダを誤って削除した場合や、リポジトリを新しいアカウントに移行する必要がある場合でも、完全なコミット履歴は Google のサーバーの Git ログに保存されます。コードエディタの リポジトリ アイコンを使用すると、リポジトリ全体が以前の状態に戻りますが、標準の Git コマンドライン ツールを使用してリポジトリをローカルにクローンすると、他のスクリプトに対する新しい変更を失うことなく、個々のスクリプトやフォルダを選択的に復元できます。

復元できるもの

コード エディタの [スクリプト] タブでは、作業は users/username/repository:folder/script として整理されます。

  • スクリプトとフォルダ(復元可能): リポジトリ内のスクリプトまたはフォルダを削除すると、最新のコミットからのみ削除されます。リポジトリ自体は earthengine.googlesource.com にまだ存在するため、オプション A または オプション B を使用してリポジトリを複製し、その Git commit 履歴から削除されたファイルを復元できます。
  • リポジトリ全体(復元不可): リポジトリ(users/username/repository)を削除すると、Git リポジトリ、そのスクリプト、コミット履歴が earthengine.googlesource.com から完全に削除されます("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 で commit を作成できるように、作成者の名前とメールアドレスを構成します。

    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 など)を復元するには:

  1. ファイルの履歴を表示して、削除 commit とその直前の commit(ログ出力で削除 commit の直後に表示されます)を見つけます。

    git log --oneline -- "MyScript"
    
  2. ファイルがまだ存在していた最後のバージョンをフォルダに復元します(<commit_hash> を削除前の commit のハッシュに置き換えるか、<deletion_commit_hash>~1 を使用します)。

    git checkout <commit_hash> -- "MyScript"
    
  3. 復元したスクリプトを commit してサーバーに push します。

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

プッシュしたら、ブラウザでコード エディタの [スクリプト] タブを再読み込みします(または、[スクリプト] タブの上部にある ボタンをクリックします)。復元されたスクリプトが表示されます。

オプション B: 削除したフォルダを復元する

削除したフォルダとその中のすべてのスクリプト(MyFolder/ など)を復元するには:

  1. Git の commit ログを調べて、削除 commit とその直前の commit(ログ出力で削除 commit の直後に表示されます)を見つけます。

    git log --oneline -- "MyFolder/"
    
  2. フォルダがまだ存在していた最後のバージョンをフォルダに復元します(<commit_hash> は、削除前のコミットのハッシュに置き換えるか、<deletion_commit_hash>~1 を使用します)。

    git checkout <commit_hash> -- "MyFolder/"
    
  3. 復元したフォルダを commit してサーバーに push します。

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

プッシュしたら、ブラウザでコード エディタの [スクリプト] タブを再読み込みします(または、[スクリプト] タブの上部にある ボタンをクリックします)。復元されたフォルダが表示されます。

オプション C: リポジトリ全体を移行する

リポジトリ全体とその完全なコミット履歴を新しいアカウントに移行する必要がある場合(機関アカウントと個人アカウントの切り替えなど):

認証情報と権限: 2 つの異なる Google アカウント間でリポジトリを移行する場合(大学または仕事用のアカウントから個人用のアカウントなど)、移行を開始する前に、新しいアカウントに古いリポジトリを読み取る権限があることを確認する必要があります。

  • 共有の前提条件: 以前のコードエディタ アカウントにログインし、以前のリポジトリ名の横にある アイコンをクリックして、新しい Google アカウントのメールアドレスと共有し、閲覧者アクセス権を付与します。
  • これにより、ローカル コンピュータで 1 回だけ認証を行うだけで済みます(ステップ 1 で生成された新しいアカウントの Git 認証情報を使用)。新しいアカウントには、古いリポジトリからのクローン作成と新しいリポジトリへのプッシュの両方の権限が付与されるため、認証情報の競合を回避できます。
  1. 標準の Git を使用して、古いリポジトリのクローンをローカルに作成します。

    git clone https://earthengine.googlesource.com/users/old_username/old_repository
    
  2. 新しい Code Editor アカウントの [New > Repository] メニューから、新しい空のリポジトリを作成します。(注: push する前に新しいリポジトリにスクリプトやフォルダを作成または保存しないでください。push が失敗します。)

  3. ローカル クローン ディレクトリに移動します。

    cd old_repository
    
  4. ローカルのコミット履歴とスクリプト全体を、新しい空の Earth Engine リポジトリに直接 push します。

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

プッシュが完了したら、新しいアカウントのコード エディタで [スクリプト] タブを再読み込み(または ボタンをクリック)して、移行されたリポジトリと履歴を確認します。