Lokale commits weggooien in Git

Door wat slechte cherry-picking, ligt mijn lokale Git repository momenteel vijf commits voor op de origin, en niet in een goede staat. Ik wil van al deze commits af en opnieuw beginnen.

Uiteraard zou het verwijderen van mijn werkmap en opnieuw klonen het doen, maar alles opnieuw downloaden van GitHub lijkt overkill, en geen goed gebruik van mijn tijd.

Misschien is git revert wat ik nodig heb, maar ik wil niet eindigen met 10 commits vooruit op de oorsprong (of zelfs zes), zelfs als het de code zelf terugbrengt naar de juiste staat. Ik wil gewoon doen alsof het laatste half uur nooit gebeurd is.

Is er een eenvoudig commando dat dit kan doen? Het lijkt een voor de hand liggende toepassing, maar ik kan er geen voorbeelden van vinden.


Merk op dat deze vraag specifiek gaat over commits, niet over:

  • ongevolgde bestanden
  • onge-stagede wijzigingen
  • ge-staged, maar uncommitted wijzigingen
Oplossing

Als je overtollige commits alleen voor jou zichtbaar zijn, kun je gewoon git reset --hard origin/ om terug te gaan naar waar de oorsprong is. Dit zal de status van het archief terugzetten naar de vorige commit, en het zal alle lokale wijzigingen verwijderen.

Het doen van een git revert maakt nieuwe commits om oude commits te verwijderen op een manier die iedereen zijn geschiedenis gezond houdt.

Commentaren (11)

Verwijder gewoon je lokale master branch en maak hem opnieuw aan zoals dit:

git branch -D master
git checkout origin/master -b master
Commentaren (8)

Probeer het:

git reset --hard 

om je hoofd terug te zetten naar waar je wilt zijn. Gebruik gitk om te zien bij welke commit je wilt zijn. Je kunt reset ook binnen gitk doen.

Commentaren (2)