2011-11-01 22 views
5

Niestety, przypadkowo sprawdziliśmy duży plik binarny jakiś czas temu i do dzisiaj nikt tego nie zauważył. Teraz chcę zrezygnować z tego zatwierdzenia i mieć pozostałą historię taką, jaka jest. Wiem o zastrzeżeniach zmieniających się historii, ale w tym przypadku nie mogę tego uniknąć.Upuść stare zatwierdzenie: `git rebase` powoduje konflikty scalania

Próbowałem osiągnąć to przez ~ 1 h, ale nie udało mi się go uzyskać. Najlepszą komendą, jaką znalazłem, jest

git rebase --interactive --preserve-merges $(EVIL_COMMIT)^ 
oraz w edytorze skomentowanie pierwszego zatwierdzenia, które jest złe.

Niestety git rebase zatrzymuje się przy scalaniu i monituje o ręczne rozwiązywanie konfliktów scalania. The evil commit dodaje tylko przykładowe pliki, które nasze oprogramowanie będzie obliczać do celów testowych. Zatem ich nie powinno być żadnego konfliktu z przykładowymi plikami, których właśnie brakuje.

  1. Nie rozumiem, skąd pochodzą konflikty seryjne. Ktoś może wyjaśnić?
  2. Jak rozwiązać ten problem?

Spędziłem dużo czasu w wyszukiwarce Google i SO. Niektóre wątki dotyczą podobnego tematu, ale albo syntax used is not available w dzisiejszej wersji Git już nie działa, albo nie działa dla mnie (opisałem tylko jedną metodę powyżej, ponieważ jest to najłatwiejsze podejście).

+0

możliwe duplikat [Jak usunąć/usunąć plik z dużą popełnić historia w repozytorium Git?] (http://stackoverflow.com/questions/2100907/how-to-remove-delete-a-large-file-from-commit-history-in-git-repository) –

Odpowiedz

6

pójdę z filter-branch:

git filter-branch --prune-empty --index-filter ' 
    git rm --cached --ignore-unmatch path/to/file 
' --all 
+0

To tylko usuwa plik 'ścieżka/do/plik' ze wszystkich wersji, prawda? O ile rozumiem, nie usuwa ono zatwierdzenia, które pozostanie puste po usunięciu plików binarnych (w rzeczywistości jest ich 4). –

+2

dodaj '--prune-empty' do polecenia gałęzi filtru. –

+1

Myślę, że masz na myśli 'HEAD' zamiast' $ (EVIL_COMMIT)^'w tej odpowiedzi - w przeciwnym razie filtrowałby tylko zatwierdzenia do tego przed wprowadzeniem dużego pliku. –

Powiązane problemy