Cofnij 'git push -f' z komputera, który nie ma sklonowanej historii

0

Więc historia. Mój dysk twardy zginął na komputerze A. Prawie cała moja praca została już zepchnięta do GitHub i wszystko było na tym froncie, zapisz jedno repozytorium. Więc, zdając sobie z tego sprawę, dowiedziałem się: „hej, fajnie, właściwie właśnie wysłałem do Guya Guyersona plik tar ostatnich zmian.” Dostaję więc plik tar, a potem robię coś głupiego / pokazuję, jak dużo jest GobHub noob. Zamiast klonować repozytorium, a następnie dodawać zaktualizowane pliki, a następnie naciskać, myślę sobie: powinienem być w stanie po prostu nacisnąć te pliki, bez problemu. Więc git init, dodaj pilota, a następnie naciśnij, ale to nie działa ... ponieważ scalenia są dziwne. Wiem, że połączenia są złe, więc postanawiam zmusić te pliki do aktualizacji i wciśnięcia -f. Ponieważ jednak jest to nowy katalog .git, wypycha wszystko i tracę całą historię zatwierdzania, a wszystkie pliki, które nie znajdowały się w archiwum, zniknęły.

Czy mimo to wracamy do tego, biorąc pod uwagę, że obecna wersja lokalna nie ma tam pamięci o każdym wcześniejszym zatwierdzeniu? Mam początek skrótu, który nadpisał, ale pilot również nie ma pamięci tego zatwierdzenia.

Myślę, że awaria dysku twardego mogła spowodować kolejną ofiarę, ponieważ moja frustracja się skończyła i chciałem po prostu przesłać aktualizacje, podczas gdy wciąż miałem je na tej starszej maszynie.

Dzięki, Zach

Zach
źródło
W jakim środowisku pracujesz? Czy to Eclipse ??? Java ???
Dale
Niestety nie rozumiem, dlaczego środowisko ma znaczenie, ale pracuję z terminala w Linuksie (choć oryginalna maszyna to Mac). Kod był oparty na C ++. Na szczęście jedynym uczestnikiem projektu jest ja, więc nie jest to duża strata poza godzinami pracy, które wkładałem w makra, które straciłem teraz.
Zach
Oto dlaczego może to mieć znaczenie. Coś takiego mi się przytrafiło w Javie za pomocą Eclipse. W rzeczywistości usunąłem pliki, które nie zostały zapisane. Pamiętaj, że znałem plik, który został usunięty i gdzie był. Eclipse zachowuje historię tego pliku, nawet jeśli został usunięty. To, co zrobiłem, to odtworzenie pliku jako pustego pliku, w którym istniał wcześniej, a następnie kliknięcie prawym przyciskiem myszy i przeglądanie historii do tego, co w niej było. Potem przywróciłem go z historii Eclipse. Dlatego środowisko może mieć znaczenie.
Dale

Odpowiedzi:

0

Wersja online GitHub prowadzi rejestr tych starych zatwierdzeń, po prostu nie wiedziałem, jak do nich uzyskać dostęp. Dla wszystkich przyszłych czytelników: jeśli masz identyfikator zatwierdzenia, który przypadkowo nadpisałeś, możesz uzyskać do niego dostęp w ten sposób:

https://github.com/userName/repoName/tree/commitNum

Następnie możesz użyć listy rozwijanej Drzewo / gałąź, aby utworzyć nową gałąź z tego zatwierdzenia. To może być następnie sklonowane do lokalnego katalogu, a następnie można połączyć, itp. Stamtąd.

Zach
źródło