Co oznacza szara ikona w zdalnym serwisie GitHub

83

Czy ktoś może mi powiedzieć, dlaczego mam szarą ikonę, gdy przesyłam moje pliki na Github? Po stronie katalogu aplikacji powinny znajdować się modele, widoki i kontrolery, ale w zdalnym GitHubie nie mogę kliknąć.

wprowadź opis obrazu tutaj

BC2
źródło

Odpowiedzi:

30

Wygląda na to, że utworzyłeś podmoduł wskazujący nieosiągalną lokalizację zdalną.

Zobacz tę odpowiedź . Zielona ikona wskazuje na moduł podrzędny. Zakładam, że w twoim przypadku jest on wyszarzony, ponieważ moduł podrzędny został nieprawidłowo skonfigurowany.

Biorąc pod uwagę, że .gitmodulesnie ma go, musiał zostać usunięty, pozostawiając podmoduł bez zdalnej informacji.

Jeśli wejdziesz do appi wpiszesz git remote -v, zobaczysz, gdzie wskazuje ten moduł. To miejsce jest obecnie nieosiągalne.

W podobnym scenariuszu dodałem podmoduł i usunąłem .gitmodules. Wynik na GitHub wygląda następująco:

brak modułu podrzędnego

Boj
źródło
kiedy próbowałem zaktualizować submoduł git --init zwraca mi to nie znaleziono mapowania podmodułu w gitmodules dla ścieżki 'app'
BC2
Próbowałem git ls-tree --full-tree -r HEAD i zwraca mi 100644 blob 6628083525c40f2abab01a69c4599d38380b18a5 Rakefile 160000 commit 60b600031853f5f4bbc0a2885caf5085bbf873fc app
BC2
wszystkie katalogi mają słowo blob z wyjątkiem app ... n nie ma żadnych dalszych plików katalogów w aplikacji ... podczas gdy w moim rzeczywistym projekcie wewnątrz aplikacji jest jeszcze kilka katalogów, takich jak Model, Widok, Kontroler itp.
BC2
co cat .gitmoduleswraca? Nie
wysyłaj
cat: .gitmodules: Nie ma takiego pliku lub katalogu
BC2,
75
git rm --cached <folder_name>

Następnie przejdź do katalogu nadrzędnego i wykonaj:

git add .
git commit -m "<your_message>"
git push --all
Ankit Agrawal
źródło
2
Uwaga: --all przesuwa wszystkie gałęzie .
austinjalexander
24

Git myśli, że jest to moduł podrzędny, ponieważ zawiera katalog .git. Naprawić...

Zmieniono katalog na naruszający katalog:

cd <offending git submodule>

Usuń znajdujący się w nim katalog .git:

rm -rf .git

Zaktualizuj pamięć podręczną git:

git rm --cached <offending git submodule>

Przejdź do katalogu nadrzędnego:

cd ..

Dodaj katalog do gita:

git add .
git commit -m "Changed submodule to directory"
git push --all
sadfasdf
źródło
To uratowało mi ból głowy
Elroy Jetson
Świetna odpowiedź. Wykonanie tych czynności pozwoliło mi zaoszczędzić wiele zamieszania!
gallen
Świetna odpowiedź. To uratowało mnie od zamieszania!
Ayubur Rahaman
To zdecydowanie najbardziej poprawna odpowiedź po wypróbowaniu kilku alternatywnych odpowiedzi. Dzięki mnóstwo
Platos-Child
Powinien być najbardziej pozytywny. Tylko jedno, przejdź do katalogu nadrzędnego, a następnie wykonaj git rm --cached <>
Tejas Sharma
20

Wygląda na to, że zainicjowałeś git w folderze. Usuń plik git (rm -rf) z podfolderu, utwórz nowe repozytorium i ponownie zainicjuj git.

Cockery
źródło
3
Bardzo zwięzła odpowiedź! Właśnie wszedłem, włączyłem ukryte pliki, usunąłem ukryty folder git w moim projekcie i ponownie załadowałem - szara ikona folderów zniknęła i wszystko jest znowu dobrze na githubie. Dzięki za zwięzłą i prostą odpowiedź.
twknab
1

Zainicjowałeś już git w katalogu aplikacji i nie możesz znaleźć pilota. Usuń plik .git w aplikacji. .

[app(master)]$ sudo rm -r .git

Lub pokaż ukryte pliki w folderze i zrób to ręcznie. Następnie ponownie zatwierdź i ponownie prześlij zmiany w folderze nadrzędnym

Simon Somlai
źródło
1
<3 odpowiedzi typu „kopiuj i wklej”
Simon Somlai
1

Najłatwiejszą metodą, jaką znalazłem, było po prostu usunięcie folderu z lokalnego i zaktualizowanie zdalnego repozytorium. Przejdź do katalogu lokalnego i wytnij folder zawierający niepoprawnie skonfigurowany podfolder .git do innej lokalizacji (poza lokalnym repozytorium, np. Na pulpit), abyś mógł naprawić problem i skopiować go później, a następnie uruchom:

git submodule update

git add --all

git commit --all

git push

Powinno to usunąć wyszarzony folder w zdalnym repozytorium. Następnie skopiuj folder z powrotem do swoich plików lokalnych i uruchom add --all commit --all git push jak powyżej, uważając, aby najpierw usunąć nieprawidłowo skonfigurowany folder .git z podfolderu, aby uniknąć tego samego problemu jeszcze raz; aby zlokalizować to w systemach linux, użyj cntrl-h z folderu, aby wyświetlić ukryte pliki w folderach, zobaczysz folder .git obecny w podfolderze, który powoduje problem, po prostu usuń go i to powinno rozwiązać

Leigh Mathieson
źródło
0

Ma już wewnątrz .git i dlatego jest szara. tzn. został również zainicjowany w git.

nmal
źródło
W moim przypadku był to faktycznie problem, ponieważ miałem folder .git w folderze, a potem wydaje się, że automatycznie utworzył podmoduł dla tego folderu. Nie wiem, dlaczego ta odpowiedź jest zaznaczona?
leoncc
0

W moim przypadku zainicjowałem repozytorium git w folderze głównym (tym, który ma manage.py) podczas wdrażania do Heroku przed skonfigurowaniem repozytorium Git w folderze nadrzędnym projektu.

Kiedy następnie utworzyłem nowe repozytorium w folderze nadrzędnym projektu, folder główny obsługujący widoki modeli i kontrolery był wyszarzony. Pracowały dla mnie:

  1. Usuń repozytorium folderu nadrzędnego
  2. Utwórz nowe repozytorium bez zaznaczania opcji „Zainicjuj to repozytorium za pomocą pliku README”, ponieważ będziemy importować istniejące repozytorium.
  3. W folderze głównym, w folderze z manage.py, wykonaj następujące czynności:

    git remote add origin „github repo link”

    git push -u wzorzec pochodzenia

  4. Odśwież repozytorium Github i wszystkie katalogi powinny być obecne
Jennifer Paulino
źródło