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 --hard
kunnen gebruiken – maar dat is een gevaarlijke operatie omdat alle lokale wijzigingen verloren gaan.
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 show
zou 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 reset
je HEAD
naar 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 log
of git reflog show
op de opdrachtregel en dan doen
git reset --hard <SHA#>
Antwoord 5
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
Zeggit pull
Als 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. Runninggit reset --hard ORIG_HEAD
Laat je teruggaan naar waar je was, maar het zal weggooien
Uw lokale wijzigingen, die u niet wilt.git reset --merge
HOUDS
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 X
Minuten 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 B
voordat 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