585 Stimmen

Wie macht man eine erste Git-Übertragung rückgängig?

Ich übertrage zum ersten Mal in ein Git-Repository; dann bereue ich die Übertragung und möchte sie rückgängig machen. Ich versuche

# git reset --hard HEAD~1

Ich erhalte diese Meldung:

fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.

Dieser Commit ist der erste Commit des Repositorys. Gibt es eine Idee, wie man den ersten Commit von Git rückgängig machen kann?

7voto

edward Punkte 142

Ich werde das einbringen, was bei mir letztendlich funktioniert hat. Ich musste die ursprüngliche Übergabe eines Repositorys entfernen, da die unter Quarantäne gestellten Daten verlegt worden waren; die Übergabe war bereits übertragen worden.

Vergewissern Sie sich, dass Sie sich derzeit in der richtigen Niederlassung befinden.

git checkout master

git update-ref -d HEAD

git commit -m "Initial commit

git push -u origin master

Damit konnte das Problem behoben werden.

Wichtig

Dies geschah in einem internen Repository, das nicht öffentlich zugänglich war. Wenn Ihr Repository öffentlich zugänglich war, gehen Sie bitte davon aus, dass alles, was Sie rückgängig machen müssen, bereits von jemand anderem heruntergenommen wurde.

4voto

Richard Punkte 683

Ich frage mich, warum "amend" nicht vorgeschlagen wird und von @damkrat durchgestrichen wurde, denn amend scheint mir genau der richtige Weg zu sein, um das zugrundeliegende Problem des Fixens des falschen Commits am effizientesten zu lösen, da es keinen Zweck hat, kein erstes Commit zu haben. Wie einige betonten, sollte man den "öffentlichen" Zweig wie master nur ändern, wenn niemand dein Repository geklont hat...

git add <your different stuff>
git commit --amend --author="author name <author.name@email.com>"-m "new message"

4voto

stevec Punkte 25346

Für mich:

git update-ref -d HEAD
git rm --cached . -r

Die erste Zeile lautete wie von CB Bailey vorgeschlagen (ich bin mir nicht sicher, warum die zweite Zeile notwendig war, aber git hat die Dateien nicht freigegeben, bevor ich das getan habe - ich konnte das feststellen, indem ich git status vor und nach der zweiten Zeile oben)

1voto

abdallah Nofal Punkte 887

Um die ursprüngliche Übertragung rückgängig zu machen, müssten Sie dies technisch gesehen tun:

git revert HEAD

Da dies aber einen neuen Commit aufzeichnet, der die Auswirkungen des letzten Commits rückgängig macht, könnten Sie auch einfach selbst einen neuen Commit machen, der die Probleme behebt, die durch Ihren ersten Commit eingeführt wurden. Auf diese Weise behalten Sie Ihren ersten Commit (d.h. Ihre Historie bleibt unverändert.), was Sie vielleicht tun wollen (besonders wenn Sie z.B. bereits in ein gemeinsames Repository gepusht haben). Andernfalls würden Sie es vielleicht vorziehen, einfach neu zu beginnen. D.h., das Repository löschen und ein neues erstellen .

0voto

damkrat Punkte 337

git reset --hard Änderungen vornehmen, dann

~~git add -A git commit --amend --no-edit

ou

git add -A
git commit --amend -m "commit_message"

und dann

git push origin master --force~~ 

--force wird den Commit, den Sie im ersten Schritt zurückgesetzt haben, neu schreiben.

Tun Sie das nicht, denn Sie sind dabei, gegen die ganze Idee von VCS-Systemen und insbesondere Git zu verstoßen. Die einzige gute Methode ist, einen neuen Zweig zu erstellen und nicht benötigte Zweige zu löschen. Siehe git help branch zur Information.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X