Ako iz nekog razloga želite obrisati sve dosadašnje commitove u svojem GIT repozitoriju, ovo je “tutorial” za vas. Ovo će stvoriti početnu točku u vašem Git repozitoriju, čuvajući trenutno stanje vašeg projekta (datoteke i sadržaj), ali odbacujući svu prethodnu povijest commita.
Postupak
-
Stvorite novu neovisnu granu::
git checkout --orphan new_old
Ova naredba stvara novu granu nazvanu
new_old
koja nije bazirana na nijednoj postojećoj grani, učinkovito nemajući nikakvu povijest commita. Nakon pokretanja ove naredbe, bit ćete na graninew_old
. -
Pripremite sve promjene::
git add -A
Ova naredba priprema sve promjene u vašem projektu (nove, modificirane i obrisane datoteke). Priprema sve trenutne datoteke vašeg projekta da budu commitane kao novi početni commit na grani
new_old
. -
Commitajte promjene:
git commit -m "Initial commit"
Ovo stvara novi commit na grani
new_old
s porukom “Initial commit”. Ovaj commit će djelovati kao nova početna točka za povijest vašeg projekta. -
Vratite se natrag na glavnu granu:
git checkout main
Vraća vaš radni direktorij natrag na granu
main
. Grana main još uvijek sadrži staru povijest commita u ovoj točki. -
Zamijenite povijest glavne grane:
git reset --hard new_old
Ova naredba resetira granu
main
da se podudara sa stanjem granenew_old
. Sva povijest commita u main zamijenjena je jednim commitom iznew_old
. -
Obrišite privremenu neovisnu granu:
git branch -D new_old
Briše granu
new_old
jer više nije potrebna. Grana main sada sadrži trenutno stanje vašeg projekta s čistom poviješću. -
Prisilno ažuriranje na udaljeni repozitorij:
git push origin main --force
Prisilno ažurira granu
main
na udaljenom repozitoriju. Upozorenje: Ovaj korak prepiše povijest na udaljenom. To je potencijalno destruktivna operacija i može utjecati na suradnike.
Važne Napomene
- Uvijek komunicirajte s timom prije prepisivanja povijesti projekta ako surađujete.
- Dobra je praksa napraviti sigurnosnu kopiju vašeg repozitorija prije izvođenja operacija koje prepisuju povijest.
- Ovaj proces se često koristi za čišćenje repozitorija ili za smanjenje njegove veličine uklanjanjem stare i nepotrebne povijesti commita.