Freistehendes Kopf Zustand von Design im git existiert und kann normalerweise nicht ausgeschaltet werden. Sie können nur in freistehendem Kopf Zustand erhalten, wenn Sie nach Ihrem Repository klonen, wie diese zum Beispiel
git checkout $specific_commit
etwas tun, wenn Sie an der Spitze des genannten Zweiges sind master
#1 -> #2 -> #3
^
master
^
HEAD
und Sie tun
git checkout HEAD~
das Commit direkt vor was HEAD derzeit zeigt. Dann werden Sie in dem folgenden Zustand am Ende
#1 -> #2 -> #3
^ ^
| master
|
HEAD
Von diesem Punkt, den Sie in frei stehendem Kopf Zustand sind, das heißt HEAD Punkte zu einem bestimmten begehen und nicht an der Sprungmarke. Zuvor zeigte HEAD auf das Branchenlabel master
, welches wiederum auf das spezifische Commit (Astspitze) zeigte. Jetzt, was auch immer Sie commit, werden Sie machen, dass sie auf dem getrennten Zweig sein werden, der kein Zweig-Etikett (d. H. Verweis) hat. Running git branch
wird Ihnen sagen, wenn Sie in distanzierten Kopf Zustand.
$ git branch
* (detached from 60e425a)
master
Hinweis der Stern *
, die Ihrem aktuellen Zweig anzeigt. Wenn Sie jetzt einen neuen Commit machen, wird git repo so aussehen.
#1 -> #2 -> #3
| ^
| master
|
\----> #5
^
HEAD
, wenn Sie jetzt zurück zum Master wechseln, indem git checkout master
dann tun HEAD
schaltet master
und Zweig, der erstellt wurde, wenn Sie #5
erstellt begehen wird nicht mehr jedes Etikett haben, das heißt eine symbolische Referenz #5
zu begehen zu navigieren. Das bedeutet, dass Ihr Commit effektiv verloren geht.
Sie haben also zwei Möglichkeiten.
- Wenn Sie nicht in den Zustand losgelöster Köpfe gelangen wollen, tun Sie einfach nicht
git checkout $specific_commit
. Bleiben Sie immer an der Spitze der gleichnamigen Filiale wie master
. Sie können dies überprüfen, indem Sie git branch
ausführen.
Wenn Sie sich in dem abgelösten Kopf Zustand zu tun finden und vielleicht Sie bereits verpflichtet gemacht, dass Sie nicht wollen, zu „losen“ dann, als Flow oben vorgeschlagen, müssen Sie wie neue Sprungmarke/Referenz schaffen, so
git checkout -b myNewBranch
, die das Repository wie so
#1 -> #2 -> #3
| ^
| master
|
\----> #5
^
myNewBranch
^
HEAD
Dann aussehen wird, wenn Sie Hexe zurück zu master
Sie können immer zurück zum Commit #5
und alle nachfolgenden Commits auf diesem Zweig, indem Sie git checkout myNewBranch
tun.
'git reflog' ist dein Freund. – AD7six
Vermeiden Sie 'git checkout sha1'. hier könnte sha1 HEAD sein, FETCH_HEAD. Und es gibt einige andere Fälle, die zu einem abgelösten HEAD-Zustand führen. Wenn Sie genau wissen, mit welchem Zweig Sie arbeiten, ist es in Ordnung, im abgetrennten HEAD-Zustand zu bleiben. – ElpieKay