2011-12-27 10 views
24

Po dodaniu podmodułu Git repozytorium Git jak toW jaki sposób wykonać moduł pomocniczy z odłączonym HEAD, aby dołączyć do rzeczywistej HEAD?

git submodule add ssh://server/proj1/ proj1 
git submodule init 
git submodule update 

dodany modułem będzie wolnostojącego PRZEWODNICZACEGO trybu. Nie wiem dobrze, co to jest, ale wiem, że moduł będzie powiązany z konkretną wersją docelowego repozytorium.

Nie wiem, jak to działa, w każdym razie wygląda na to, że istnieje tam gałąź proxy. Rozwiązałem to, przechodząc do gałęzi głównej.

cd proj1 
git checkout master 

Spowoduje to przełączenie bieżącego rozgałęzienia master HEAD, ale nie zaktualizuje to połączenia. Jeśli ponownie sklonujesz całe repozytorium, nadal będzie ono połączone ze starą wersją.

Jeśli chcę, aby zawsze była powiązana z najnowszą wersją (HEAD), co powinienem zrobić?

+0

Pamiętaj, że moduł submodułu może teraz śledzić gałąź. zobacz moją zredagowaną odpowiedź. – VonC

+0

Znalazłem ten http://stackoverflow.com/a/20797186/1808261 informacyjny po przybyciu do tego postu. – dtmland

+0

Możliwy duplikat [Jak mogę pogodzić odłączone HEAD z wzorcem/oryginałem?] (Http://stackoverflow.com/questions/5772192/how-can-i-reconcile-detached-head-with-master-origin) –

Odpowiedz

32

Aktualizacja marzec 2013

Git 1.8.2 dodaje możliwość śledzenia oddziałów.

git submodule” rozpoczął naukę nowy tryb do zintegrować z końcówką zdalnej gałęzi (w przeciwieństwie do integracji z commit nagrany w gitlink w superproject za).

# add submodule to track master branch 
git submodule add -b master [URL to Git repo]; 

# update your submodule 
git submodule update --remote 

Zobacz także Vogella's tutorial on submodules.


Original odpowiedź (grudzień 2011)

dodany modułem będzie w trybie wolnostojącym HEAD

Tak, jest modułem o przedstawieniu konkretnego popełnienia, a nie oddziału.
Więc:

  • Jeśli kasa commit SHA1 (lub tag), jesteś w trybie wolnostojącym głowy.
  • Jeśli wymeldujesz się z oddziału (jak zrobiłeś z podziałem podmodułu master), możesz utworzyć inne zatwierdzenia na tym oddziale (ale będziesz musiał wrócić do repozytorium nadrzędnego, aby zatwierdzić także wspomnianego rodzica , aby zarejestrować nowy utworzony moduł modułu podrzędnego)

Zobacz "True nature of submodules", aby uzyskać więcej informacji.

Jeśli zawsze chciałeś najnowszego zatwierdzenia kolejnego repo, najprostszym sposobem byłoby scalenie ich razem (na przykład przy łączeniu poddrzewa).
Zobacz "Merge 2 same repository GIT", aby uzyskać szczegółowe informacje i referencje.

+0

Uwaga te submoduły git są bardzo różne, na przykład od zewnętrznych svn. Zobacz http://stackoverflow.com/questions/3131912/why-are-git-submodules-incompatible-with-svn-externals/3132221#3132221 – VonC

+1

Notatka tylko na później. "Podtekstowe połączenie" nie było dla mnie i myślę, że "moduł" byłby odpowiedzią, jeśli dobrze obsługuje śledzenie. – Eonil

+0

@Eonil, ale bardzo dobrze obsługuje śledzenie, jeśli tego chcesz. po prostu jego podstawową funkcją jest rejestrowanie wersji stałej. – VonC

Powiązane problemy