2011-10-01 8 views
18

Oto historia: Mam 2 git oddziałów master i develop Jestem obecnie na develop.Zastąpiony kod osoba trzecia z git submodules, teraz nie mogę przełączyć oddziałów

Dawno już miałem pliki źródłowe z trzeciej biblioteki dołączonej do mojego repo w katalogu Vendor/MGTwitterEngine. Ten kod został już scalony w master.

Teraz, na oddziale develop, usunąłem bibliotekę i zastąpiłem ją modułem git i zatwierdzono.

Problem polega na tym, że nie mogę już wrócić do gałęzi master. Gdy próbuję, pojawia się następujący błąd:

The following untracked working tree files would be overwritten by checkout: 
    Vendor/MGTwitterEngine/MGTwitterHTTPURLConnection.h 
    Vendor/MGTwitterEngine/MGTwitterHTTPURLConnection.m 
    Vendor/MGTwitterEngine/MGTwitterLibXMLParser.h 
    Vendor/MGTwitterEngine/MGTwitterLibXMLParser.m 
    Vendor/MGTwitterEngine/MGTwitterMessagesLibXMLParser.h 
    Vendor/MGTwitterEngine/MGTwitterMessagesLibXMLParser.m 
    Vendor/MGTwitterEngine/MGTwitterMessagesParser.h 
    Vendor/MGTwitterEngine/MGTwitterMessagesParser.m 
    ... 
    Aborting 

git uważa się modułem pliki są „untracked” i nie będzie zastąpić je gąsienicowe, non-modułem plików w tym samym miejscu.

Jak mogę obejść ten problem?

Odpowiedz

16

Niestety, myślę, że to tylko jedna z wad stosowania submodułów. Problemy te zostały opisane w sekcji o nazwie "Issues with Submodules" in Pro Git, ale w skrócie, najprostszym rozwiązaniem jest przenieść katalog submodule z drogi przed przejściem do master Branża:

mv Vendor Vendor.moved 
git checkout master 

Podobnie, gdy zmieni się develop, ty powinien zrobić:

git checkout develop 
mv Vendor.moved Vendor 
+1

Oczywiście, jak tylko minie przejście, ten problem zniknie. (Trzeba przyznać, że Git jest dość trudny, aby * bezpiecznie * zmienić gałęzie. Niestety, niestety.) – Cascabel

Powiązane problemy