Ich habe mein Projekt gemacht, als ich irgendwann entdeckte, dass eine Sache nicht mehr funktionierte. Ich musste den Status meines Codes nachschlagen, wenn er richtig funktionierte, also habe ich mich entschieden, git checkout zu verwenden (weil ich etwas auschecken wollte). Und das habe ich getan
git checkout SHA
Ein paar Mal, während ich zu einem Punkt zurückkehre, von dem aus ich nicht zu HEAD gehen kann, lautet die Ausgabe wie folgt:
git checkout SHA-HEAD
error: Your local changes to the following files would be overwritten by checkout:
[list of files]
Please, commit your changes or stash them before you can switch branches.
Aborting
Ich bin mir ziemlich sicher, dass ich nichts geändert habe. Der Befehl
git checkout master
gibt die gleiche Ausgabe.
Gibt es einen Weg zurück zu HEAD?
Was ist der sichere Weg, Verlaufs-Commits zu “überspringen”?
Du kannst stash
(Speichern Sie die Änderungen an einem temporären Ort) und dann zurück zu master
Filialleiter.
$ git add .
$ git stash
$ git checkout master
Beachten Sie, dass einige Sites den Namen des Standardzweigs von „master“ in „main“ geändert haben, sodass Sie ihn möglicherweise verwenden müssen git checkout main
stattdessen.
Überspringen von Commits hin und her:
-
Gehen Sie zu einem bestimmten commit-sha
.
$ git checkout <commit-sha>
-
Wenn Sie hier nicht festgeschriebene Änderungen haben, können Sie in einen neuen Zweig auschecken | Hinzufügen | Bestätigen | Schieben Sie den aktuellen Zweig zur Fernbedienung.
# checkout a new branch, add, commit, push
$ git checkout -b <branch-name>
$ git add .
$ git commit -m 'Commit message'
$ git push origin HEAD # push the current branch to remote
$ git checkout master # back to master branch now
-
Wenn Sie Änderungen in dem spezifischen Commit haben und die Änderungen nicht behalten möchten, können Sie dies tun stash
oder reset
dann zur Kasse gehen master
(oder jede andere Filiale).
# stash
$ git add -A
$ git stash
$ git checkout master
# reset
$ git reset --hard HEAD
$ git checkout master
-
Wenn Sie nach dem Auschecken eines bestimmten Commit keine nicht festgeschriebenen Änderungen haben, kehren Sie einfach zu zurück master
oder other
Zweig.
$ git status # see the changes
$ git checkout master
# or, shortcut
$ git checkout - # back to the previous state
Kurze Antwort
git reset --hard
git checkout HEAD
Dadurch werden alle (unerwünschten) Änderungen entfernt und Sie gelangen zurück zu dem Zweig HEAD, von dem Sie gekommen sind.
Wenn Sie diese Änderungen nicht beibehalten möchten
git clean -f
reinigt alle nicht nachverfolgten Dateien. Dann Kasse zum Meister– gmuraleekrishna
7. Februar 2017 um 5:26 Uhr
Das
error: ...
Nachricht bedeutet, dass Sie – oder etwas, das Sie getan haben, vielleicht indirekt – tat die Dateien ändern. Sie können Git anweisen, diese Änderungen zu verwerfen oder zu überschreiben oder zu verwendengit status
und/odergit diff
um zu sehen, was sich genau geändert hat. Es könnte so einfach sein wie eine Art Zeilenende-Änderung oder ein Befehl, der im Hintergrund läuft und in eine Datei schreibt. (Nebenbei: “Gehe zurück zu HEAD” macht in Git keinen Sinn, da du es bist stets Auf den Kopf:HEAD
bedeutet wörtlich “aktueller Commit”. Du kannst Rückgeld HEAD, danach bist du immer noch auf HEAD, nur einem anderen HEAD. Das ist … schwer zu formulieren. 🙂 )– Torek
7. Februar 2017 um 7:15 Uhr
Git ist vollgepackt mit Mechanismen, also hier sind zwei:
git reset --hard HEAD
bedeutet “den Index und den Arbeitsbaum zurücksetzen, damit sie mit HEAD übereinstimmen”, dh Änderungen verwerfen. Oder:git checkout -f master
bedeutet “Kopf ändern zu seinmaster
auch wenn das bedeutet, Arbeit wegzuwerfen:-f
bedeutet “Kraft”.– Torek
7. Februar 2017 um 7:18 Uhr