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_oldOva naredba stvara novu granu nazvanu
new_oldkoja 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 -AOva 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_olds 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 mainVrać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_oldOva naredba resetira granu
mainda 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_oldBriše granu
new_oldjer 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 --forcePrisilno ažurira granu
mainna 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.