Hoe maak je een git pull ongedaan?

Ik wil mijn git pull ongedaan maken vanwege ongewenste commits op de externe oorsprong, maar ik weet niet naar welke revisie ik moet terugzetten.

Hoe kan ik gewoon teruggaan naar de staat voordat ik de git pull op de externe oorsprong deed?


Antwoord 1, autoriteit 100%

Of om het explicieter te maken dan het andere antwoord:

git pull 

oeps?

git reset --keep HEAD@{1}

Versies van git ouder dan 1.7.1 hebben geen --keep. Als je zo’n versie gebruikt, zou je --hardkunnen gebruiken – maar dat is een gevaarlijke operatie omdat alle lokale wijzigingen verloren gaan.


Aan de reageerder

ORIG_HEAD is de vorige staat van HEAD, ingesteld door commando’s die mogelijk gevaarlijk gedrag vertonen, om ze gemakkelijk terug te kunnen zetten. Het is minder nuttig nu Git reflog heeft: HEAD@{1} is ongeveer gelijk aan ORIG_HEAD (HEAD@{1} is altijd de laatste waarde van HEAD, ORIG_HEAD is de laatste waarde van HEAD vóór gevaarlijke operatie)


Antwoord 2, autoriteit 17%

git reflog showzou je de geschiedenis van HEAD moeten laten zien. Je kunt dat gebruiken om erachter te komen waar je was vóór de pull. Dan kun je resetje HEADnaar die commit.


Antwoord 3, autoriteit 9%

Dit werkte voor mij.

git reset --hard ORIG_HEAD 

Een samenvoeging ongedaan maken of verwijderen:

$ git pull                         (1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard                 (2)
$ git pull . topic/branch          (3)
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD       (4)

Afrekenen Dit: hoofd en orighead in git voor meer.


Antwoord 4, Autoriteit 4%

Zoek de <SHA#>voor de commit die je wilt gaan. Je kunt het vinden in Github of door het typen van git logof git reflog showop de opdrachtregel en dan doen
git reset --hard <SHA#>


Antwoord 5

van https: // git-scm. COM / DOCS / GIT-RESET # Documentatie / GIT-RESET.TXT-undoamergeErPullinideadirtyWorkingTree

Maak een fusie ongedaan of trek binnen een vuile werkboom

$ git pull           (1)
Auto-merging nitfol
Merge made by recursive.
 nitfol               |   20 +++++----
 ...
$ git reset --merge ORIG_HEAD      (2)

Zelfs als
Mogelijk hebt u lokale wijzigingen in uw werkboom, u kunt veilig
Zeg git pullAls je weet dat de verandering in de andere tak doet
elkaar niet overlappen.

Na het inspecteren van het resultaat van de samenvoeging, kunt u dat de wijziging vinden
In de andere tak is onbevredigend. Running git reset --hard ORIG_HEAD
Laat je teruggaan naar waar je was, maar het zal weggooien
Uw lokale wijzigingen, die u niet wilt. git reset --mergeHOUDS
uw lokale wijzigingen.

Zie ook https://stackoverflow.com/a/30345382/621690


Antwoord 6

Ook al werken de bovenstaande oplossingen, dit antwoord is voor jou als je de klok wilt terugdraaien in plaats van een git pull ongedaan te maken. Ik bedoel, als je je exacte repo wilt krijgen zoals het was XMinuten terug en voer het commando uit

git reset --hard branchName@{"X Minutes ago"}

Opmerking: voordat u daadwerkelijk doorgaat met het uitvoeren van deze opdracht, probeer deze opdracht alleen als u zeker weet naar welke tijd u terug wilt gaan en dit is over mijn situatie.

Ik zat momenteel in een branch develop, ik moest naar een nieuwe branch afrekenen en een andere branch binnenhalen, laten we zeggen Branch A, maar ik rende per ongeluk
git pull origin Bvoordat je afrekent.

dus om deze wijziging ongedaan te maken heb ik deze opdracht geprobeerd

git reset --hard develop@{"10 Minutes ago"}

als je Windows cmd gebruikt en je krijgt fout: onbekende schakelaar `e

probeer aanhalingstekens zoals deze toe te voegen

git reset --hard 'develop@{"10 Minutes ago"}'


Antwoord 7

om git pull

ongedaan te maken

git reset --hard HEAD^

neemt uw lokale repo terug naar de vorige commit-status.
En als er nieuwe bestanden worden gedownload als gevolg van git pull, worden ze weergegeven als niet-getrackte bestanden, en je kunt ze opschonen met

 git clean -fd

Antwoord 8

Reset de master branch:

git reset --hard origin/master

Other episodes