2015-06-17 21 views
6

Zrobiłem coś bardzo głupiego. Wprowadziłem klątwę w moim kodzie i pchnąłem kod do głównego oddziału. Popchnąłem jeszcze kilka razy, aby ludzie nie wyciągali złych rzeczy, ale wciąż mogę znaleźć curseword w historii commitów.Git - Usuń commit z historii

Czy istnieje sposób usunięcia zatwierdzenia z historii? Edycja: Nie chcę dodawać pliku do gitignore, ponieważ potrzebujemy tego pliku.

Dzięki

+0

Oto główna sugestia: zawsze sprawdzaj swoje zatwierdzenia jeden po drugim, zanim je przepchniesz. ZAWSZE. – ckruczek

+0

możliwy duplikat [Usuń wrażliwe pliki i ich zatwierdzenia z historii Git] (http: // stackoverflow.com/questions/872565/remove-sensitive-files-and-their-commits-from-git-history) –

Odpowiedz

0

Nie, Git tylko dodać zmiany w historii. Aby uzyskać więcej informacji, przeczytaj artykuł .

+4

To nie jest całkowicie poprawne. Możesz usunąć zatwierdzenia, ale spowoduje to przepisanie historii. – ckruczek

5

Po przejściu na repozytorium, naprawdę nie chcesz zmieniać historii. Jeśli jednak jesteś absolutnie pewna,, której nikt nie pobrał/nie pobrał z repozytorium od czasu twojego popełnionego błędu, masz 2 opcje.

Jeśli chcesz całkowicie usunąć commit (i każde zatwierdzenie, które nastąpiło później), wykonaj git reset --hard ABC~ (przy założeniu, że wartość skrótu zatwierdzenia to ABC). Następnie wykonaj git push -f.

Jeśli chcesz edytować to zatwierdzenie i zachować zatwierdzenia, które nastąpiły po nim, wykonaj git rebase -i ABC~. Spowoduje to otwarcie twojego edytora, pokazując listę twoich zatwierdzeń, zaczynając od obraźliwego. Zmień flagę z "wybierz" na "e", zapisz plik i zamknij edytor. Następnie wprowadź niezbędne zmiany w plikach i wykonaj git commit -a --amend, a następnie wykonaj git rebase --continue. Śledź to wszystko dzięki git push -f.

Chcę powtórzyć, te opcje są dostępne tylko dla Ciebie, jeśli nikt nie zrobił wykonał operacji przeciągania lub pobierania, która zawiera Twoje nieprawidłowe zatwierdzenie. Jeśli tak, wykonanie tych kroków tylko pogorszy sprawę.

1

Jeśli to tylko na lokalnym komputerze (lub nikt wyrejestrowany zmiany):

1) zastosowanie:

git log

znaleźć commit chcesz usunąć . Skopiuj hash (długa sqeuence jak: e8348ebe553102018c ...).

2) Zastosowanie:

git rebase -i your_commit_hash_code_comes_here

Wystarczy wyjąć popełnić nie trzeba i zapisz plik.

Interaktywny repozytorium git pozwala także naprawić zepsute zatwierdzenie - nie trzeba go usuwać.

Jeśli wprowadziłeś zmiany na serwerze lub ktoś już wprowadził zmiany - nigdy nie zmieniaj historii - może to spowodować poważne problemy dla Twojego zespołu.