Gibt es eine Möglichkeit, eine festgeschriebene Datei in Git zurückzusetzen? Ich habe ein Commit an GitHub gesendet und dann festgestellt, dass es eine Datei gibt, die ich nicht verschieben wollte (ich habe die Änderungen noch nicht abgeschlossen).
Gibt es eine Möglichkeit, eine festgeschriebene Datei in Git zurückzusetzen? Ich habe ein Commit an GitHub gesendet und dann festgestellt, dass es eine Datei gibt, die ich nicht verschieben wollte (ich habe die Änderungen noch nicht abgeschlossen).
Antworten:
Update: Sicherere Methode hinzugefügt
Überprüfen Sie den vorherigen (unveränderten) Status Ihrer Datei. Beachten Sie den doppelten Strich
git checkout HEAD^ -- /path/to/file
begehen Sie es:
git commit -am "revert changes on this file, not finished with it yet"
Schieben Sie es, keine Kraft erforderlich:
git push
Kehren Sie zu Ihrer unvollendeten Arbeit zurück und wiederholen Sie den Vorgang (dreimal Pfeil nach oben):
git checkout HEAD^ -- /path/to/file
Um das letzte Commit des Repository-HEAD zu ändern, verschleiern Sie Ihre versehentlich gedrängte Arbeit, während Sie möglicherweise in einen Konflikt mit Ihrem Kollegen geraten, der es möglicherweise bereits gezogen hat und der graues Haar wachsen lässt und viel Zeit verliert, wenn er versucht, seinen lokalen Zweigstellenleiter zu versöhnen mit dem zentralen:
So entfernen Sie Dateiänderungen aus dem letzten Commit:
Gehen Sie wie folgt vor, um die Datei auf den Status vor dem letzten Festschreiben zurückzusetzen:
git checkout HEAD^ /path/to/file
Gehen Sie wie folgt vor, um das letzte Commit mit der zurückgesetzten Datei zu aktualisieren:
git commit --amend
Um das aktualisierte Commit auf das Repo zu übertragen, gehen Sie wie folgt vor:
git push -f
Erwägen Sie wirklich die Verwendung der zuvor erwähnten bevorzugten Methode.
git checkout HEAD~2 /path/to/file
? Bearbeiten: Sieht so aus, als ob ich in meinem Fall einfach wolltegit rm /path/to/file
Wenn Sie die Datei aus dem Remote-Repo entfernen möchten, entfernen Sie sie zuerst mit der Option --cache aus Ihrem Projekt und drücken Sie sie dann:
git rm --cache /path/to/file
git commit -am "Remove file"
git push
(Dies funktioniert auch, wenn die Datei vor einigen Commits zum Remote-Repo hinzugefügt wurde.) Denken Sie daran, die Dateierweiterungen, die Sie nicht pushen möchten, zu .gitignore hinzuzufügen.
Sie können nur eine Datei auf eine bestimmte Revision zurücksetzen.
Zuerst können Sie überprüfen, bei welchen Commits die Datei geändert wurde.
git log path/to/file.txt
Anschließend können Sie die Datei mit der Versionsnummer auschecken.
git checkout 3cdc61015724f9965575ba954c8cd4232c8b42e4 /path/to/file.txt
Danach können Sie es festschreiben und erneut pushen.
Setzen Sie die Datei in den richtigen Zustand zurück, schreiben Sie sie fest und drücken Sie erneut.
Wenn Sie sicher sind, dass noch niemand Ihre Änderungen abgerufen hat, können Sie --amend
beim Festschreiben das vorherige Festschreiben ändern (dh den Verlauf neu schreiben) und dann drücken. Ich denke, Sie müssen die -f
Option beim Drücken verwenden, um den Druck zu erzwingen.
Holen Sie sich den Hash-Code des letzten Commits.
git log
git revert <hash_code_from_git_log>
git push
Check-out in der GHR. Sie könnten bekommen, was immer Sie brauchen, hoffen, dass dies nützlich ist