Sokan azt gondolják, hogy a git history átírása egyben azt is jelenti, hogy töröljük a régi history-t és felülírjuk az újjal és elvesznek dolgok. Azonban ez nem így van! A git megőriz minden információt és szükség esetén visszaállíthatók belőle a régi commit-ok.
Tehát a fenti példám az rm -f
vs git push -f
annyiban elvérzik, hogy míg az előbbi esetben (fájl rendszertől függően) tényleg elvesznek dolgok és nem állíthatók vissza, addig a git esetében megmaradnak a törölt elemek is, csak nem látszanak, és később visszaállíthatók.
Ha ilyen esettel szembesülünk, akkor használjuk a git reflog
utasítást, amivel láthatóvá válnak a szükséges információk.
Egy-két példa a használatára.