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ń zearthengine.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:
- Opcja A. Przywracanie usuniętego skryptu
- Opcja B. Przywracanie usuniętego folderu
- Opcja C. Przenoszenie całego repozytorium
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:
- 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).
- Skopiuj cały blok wygenerowanych poleceń powłoki widocznych na ekranie.
- 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.
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):
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"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"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/):
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/"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/"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ń.
Sklonuj stare repozytorium lokalnie za pomocą standardowego narzędzia Git:
git clone https://earthengine.googlesource.com/users/old_username/old_repositoryUtwó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).
Przejdź do lokalnego sklonowanego katalogu:
cd old_repositoryWypchnij 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ę.