2012-10-26 14 views
6

Mam duże repozytorium git ponad 3 lata, chcę usunąć historię zmian, które były więcej niż rok temu. czy to możliwe? Czy można używać git rebase, ale w jaki sposób?Git usuń historię zatwierdzenia

+0

Git jest przeznaczony do zapisywania zmian. Jaki jest efekt usunięcia historii? –

+0

Moja historia jest zbyt duża, .git dir jest większy niż 400 MB, w każdym klonie muszę pobrać całą tę historię :( – paweb

+0

Możliwy duplikat: [Jak usunąć starą historię z repozytorium git?] (Http: // /stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a-git-repository) –

Odpowiedz

3

Zbadaj czarną magię o nazwie git replace w this article from the Pro Git book, która wykorzystuje Twoje dokładne okoliczności jako jej przykład. Zasadniczo, jeśli znajdziesz punkt w historii, który chcesz działać jako nowy root, możesz go zastąpić zatwierdzeniem, które nie ma rodziców, tak jakby zostało stworzone z powietrza. Możesz nawet przechowywać oryginalne drzewo na jednym komputerze, co ułatwia przywrócenie historii, jeśli będziesz jej potrzebować ponownie.

Należy zauważyć, że problemem z git rebase (i git replace, jeśli o to chodzi) jest to, że chcesz przepisać całe drzewo, w tym gałęzie, aby wszystkie wskazywały na różne zatwierdzenia. Ma to również wpływ na to, że inni członkowie twojego zespołu mogą się scalić ze zmianami, ponieważ wszyscy rodzice mają inne SHA niż wcześniej.

+1

Z tego, co przeczytałem , '' git replace'' nic nie poradzi sobie z problemami zmieniającymi się hashe –

+1

@ Jon To masz rację Restrukturyzowana moja odpowiedź, aby to wyjaśnić –

+1

Świetnie! Byłby to również wielki błąd w git, jeśli można zastąpić całą grupę historii bez żadnych zmian w haszach, ponieważ te skróty kryptograficzne są jednym z powodów używania git. –

Powiązane problemy