Czy istnieje możliwość przywrócenia zatwierdzonego pliku w Git? Po wysłaniu zatwierdzenia do GitHub zdałem sobie sprawę, że jest plik, którego nie chciałem wypchnąć (nie dokończyłem zmian).
Czy istnieje możliwość przywrócenia zatwierdzonego pliku w Git? Po wysłaniu zatwierdzenia do GitHub zdałem sobie sprawę, że jest plik, którego nie chciałem wypchnąć (nie dokończyłem zmian).
Odpowiedzi:
aktualizacja: dodano bezpieczniejszą metodę
sprawdź poprzedni (niezmieniony) stan twojego pliku; zwróć uwagę na podwójną kreskę
git checkout HEAD^ -- /path/to/file
popełnij to:
git commit -am "revert changes on this file, not finished with it yet"
popchnij, bez użycia siły:
git push
wróć do swojej niedokończonej pracy, ponownie wykonaj (3 razy strzałka w górę):
git checkout HEAD^ -- /path/to/file
Aby zmodyfikować ostatnie zatwierdzenie repozytorium HEAD, zaciemniając przypadkowo wypchniętą pracę, jednocześnie potencjalnie wpadając w konflikt z kolegą, który mógł już to zrobić, i który zapuści siwe włosy i straci dużo czasu, próbując pogodzić głowę lokalnego oddziału z centralnym:
Aby usunąć zmianę pliku z ostatniego zatwierdzenia:
aby przywrócić plik do stanu sprzed ostatniego zatwierdzenia, wykonaj:
git checkout HEAD^ /path/to/file
aby zaktualizować ostatnie zatwierdzenie z przywróconym plikiem, wykonaj:
git commit --amend
aby przekazać zaktualizowane zatwierdzenie do repozytorium, wykonaj:
git push -f
Naprawdę rozważ użycie preferowanej metody wspomnianej wcześniej.
git checkout HEAD~2 /path/to/file
? Edycja: Wygląda na to, że chciałem w moim przypadku po prostugit rm /path/to/file
Jeśli chcesz usunąć plik ze zdalnego repozytorium, najpierw usuń go z projektu opcją --cache, a następnie wypchnij:
git rm --cache /path/to/file
git commit -am "Remove file"
git push
(Działa to nawet jeśli plik został dodany do zdalnego repozytorium kilka zatwierdzeń temu). Pamiętaj, aby dodać do .gitignore rozszerzenia plików, których nie chcesz przesyłać.
Możesz przywrócić tylko jeden plik do określonej wersji.
Najpierw możesz sprawdzić, w których zatwierdzeniach plik został zmieniony.
git log path/to/file.txt
Następnie możesz pobrać plik z numerem wersji.
git checkout 3cdc61015724f9965575ba954c8cd4232c8b42e4 /path/to/file.txt
Następnie możesz zatwierdzić i wcisnąć ponownie.
Zresetuj plik do poprawnego stanu, zatwierdź i ponownie wypchnij.
Jeśli jesteś pewien, że nikt inny nie pobrał jeszcze twoich zmian, możesz użyć --amend
podczas zatwierdzania, aby zmodyfikować poprzednie zatwierdzenie (tj. Przepisać historię), a następnie wypchnąć. Myślę, że będziesz musiał użyć tej -f
opcji podczas pchania, aby wymusić pchnięcie.
Pobierz kod skrótu ostatniego zatwierdzenia.
git log
git revert <hash_code_from_git_log>
git push
sprawdź w GHR. możesz dostać wszystko, czego potrzebujesz, mam nadzieję, że to się przyda