Кажется, я не могу избавиться от неотслеживаемого контента в подмодулях Git. Беговые git status
урожаи:
# На ветке мастер # Изменения не подготовлены для коммита: # (используйте «git add ...» для обновления того, что будет зафиксировано) # (используйте "git checkout - ...", чтобы отменить изменения в рабочем каталоге) # (зафиксировать или удалить неотслеживаемый или измененный контент в подмодулях) # # изменено: связка / фрагмент (неотслеживаемый контент) # изменено: связка / объемное звучание (неотслеживаемый контент) # изменено: пакет / конечный пробел (неотслеживаемый контент) # изменено: пакет / zencoding (неотслеживаемый контент) # изменения не добавлены в коммит (используйте «git add» и / или «git commit -a»)
Добавление --ignore-submodules
параметра скрывает эти сообщения; но мне интересно, есть ли способ избавиться от этой грязи более подходящим способом.
git
git-submodules
Томер Лихташ
источник
источник
Ответы:
Поскольку состояние git сообщает о неотслеживаемом контенте, фактический способ получить чистый статус состоял бы в том, чтобы войти в каждый из этих подмодулей и:
.gitignore
конкретном для каждого модуля..git/info/exclude
, как и peci1 отчеты в комментариях .или добавить грязные спецификации подмодуля, как указано в ezraspectre «s ответа (upvoted).
или добавить глобальный
.gitignore
файл (часто~/.gitignore-global
). Как, например,.DS_Store
или в моем случае,Carthage/Build
как сообщил Мариан Черны в комментариях . Смотрите.gitginore
справочную страницу :источник
.DS_Store
файл был автоматически создан (OS X) в одном из моих подмодулей, не давая мне зафиксировать основной проект. Arg! Время обновлять.gitignore
....git/info/exclude
и добавьте туда строки игнорирования (он работает как .gitignore, но не является частью общего репозитория).Я нашел этот пост в блоге, чтобы работать в целом. Добавив
ignore = dirty
опцию для каждой записи в.gitmodules
файле.источник
ignore = untracked
также существует, и показывает измененные отслеживаемые файлы, но не неотслеживаемые файлы. Было бы неплохо, если бы для всех подмодулей была глобальная настройка ...Вы также можете перейти к каждому подмодулю dir и выступать в качестве отдельного git. Например:
... / получает список измененных файлов /
Вы также можете обновить удаленный репозиторий субмодулей с помощью
после всего
источник
git add .
без просмотра измененных файлов. В большинстве случаев внесенные изменения - это добавленные.DS_Store
файлы - это, вероятно, должно быть.gitignore
уловлено вами , как упомянул зортни в первом комментарии к ответу.git submodule update --force
.Это может быть связано с тем, что
detached HEAD
в вашей ветке субмодулей. Если это так, перейдите в путь к субмодулю (например./bundle/snipmate
:) и запуститеgit checkout master
.источник
Вчера я застрял в этом вопросе в проекте, в котором было около 12 подмодулей.
git status
показывал вывод.Для устранения ошибки неотслеживаемого контента, я должен был удалить неотслеживаемые файлы из всех подмодулей (все были
*.pyc
,*.pyo
файлы , сгенерированные питона) , используя.gitignore
.Чтобы разрешить другое, мне пришлось запустить
git submodule update
обновленный каждый из подмодулей.источник
В моей ситуации я клонирую модули как отправную точку для нового модуля в моей среде ZF2. Что он делает, так это помещает свою собственную папку .git в каталог.
Решением в этом случае является удаление папки .git (вам, вероятно, потребуется показать скрытые файлы, чтобы просмотреть ее).
источник
Это, вероятно, происходит, когда у вас есть другой .git [скрытая папка] внутри конкретной папки ..
Изменено: ./../ .. (измененный контент, неотслеживаемый контент)
убедитесь, что ваш подкаталог не содержит эту папку .git.
В этом случае проблему можно решить, удалив папку .git вручную из подкаталога.
источник
Я предпочитаю использовать SourceTree , поэтому для меня решение было открыть репозиторий подмодулей в SourceTree, который показывает мне список всех неотслеживаемых файлов. Я тогда группа выбрал их все, затем использовал «Удалить».
Я смог сделать это, потому что знал, что все неотслеживаемые файлы на самом деле не нужны.
источник
Это сработало просто отлично для меня:
Если это не работает с
pathname
, попробуйте имя файла. Дайте мне знать, если это сработало и для вас.источник
Если это временная проблема, вы можете зайти в папку субмодуля и запустить,
git reset HEAD --hard
но вы потеряете все свои изменения внутри субмодуля.источник