Bronboom – ongedaan gemaakte commits ongedaan maken

Ik gebruik Sourcetree voor Windows voor een git-repository en wil een niet-gepushte commit ongedaan maken.

Is dat mogelijk? Als ik “commit terugdraaien” doe, creëert het een tweede commit die de eerste commit terugdraait, maar ik wil helemaal niet dat de eerste commit in mijn source control verschijnt.

Ik zou ook mijn lokale repository kunnen verwijderen en opnieuw kunnen ophalen zonder mijn lokale commit, maar misschien is er een andere manier?


Antwoord 1, autoriteit 100%

  1. Klik met de rechtermuisknop op de commit waarnaar je wilt resetten (niet degene die je wilt verwijderen!)
  2. Selecteer “Reset master naar deze commit”
  3. Selecteer “Zachte” reset.

Een zachte reset zorgt ervoor dat uw lokale wijzigingen behouden blijven.

Bron: https:// antwoorden.atlassian.com/questions/153791/how-should-i-remove-push-commit-from-sourcetree

Bewerken

Over git revert: Dit commando creëert een nieuwe commit die andere commits ongedaan zal maken. bijv. als je een commit hebt die een nieuw bestand toevoegt, kan git revertworden gebruikt om een ​​commit te maken die het nieuwe bestand zal verwijderen.

Over het toepassen van een zachte reset: stel dat je de commits Atot Ehebt (A---B---C---D---E) en je wilt de laatste commit verwijderen (E). Vervolgens kun je een zachte reset uitvoeren om Dte committen. Met een zachte reset wordt commit Everwijderd uit git maar de lokale wijzigingen blijven behouden. Er zijn meer voorbeelden in de git reset-documentatie.


Antwoord 2, autoriteit 14%

Als je de logboekinvoer selecteert waarnaar je wilt terugkeren, kun je klikken op “Reset to this commit”. Gebruik deze optie alleen als je de reverse commit-wijzigingen niet hebt doorgevoerd. Als u zich zorgen maakt dat u de wijzigingen kwijtraakt, kunt u de zachte modus gebruiken die een reeks niet-vastgelegde wijzigingen achterlaat (wat u zojuist hebt gewijzigd). Als u de gemengde versie gebruikt, wordt de werkkopie opnieuw ingesteld, maar blijven deze wijzigingen behouden, en een harde zal de wijzigingen gewoon volledig verwijderen. Hier zijn enkele screenshots:

enter afbeelding beschrijving hier


Antwoord 3, autoriteit 2%

Als je een commit wilt verwijderen, kun je dit doen als onderdeel van een interactieve rebase.
Maar doe het met de nodige voorzichtigheid, zodat je je repo niet verpest.

In Sourcetree:

  1. Klik met de rechtermuisknop op een commit die ouder is dan degene die je wilt verwijderen, en kies “Kinderen van xxxx interactief opnieuw baseren…“. Degene waar je op klikt, zal je “basis” zijn en je kunt wijzigingen aanbrengen in elke commit die daarna is gemaakt.

Screenshot-1

  1. Selecteer in het nieuwe venster de commit die je weg wilt hebben, en druk op de “Delete“-knop onderaan, of klik met de rechtermuisknop op de commit en klik op “Delete commit“.
  2. Lijstitem
  3. Klik op “OK” (of op “Annuleren” als u wilt afbreken).

Bekijk deze Atlassian blogpostvoor meer informatie over interactief rebasen in Sourcetree.


Antwoord 4

Als je op een andere branch zit, moet je eerst “aanvinken bij deze commit” voor de commit die je wilt verwijderen, en pas dan “reset de huidige branch naar deze commit” door de vorige wright commit te kiezen, zal werken.

Other episodes