Восстановление скриптов и перенос репозитория

Если вы случайно удалите скрипт или папку из репозитория в редакторе кода Earth Engine или вам нужно перенести репозиторий в новый аккаунт, полная история коммитов сохранится в журналах Git на наших серверах. Хотя значок репозитория в редакторе кода позволяет вернуть весь репозиторий к предыдущему состоянию, клонирование репозитория локально с помощью стандартных инструментов командной строки Git позволяет выборочно восстанавливать отдельные скрипты или папки, не теряя более поздние изменения в других скриптах.

Что можно восстановить

На вкладке Скрипты в редакторе кода ваши работы организованы следующим образом:users/username/repository:folder/script

  • Скрипты и папки (можно восстановить). При удалении скрипта или папки из репозитория они удаляются только из последнего коммита. Поскольку репозиторий по-прежнему существует на earthengine.googlesource.com, вы можете клонировать его и восстановить удаленные файлы из истории коммитов Git, используя вариант А или вариант Б.
  • Репозитории целиком (восстановить нельзя). При удалении репозитория (users/username/repository) безвозвратно удаляются репозиторий Git, его скрипты и история коммитов из earthengine.googlesource.com (возвращается "Repository is not found"). После удаления репозиторий нельзя клонировать или восстановить.

Сначала выполните предварительные условия, а затем выберите один из следующих вариантов в зависимости от задачи:

Требования

Шаг 1. Создайте учетные данные Git

Поскольку в размещенных в Google хранилищах Git используется безопасная аутентификация с помощью токенов, сначала необходимо создать локальные учетные данные Git:

  1. Откройте окно в режиме инкогнито или приватном режиме в веб-браузере и перейдите на страницу генератора паролей Git:earthengine.googlesource.com/new-password. Примечание. Войдите в аккаунт Google, зарегистрированный в Earth Engine. Если вы переносите репозиторий в новый аккаунт, следуя инструкциям из варианта В, сначала предоставьте новому аккаунту доступ к старому репозиторию и войдите в систему, используя новый аккаунт Google.
  2. Скопируйте весь блок сгенерированных команд оболочки, показанный на экране.
  3. Откройте терминал (командную строку) на компьютере, вставьте скопированные команды и выполните их. Это автоматически настроит учетные данные Git cookie на вашем компьютере.
  4. Если вы впервые используете Git на компьютере, настройте имя автора и адрес электронной почты, чтобы Git разрешил вам создавать коммиты:

    git config --global user.name "Your Name"
    git config --global user.email "you@example.com"
    

Шаг 2. Клонируйте репозиторий (варианты А и Б)

Если вы переносите репозиторий между аккаунтами, перейдите к варианту В. Чтобы восстановить удаленный скрипт или папку, клонируйте репозиторий в локальном терминале, заменив username и repository на свои данные Earth Engine. Вы также можете скопировать команду клонирования, нажав на значок рядом с названием репозитория на вкладке Скрипты:

git clone https://earthengine.googlesource.com/users/username/repository

После этого перейдите в клонированную папку:

cd repository

Вариант А. Восстановите удаленный скрипт

Чтобы восстановить удаленный файл скрипта (например, 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
    

После этого обновите вкладку Скрипты в редакторе кода (или нажмите кнопку в верхней части вкладки Скрипты), чтобы увидеть восстановленный скрипт.

Вариант Б. Восстановите удаленную папку

Чтобы восстановить удаленную папку и все скрипты в ней (например, 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
    

После этого обновите вкладку Скрипты в редакторе кода (или нажмите кнопку в верхней части вкладки Скрипты), чтобы увидеть восстановленную папку.

Вариант В. Перенос всего репозитория

Если вам нужно перенести весь репозиторий и историю коммитов в новый аккаунт (например, при переходе с корпоративного аккаунта на личный):

Учетные данные и разрешения. Если вы переносите репозиторий между двумя разными аккаунтами Google (например, из рабочего или учебного в личный), убедитесь, что у нового аккаунта есть разрешение на чтение старого репозитория, прежде чем начинать перенос:

  • Требование для предоставления доступа. Войдите в свой старый аккаунт редактора кода, нажмите на значок рядом с названием старого репозитория и предоставьте новому аккаунту Google доступ с ролью Читатель.
  • После этого вам нужно будет выполнить аутентификацию на локальном компьютере только один раз (используя учетные данные Git нового аккаунта, созданные на шаге 1). У нового аккаунта будут разрешения на клонирование из старого репозитория и отправку данных в новый, что позволит избежать конфликтов учетных данных.
  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
    

После этого перезагрузите вкладку Скрипты в редакторе кода нового аккаунта (или нажмите кнопку ), чтобы увидеть перенесенный репозиторий и историю.