1.6 KiB
Git
Allgemeines
Git arbeitet grob mit drei Bereichen:
- Working Directory → deine aktuellen Dateien (wo du arbeitest)
- Staging Area (Index) → „Warteliste“ für den nächsten Commit
- Repository → gespeicherte Commits (Historie)
Löschen aller auf deleted stehenden Dateien mit einem Rutsch
Wenn Git sagt, Dateien sind „deleted“, dann:
- sie sind im Working Directory gelöscht
- aber noch nicht gestaged
git ls-files --deleted -z | xargs -0 git rm
Unnötige Dateien entfernen (inkl. aus der Historie)
Große Dateien finden
git rev-list --objects --all | sort -k 2 > all-files.txt
git gc && git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -n | tail -20
Alte Branches löschen
Lokale Branches, die nicht mehr gebraucht werden
git branch -d <branch>
Remote-Branches löschen
git push origin --delete <branch>
Git-Objekte bereinigen (lokal)
Wenn man keine History ändern willst, sondern einfach „aufräumen“ will:
git gc --prune=now --aggressive
Einzelne Commits aus den letzten Commits entfernen
z.B die letzten 5 Mit git rebase -i (interaktiv)
Man kann die letzten Commits durchgehen und gezielt entfernen oder ändern git rebase -i HEAD~5
Es öffnet sich ein Editor mit so etwas wie:
pick a1b2c3 Fix typo pick d4e5f6 Add logo pick 123abc Large debug file (REMOVE THIS) pick 789def Update README
Ändere pick → drop oder lösche die Zeile: drop 123abc Large debug file
Nur bei Commits, die nicht bereits gepusht wurden, ist das gefahrlos. Wenn sie bereits gepusht sind, muss man danach git push --force machen.