2012-08-31 11 views
15

Próbuję dodać moduł, który już istniał (inne zdalne repozytorium git). Ponieważ nie szukałem wcześniej, jak to zrobić poprawnie, myślę, że zepsułem moje repozytorium i potrzebuję pomocy, aby to naprawić.Dodaj moduł dodatkowy, którego nie można usunąć z indeksu

Usunąłem już wszystkie odpowiednie sekcje z .gitmodules i .git/config dotyczące submodules, które chcę usunąć. Sprawdziłem również, że nie ma katalogu modułów w moim katalogu .git /.

Jednak, kiedy uruchomić polecenie git rm --cached path_to_submodule, wyświetlany jest następujący komunikat:

 
fatal: pathspec 'path_to_submodule' did not match any files 

Jak poprzednie polecenie nie powiedzie się, gdy próbuję dodać ponownie ten sam submodule z nowymi definicjami, uruchamiając komendę git submodule add [email protected]:repo.git , to jest wyświetlany komunikat:

 
'repo' already exists in the index 
+0

Próbowałem dodać moduł podrzędny o tej samej nazwie już istniejącego pliku w indeksie. –

Odpowiedz

32

jedynym sposobem, że wiadomość ('repo' already exists in the index) może zostać wyświetlony, jeśli jest „repo” nadal istnieje w indeksie (patrz this chapter on submodule):

$ rm -Rf rack/ 
$ git submodule add [email protected]:schacon/rack.git rack 
'rack' already exists in the index 

You have to unstage the rack directory first. Then you can add the submodule: 

$ git rm -r rack 
$ git submodule add [email protected]:schacon/rack.git rack 

Nawet jeśli „rack” nie jest modułem, jeśli istnieje, to uniemożliwiłoby deklaracja modułem o tej samej nazwie.

1

mogą wystąpić podczas łączenia z błędem, ręcznego kasowania folderu z modułem, czy coś innego, jak Hallileo Comet

  1. w pliku .gitmodules - usunięcie linków do modułem (całą sekcję z submodule nazwą)

  2. w pliku .git\config - usunięcie linków do modułem, podobnie jak w poprzednim kroku

  3. w folderze .git\modules - usuń folder ścieżki względnej podobny do R elativus ścieżka "problem" modułu

  4. zapewnienia, że ​​folder modułem nie jest istnieje już

  5. następnie:

    $ git submodule add -f --name <name> <git://path_1.git> <path_2>

    gdzie: nazwa - nazwa modułem jak u chcą, mogą być równe twojemu imieniu: repo; - ścieżka do repozytorium źródłowego źródła (np. - github, itp.), - ścieżka względna do folderu, w którym moduł submodule będzie rezydował

    to pozwala dodawać moduł pomocniczy w ścieżce lub z nazwą, która wciąż jest obecna w indeksie, ale nie jest naturalnie żywa.

nie znalazłem żadnego sposobu, aby usunąć te martwe linki z indeksu, ale gdy zmuszony

1

Jeśli wyjście dodanie nowego submodule jest:

'FolderName' already exists in the index 

Tip kolejne polecenia

git ls-files --stage 

Dane wyjściowe będą podobne do:

160000 d023657a21c1bf05d0eeaac6218eb5cca8520d16 0 FolderName 

Następnie, aby usunąć końcówkę indeksu folderu:

git rm -r --cached FolderName 

Spróbuj ponownie dodać the modułem

+0

dziękuję, że pracował dla mnie –

0

'Submoduły/uasdk-clib' już istnieje w indeksie

git rm - r --cached submodules/uasdk-clib

git submodule dodaj -b chiny/wydanie/16.8.0 -f ssh: //[email protected] submodules/uasdk-clib

Powiązane problemy