Jestem bardzo nowy w git i zastanawiałem się, czy coś takiego jest możliwe?
>git log --pretty=oneline --abbrev-commit
2f05aba Added new feature
3371cec Fixed screw up <-- I want to remove this
daed25c Screw up <-- and remove this.
e2b2a84 First. So it's like they never happend.
czy to możliwe?
Jeśli naprawdę chcesz je usunąć (wymazując je z historii, nigdy więcej ich nie widać), możesz
uruchom rebase:
a następnie po prostu usuń (lub zakomentuj) wiersze odpowiadające zatwierdzeniom, które chcesz usunąć, na przykład:
źródło
git push origin HEAD --force
git revert
. Co, kiedy o tym myślisz, jest rozsądne, ponieważ gdybyś wyciągnął kod kogoś innego, nie chciałbyś, aby mógł on usunąć twoje stare zmiany bez jakiejś historii, prawda?d
lubdrop
jest poleceniem usunięcia zatwierdzeń z historii.Aby całkowicie usunąć zmiany, jest teraz nowa opcja
drop
dla rebase interaktywnych git. Pierwszy bieg:Następnie zastępuje
pick
siędrop
dla zatwierdzenia (y), które spadły:To działało w Fedorze z następującą wersją:
źródło
Squash jest przydatny, gdy chcesz wygenerować listę połączonych zatwierdzeń pod jednym hashem, ale jeśli chcesz wziąć trzy oddzielne zatwierdzenia i uzyskać ostateczne wyjście, które wygląda tak, jakby było to pojedyncze zatwierdzenie, polecam
fixup
git rebase -i HEAD~4
Więcej informacji można znaleźć na liście poleceń w interaktywnym interfejsie użytkownika rebase.
źródło