2016-01-11 6 views
7

Ich weiß, wie man Zweig mit Master synchronisiert. Ich mache das so:Verzweigen Sie manuell, wenn Bitbucket fehlschlägt

git checkout target-branch 
git merge master 
# resolve conflicts if any and commit 
git push 

Ich versuche es, herauszufinden, was BitBucket mich schlägt, wenn die automatische Synchronisierung aufgrund von Konflikten gescheitert. BitBucket schlägt mich:

git checkout 326907c583f7 
# Note: This will create a detached head! 
git merge remotes/origin/master 

Was ist der Punkt, frei stehenden Kopf zu schaffen? Ich mache keinen Sinn für mich. Ist es ein Fehler auf Bitbucket Seite oder mir fehlt etwas?

+0

Mögliche Duplikate von [Fix ein Git gelöster Kopf?] (Http://stackoverflow.com/questions/10228760/fix-a-git-detached-head) – Stony

+2

@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

+0

Wie bezieht sich diese Verpflichtung auf Ihre Zweigstelle? – ams

Antwort

0

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

Verwandte Themen