Nun, ich für einen denke, dass die Nachricht über "Erstellen eines abgetrennten HEAD" ein wenig irreführend ist, weil Sie nicht erstellen können. Was passiert ist, dass git kann Filialen oder Revisionen (vergessen wir über Tags, um die Dinge nicht komplizierter zu machen). Wenn Sie einen lokalen-Zweig auschecken, weiß git, dass beim Erstellen des Commits die neue Revision erstellt und dann der lokale Zweigpunkt auf diese gerade erstellte Revision gesetzt werden muss. Aber wenn Sie eine "Revision" anhand ihrer ID auschecken, wie in dem von Ihnen geposteten Beispiel (oder einem Remote-Zweig, aus Sicht des lokalen Repositorys ist dies die gleiche Situation), dann gibt es keine local Zweig, der auf die Revision verweist (deshalb heißt es abgetrennte HEAD). Für Git macht es keinen Unterschied. Es ist nur eine Revision, die Sie zum Auschecken entweder mit der Frage nach einem lokalen Zweig, einem Remote-Zweig oder einer Revision angefordert haben. Aber für Sie macht es einen großen Unterschied, denn wenn Sie an einem abgetrennten HEAD dann arbeiten, wenn Sie beschließen, zu begehen, git wird keine lokale Verzweigung darauf zeigen. Es wird einfach die Revision erstellen, HEAD darauf hinweisen und das war's. Wenn Sie in diesem Moment beispielsweise zu einem anderen Zweig oder einer anderen Revision ausgecheckt haben und keine lokale Verzweigung auf die gerade erstellte Revision in einem gelöschten HEAD-Zustand hatte, dann haben Sie die Revision verloren (naja ... Sie können immer verwenden git reflog, um es zurück zu bekommen, aber Sie bekommen den Punkt, richtig?). Deshalb sollten Sie git warnt, wenn Sie anfangen zu arbeiten auf einem abgelöst HEAD:
$ git checkout HEAD~2
Note: checking out 'HEAD~2'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
Beachten Sie, wie es Ihnen sagt, dass Sie, indem Sie git checkout -b new-Zweig-Name einen lokalen Zweig an einer beliebigen Stelle anlegen
Mögliche Duplikate von [Fix ein Git gelöster Kopf?] (Http://stackoverflow.com/questions/10228760/fix-a-git-detached-head) – Stony
@Stony, brauche ich keine Hilfe mit a abgetrennter Kopf. Ich versuche herauszufinden, warum Bitbucket mir vorschlägt, einen abgetrennten Kopf zu erstellen, um einen Zweig mit dem Master zu synchronisieren. Für mich ergibt das eindeutig keinen Sinn. – stz184
Wie bezieht sich diese Verpflichtung auf Ihre Zweigstelle? – ams