2014-10-26 21 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 

Został pozostawiony jako master. Nie wiem, jak to się stało. Kiedy już zdecydowałem, że skończyłem z niedziałającym oddziału, sprawdziłem, czy nie było tam [7280b1f] i kontynuowałem.Jak przenieść master do HEAD?

Jak to naprawić? Czy to niesławny problem "odłączonej głowy"?

Czy master musi być wyrównany z HEAD dla optymalnego stanu zdrowia repo?

Przepływ pracy jest bardzo prosty. To tylko zarządzanie pojedynczym plikiem tekstowym. W ogromnej większości przypadków jest to:

git add . 
git commit -am "Some comment" 

I to wszystko.

Postanowiłem spróbować pomysłu i stworzyłem oddział. Kiedy się nie udało, sprawdziłem katalog główny tej gałęzi i powróciłem do rutyny git add/commit.

+0

możliwe duplikat [Git: Jak mogę pogodzić wolnostojący głowa z master/pochodzenia] (http://stackoverflow.com/questions/5772192/git-how-can-i-reconcile-detached-head -with-master-origin) –

Odpowiedz

8

Czy to niesławny problem "odłączonej głowy"?

Nie, HEAD jest skierowany na oddział original_idea

Czy mistrz muszą być wyrównane z głowicą do optymalnego zdrowia repo?

Nie, mistrz jest tylko umowna nazwa, zwykle przyjmuje się oddział, który jest łatwo buildable i mam nadzieję, że migawka roboczego.

Jak to naprawić?

Jeśli wciśnięty mistrza do innego repozytorium, trzeba scalić ty zmienia od original_idea do mistrza:

git checkout master 
git merge original_idea 

mieć świadomość, że jeśli istnieją sprzeczne wy ​​zmiany” Będę musiał je rozwiązać.

Jeśli nie masz jeszcze popchnął mistrza do innego repozytorium, można usuwać mistrza i odtworzyć go z original_idea. OSTRZEŻENIE: Wszyscy, którzy pracowali przy master, będą musieli zresetować swój oddział master.

$ 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

Czy mogę prosić o pokrycie jeszcze jednej sprawy? Przenieś 'master' na' HEAD', zachowując jednocześnie gałąź o nazwie 'master', zmieniając najpierw nazwę" experiment_1 ". Innymi słowy, struktura się nie zmienia, etykiety się poruszają. Dzięki! –

+0

Jakie zatwierdzenie na diagramie ma być wskazówką * master *? –

+0

'72ea01d', gdzie 'master' jest teraz, zostanie nazwany' experiment_1'. Wtedy 'master' przejdzie do miejsca, w którym znajduje się' HEAD', '971f835'. Dzięki! Pracuję nad lepszym zrozumieniem tego poprzez kilka samouczków online. –

26

Jeśli git branch pokazuje, że bieżąca gałąź to original_idea, nie będzie to detached HEAD situation.

Ale w każdym razie, jeśli chcesz, aby Twój mistrz, aby odzwierciedlić swój „prąd popełnić” (co jest what HEAD means in Git):

git branch -f master HEAD 
git checkout master 

byłoby znaleźć inne alternatywy w „How to I “move” my commits from “no branch” to an actual branch?”.

Problem polega na tym, że powoduje to, że cały oddział aktualnie kończący się na master zniknie.

Następnie wszystko co musisz zrobić, to:

  • upewnić HEAD jest określany przez oddział (jak original_idea na schemacie)
  • rebase tę gałąź na szczycie Master:

Oznaczałoby to:

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

Problem polega na tym, że cały oddział kończący się na 'master' znika. Czy czegoś brakuje? –

+0

@ martin's Edytowałem odpowiedź. – VonC

+0

co oznacza tutaj original_idea? Jest to head lub origin/master – prasanthMurugan

Powiązane problemy