Przywracanie skryptu i migracja repozytorium

Jeśli przypadkowo usuniesz skrypt lub folder w repozytorium w edytorze kodu Earth Engine albo musisz przenieść repozytorium na nowe konto, pełna historia zmian jest zachowywana w logach Git na naszych serwerach. Ikona repozytorium w Edytorze kodu przywraca całe repozytorium do poprzedniego stanu, ale sklonowanie repozytorium lokalnie za pomocą standardowych narzędzi wiersza poleceń Git umożliwia selektywne przywracanie poszczególnych skryptów lub folderów bez utraty nowszych zmian w innych skryptach.

Co można odzyskać

Na karcie Skrypty w edytorze kodu Twoja praca jest uporządkowana w ten sposób:users/username/repository:folder/script

  • Skrypty i foldery (można je odzyskać): usunięcie skryptu lub folderu w repozytorium powoduje usunięcie go tylko z ostatniego zatwierdzenia. Ponieważ repozytorium nadal istnieje na earthengine.googlesource.com, możesz je sklonować i przywrócić usunięte pliki z historii zatwierdzeń Git, korzystając z opcji A lub opcji B.
  • Całe repozytoria (nie można ich odzyskać): usunięcie repozytorium (users/username/repository) trwale usuwa repozytorium Git, jego skrypty i historię zatwierdzeń z earthengine.googlesource.com (zwracając "Repository is not found"). Po usunięciu repozytorium nie można go sklonować ani odzyskać.

Najpierw wykonaj wymagania wstępne, a potem wybierz jedną z tych opcji w zależności od zadania:

Wymagania wstępne

Krok 1. Wygeneruj dane logowania Git

Repozytoria Git hostowane przez Google używają bezpiecznego uwierzytelniania za pomocą tokena, dlatego najpierw musisz wygenerować lokalne dane logowania Git:

  1. Otwórz okno incognito lub prywatne w przeglądarce i wejdź na stronę generatora haseł Git:earthengine.googlesource.com/new-password (Uwaga: zaloguj się wyłącznie za pomocą zarejestrowanego konta Google Earth Engine. Jeśli przenosisz repozytorium na nowe konto w ramach opcji C, najpierw udostępnij stare repozytorium na nowym koncie i zaloguj się tutaj za pomocą nowego konta Google).
  2. Skopiuj cały blok wygenerowanych poleceń powłoki widocznych na ekranie.
  3. Otwórz terminal (wiersz poleceń) na komputerze, wklej skopiowane polecenia i je uruchom. Spowoduje to automatyczne skonfigurowanie na Twoim komputerze danych logowania do Git w postaci plików cookie.
  4. Jeśli używasz Gita na komputerze po raz pierwszy, skonfiguruj nazwę autora i adres e-mail, aby Git umożliwiał tworzenie zatwierdzeń:

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

Krok 2. Sklonuj repozytorium (opcje A i B)

Jeśli przenosisz repozytorium między kontami, przejdź do opcji C. Aby przywrócić usunięty skrypt lub folder, sklonuj repozytorium w lokalnym terminalu, zastępując username i repository swoimi danymi Earth Engine (możesz też skopiować dokładne polecenie klonowania, klikając ikonę  obok nazwy repozytorium na karcie Skrypty):

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

Po zakończeniu przejdź do sklonowanego folderu:

cd repository

Opcja A. Przywracanie usuniętego skryptu

Aby odzyskać usunięty plik skryptu (np. MyScript lub MyFolder/MyScript):

  1. Wyświetl historię pliku, aby znaleźć commit usunięcia i commit bezpośrednio go poprzedzający (wymieniony w danych wyjściowych dziennika tuż po nim):

    git log --oneline -- "MyScript"
    
  2. Przywróć do folderu ostatnią wersję, w której plik jeszcze istniał (zastąp <commit_hash> haszem commita przed usunięciem lub użyj <deletion_commit_hash>~1):

    git checkout <commit_hash> -- "MyScript"
    
  3. Zatwierdź i prześlij przywrócony skrypt z powrotem na serwer:

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

Po przesłaniu odśwież w przeglądarce kartę Skrypty w edytorze kodu (lub kliknij przycisk  u góry karty Skrypty), aby zobaczyć przywrócony skrypt.

Opcja B. Przywracanie usuniętego folderu

Aby odzyskać usunięty folder i wszystkie skrypty w nim zawarte (np. MyFolder/):

  1. Sprawdź logi zatwierdzeń Git, aby znaleźć zatwierdzenie usunięcia i zatwierdzenie bezpośrednio poprzedzające je (wymienione w logu bezpośrednio po nim):

    git log --oneline -- "MyFolder/"
    
  2. Przywróć ostatnią wersję, w której folder jeszcze istniał (zastąp <commit_hash> haszem commita przed usunięciem lub użyj <deletion_commit_hash>~1):

    git checkout <commit_hash> -- "MyFolder/"
    
  3. Zatwierdź i prześlij odzyskany folder z powrotem na serwer:

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

Po przesłaniu odśwież w przeglądarce kartę Skrypty w edytorze kodu (lub kliknij przycisk  u góry karty Skrypty), aby zobaczyć przywrócony folder.

Opcja C. Przenoszenie całego repozytorium

Jeśli chcesz przenieść całe repozytorium wraz z pełną historią commitów na nowe konto (np. podczas przechodzenia z konta instytucjonalnego na osobiste):

Dane logowania i uprawnienia: jeśli przenosisz repozytorium między dwoma różnymi kontami Google (np. z konta uniwersyteckiego lub służbowego na konto osobiste), przed rozpoczęciem musisz się upewnić, że nowe konto ma uprawnienia do odczytu starego repozytorium:

  • Wymaganie wstępne dotyczące udostępniania: zaloguj się na stare konto Edytora kodu, kliknij ikonę  obok nazwy starego repozytorium i udostępnij je nowemu adresowi e-mail konta Google, przyznając mu dostęp czytelnika.
  • Dzięki temu musisz uwierzytelnić się na komputerze lokalnym tylko raz (używając danych logowania Git nowego konta wygenerowanych w kroku 1). Nowe konto będzie miało uprawnienia do klonowania ze starego repozytorium i przesyłania do nowego, co pozwoli uniknąć konfliktów poświadczeń.
  1. Sklonuj stare repozytorium lokalnie za pomocą standardowego narzędzia Git:

    git clone https://earthengine.googlesource.com/users/old_username/old_repository
    
  2. Utwórz nowe, puste repozytorium w menu Nowe > Repozytorium na nowym koncie edytora kodu. (Uwaga: przed przesłaniem nie twórz ani nie zapisuj w nowym repozytorium żadnych skryptów ani folderów, ponieważ w przeciwnym razie przesyłanie się nie powiedzie).

  3. Przejdź do lokalnego sklonowanego katalogu:

    cd old_repository
    
  4. Wypchnij całą lokalną historię commitów i skrypty bezpośrednio do nowego, pustego repozytorium Earth Engine:

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

Po przesłaniu odśwież kartę Skrypty w edytorze kodu na nowym koncie (lub kliknij przycisk ), aby zobaczyć przeniesione repozytorium i historię.