Если вы случайно удалите скрипт или папку из репозитория в редакторе кода 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:
- Откройте окно в режиме инкогнито или приватном режиме в веб-браузере и перейдите на страницу генератора паролей Git:earthengine.googlesource.com/new-password. Примечание. Войдите в аккаунт Google, зарегистрированный в Earth Engine. Если вы переносите репозиторий в новый аккаунт, следуя инструкциям из варианта В, сначала предоставьте новому аккаунту доступ к старому репозиторию и войдите в систему, используя новый аккаунт Google.
- Скопируйте весь блок сгенерированных команд оболочки, показанный на экране.
- Откройте терминал (командную строку) на компьютере, вставьте скопированные команды и выполните их. Это автоматически настроит учетные данные Git cookie на вашем компьютере.
Если вы впервые используете 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):
Посмотрите историю файла, чтобы найти коммит, в котором он был удален, и коммит, который был сделан непосредственно перед ним (он будет указан сразу после него в журнале):
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
После этого обновите вкладку Скрипты в редакторе кода (или нажмите кнопку в верхней части вкладки Скрипты), чтобы увидеть восстановленный скрипт.
Вариант Б. Восстановите удаленную папку
Чтобы восстановить удаленную папку и все скрипты в ней (например, 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
После этого обновите вкладку Скрипты в редакторе кода (или нажмите кнопку в верхней части вкладки Скрипты), чтобы увидеть восстановленную папку.
Вариант В. Перенос всего репозитория
Если вам нужно перенести весь репозиторий и историю коммитов в новый аккаунт (например, при переходе с корпоративного аккаунта на личный):
Учетные данные и разрешения. Если вы переносите репозиторий между двумя разными аккаунтами Google (например, из рабочего или учебного в личный), убедитесь, что у нового аккаунта есть разрешение на чтение старого репозитория, прежде чем начинать перенос:
- Требование для предоставления доступа. Войдите в свой старый аккаунт редактора кода, нажмите на значок рядом с названием старого репозитория и предоставьте новому аккаунту Google доступ с ролью Читатель.
- После этого вам нужно будет выполнить аутентификацию на локальном компьютере только один раз (используя учетные данные Git нового аккаунта, созданные на шаге 1). У нового аккаунта будут разрешения на клонирование из старого репозитория и отправку данных в новый, что позволит избежать конфликтов учетных данных.
Клонируйте старое хранилище локально, используя стандартные команды 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
После этого перезагрузите вкладку Скрипты в редакторе кода нового аккаунта (или нажмите кнопку ), чтобы увидеть перенесенный репозиторий и историю.