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


83

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

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

Ответы:


30

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

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

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

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

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

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


когда я попробовал 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


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

Это избавило меня от головной боли
— Элрой Джетсон

Отличный ответ. Эти шаги избавили меня от многих затруднений!
— Галлен

Отличный ответ. Это избавило меня от растерянности!
— 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.


В моем случае это была проблема, так как у меня была папка .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, и все ваши каталоги должны присутствовать
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.