Что означает серый значок в удаленном GitHub

83

Может ли кто-нибудь сказать мне, почему у меня отображается серый значок, когда я нажимаю свои файлы на github? В каталоге приложения должны быть модели, представления и контроллеры, но на удаленном GitHub я не могу щелкнуть.

введите описание изображения здесь

BC2
источник

Ответы:

30

Похоже, вы создали подмодуль, указывающий на недоступное удаленное место.

Смотрите этот ответ . Зеленый значок указывает на субмодуль. Я предполагаю, что в вашем случае он неактивен, потому что подмодуль был неправильно настроен.

Учитывая, что .gitmodulesего нет, он должен быть удален, оставив подмодуль без удаленной информации.

Если войти appи ввести, git remote -vвы также увидите, куда указывает этот модуль. Это место в настоящее время недоступно.

По аналогичному сценарию я добавил подмодуль и удалил .gitmodules. Результат на GitHub выглядит так:

отсутствует подмодуль

Boj
источник
когда я попробовал git submodule update --init, он не вернул мне сопоставление подмодулей, найденное в gitmodules для пути 'app'
BC2
Я попробовал git ls-tree --full-tree -r HEAD, и он вернул мне 100644 blob 6628083525c40f2abab01a69c4599d38380b18a5 Rakefile 160000 commit 60b600031853f5f4bbc0a2885caf5085bbf873fc app
BC2
все каталоги содержат слово blob, кроме приложения ... n в приложении больше нет файлов каталогов ... тогда как в моем реальном проекте внутри приложения все еще есть несколько каталогов, таких как Model, View, Controller и т. д.
BC2
что cat .gitmodulesвозвращается? Не публикуйте актуальные URL-адреса
Boj
cat: .gitmodules: Нет такого файла или каталога
BC2
75
git rm --cached <folder_name>

Затем перейдите в родительский каталог и выполните:

git add .
git commit -m "<your_message>"
git push --all
Анкит Агравал
источник
2
Обратите внимание: --all выталкивает все ветки .
austinjalexander
24

Git считает, что это подмодуль, поскольку внутри него есть каталог .git. Исправить...

Изменен каталог на неправильный каталог:

cd <offending git submodule>

Удалите внутри него каталог .git:

rm -rf .git

Обновите кеш git:

git rm --cached <offending git submodule>

Переходим в родительский каталог:

cd ..

Добавьте каталог в git:

git add .
git commit -m "Changed submodule to directory"
git push --all
Sadfasdf
источник
Это избавило меня от головной боли
Элрой Джетсон
Отличный ответ. Эти шаги избавили меня от многих затруднений!
Галлен
Отличный ответ. Это избавило меня от растерянности!
Ayubur Rahaman
Это, безусловно, самый правильный ответ после пары альтернативных ответов. Большое спасибо
Platos-Child
Должно быть больше всего голосов. Только одно: перейдите в родительский каталог, а затем выполните git rm --cached <>
Теджас Шарма
20

Похоже, вы инициализировали git внутри папки. Удалите файл git (rm -rf) из подпапки, создайте новое репо и повторно инициализируйте git.

Кокеры
источник
3
Очень лаконичный ответ! Я просто зашел, включил скрытые файлы, удалил скрытую папку git внутри своего проекта и повторно загрузил - серый значок папок исчез, и на github все снова в порядке. Спасибо за лаконичный и прямой ответ.
twknab
1

Вы уже инициализировали git внутри каталога приложения, и он не может найти пульт. Удалите файл .git внутри приложения. .

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

Или покажите скрытые файлы внутри папки и сделайте это вручную. Затем повторно зафиксируйте и повторно нажмите изменения родительской папки

Саймон Сомлай
источник
1
<3 ответов типа копипаст
Саймон
1

Самый простой способ, который я нашел, - просто удалить папку из локального и обновить удаленное репо. Перейдите в свой локальный каталог и вырежьте папку, содержащую неправильно настроенную подпапку .git, в другое место (вне локального репо, например, на рабочий стол), чтобы вы могли исправить проблему и скопировать ее позже, затем запустите:

git submodule update

git add --all

git commit --all

git push

Это должно удалить папку, которая неактивна на удаленном репо. Затем скопируйте папку обратно в свои локальные файлы и запустите add --all commit --all git push, как указано выше, позаботившись, конечно, сначала, чтобы удалить неправильно настроенную папку .git из подпапки, чтобы избежать той же проблемы. очередной раз; чтобы найти это в системах Linux, используйте cntrl-h из папки для просмотра скрытых файлов в ваших папках, вы увидите папку .git, присутствующую во вложенной папке, которая вызывает проблему, просто удалите ее, и это должно решить

Ли Мэтисон
источник
0

Внутри него уже есть .git, поэтому он выглядит серым. т.е. внутри него инициализирован git.

nmal
источник
В моем случае это была проблема, так как у меня была папка .git внутри папки, а затем, похоже, автоматически создается подмодуль для папки. Я не уверен, почему этот ответ помечен?
leoncc
0

В моем случае я инициализировал репозиторий git в корневой папке (тот, который имеет manage.py) при развертывании на Heroku перед настройкой репозитория Git в родительской папке проекта.

Когда я затем создал новое репо в родительской папке проекта, корневая папка, обрабатывающая представления моделей и контроллеры, была недоступна. Для меня сработало следующее:

  1. Удалить репозиторий родительской папки
  2. Создать новое репо не проверяя «Инициализировать этот репозиторий с помощью README», так как мы будем импортировать существующий репозиторий.
  3. В корневой папке, в папке с manage.py, сделайте следующее:

    git remote add origin "ссылка на репозиторий github"

    git push -u origin master

  4. Обновите репозиторий Github, и все ваши каталоги должны присутствовать
Дженнифер Паулино
источник