2014-10-26 11 views
23
* [971f835] (HEAD, original_idea) Now working here. Some comment 9 
* [692b673] Some comment 8 
* [3ebff62] Reverted to original idea. Some comment 7 
| * [72ea01d] (master) Decided it wasn't worth the effort. Some comment 6 
| * [985c1ad] Some comment 5 
| * [4d7d491] Some comment 4 
| * [0c697bb] Branched to try an idea. Some comment 3 
|/ 
* [7280b1f] Some comment 2 
* [5c2c6d0] Some comment 1 
* [bc7aac6] Initial commit 

Also, master wurde zurückgelassen. Nicht sicher, wie das passiert ist. Sobald ich entschied, dass ich mit dem Zweig fertig war, der nicht funktionierte, überprüfte ich [7280b1f] und fuhr von dort fort.Wie Master zu HEAD verschieben?

Wie behebe ich das? Ich das der berüchtigte "distanzierte Kopf" Problem?

Muss master mit HEAD für optimale Gesundheit des Repo ausgerichtet werden?

Mein Workflow ist super einfach. Dies verwaltet nur eine einzelne Textdatei. In der überwiegenden Mehrzahl der Fälle ist es:

git add . 
git commit -am "Some comment" 

Und das ist es.

Ich entschied mich, eine Idee auszuprobieren und eine Filiale zu erstellen. Wenn es nicht geklappt hat, habe ich die Wurzel dieses Zweigs ausgecheckt und bin wieder zur Routine git add/commit zurückgekehrt.

+0

möglich Duplikat [Git: Wie kann ich frei stehende HEAD mit Master/Herkunft versöhnen] (http://stackoverflow.com/questions/5772192/git-how-can-i-reconcile-detached-head -with-master-origin) –

Antwort

8

Ist das der berüchtigte "losgelöste Kopf" Problem?

Nein, HEAD am Zweig zeigt original_idea

hat Master mit HEAD für eine optimale Gesundheit des Repo ausgerichtet werden? Keine

, Master ist nur ein herkömmlicher Name, in der Regel genommen eine Verzweigung zu sein, die leicht erstellbar ist und hoffentlich eine Arbeitsmomentaufnahme.

Wie behebe ich das?

Wenn Sie Master auf ein anderes Repository geschoben haben, müssen Sie Sie von original_idea in Master wechselt fusionieren:

git checkout master 
git merge original_idea 

Beachten Sie, dass, wenn es irgendwelche in Konflikt stehenden Änderungen‘ Ich muss sie lösen.

Wenn Sie noch nicht Master geschoben auf ein anderes Repository, könnten Sie Master und neu erstellen aus original_idea löschen. WARNUNG: Jeder, der an Master arbeitete, muss seinen Master Zweig zurücksetzen.

$ git checkout master 
Switched to branch 'master' 

$ git checkout -b experiment_1 
Switched to a new branch 'experiment_1' 

# Here we are going to delete master. Should be safe, since experiment_1 
# was created from this point on the previous command 

$ git branch -d master 
Deleted branch master (was 72ea01d). 

$ git checkout original_idea 
Switched to branch 'original_idea' 

# Now that we checked out the branch HEAD is pointing to, we can recreate master 

$ git checkout -b master 
Switched to a new branch 'master' 
+0

Könnte ich Sie bitten, einen weiteren Fall zu decken? Verschieben Sie 'master' in' HEAD', während Sie den Zweig mit dem Namen 'master' beibehalten, indem Sie ihn zuerst' experiment_1' umbenennen. Mit anderen Worten, die Struktur ändert sich überhaupt nicht, Etiketten bewegen sich. Vielen Dank! –

+0

Welche Commit in Ihrem Diagramm möchten Sie die Spitze von * Master * sein? –

+0

'72ea01d', wo 'master' gerade jetzt ist, würde' experiment_1' genannt werden. Dann würde "Master" zu "HEAD" wechseln, "971f835". Vielen Dank! Ich arbeite daran, dies durch ein paar Online-Tutorials besser zu verstehen. –

26

Wenn git branch zeigt, dass Ihr aktueller Zweig original_idea ist, wäre das kein detached HEAD situation.

Aber in jedem Fall, wenn Sie Ihren Master Ihre "-Strom commit" zu reflektieren (die what HEAD means in Git ist):

git branch -f master HEAD 
git checkout master 

Sie würden andere Alternativen in "How to I “move” my commits from “no branch” to an actual branch?" finden.

Das Problem dabei ist, dass es den gesamten Zweig, der derzeit auf Master endet, verschwinden lässt.

Dann alles, was Sie tun müssen, ist:

  • stellen Sie sicher, HEAD wird von einem Zweig verwiesen (wie original_idea auf dem Schema)
  • rebase diesen Zweig an der Spitze des Kapitäns:

Das würde bedeuten:

git checkout original_idea 
git rebase master 
git checkout master 
git merge original_idea 
+0

Das Problem dabei ist, dass der gesamte Zweig, der gerade auf "Master" endet, verschwindet. Fehle ich etwas? –

+0

@ martins Ich habe die Antwort bearbeitet. – VonC

+0

Was bedeutet original_idea hier? Ist es der Kopf oder der Ursprung/Master – prasanthMurugan

Verwandte Themen