Git: Как получить список всех неотслеживаемых файлов, игнорируя неотслеживаемые подмодули? - PullRequest
0 голосов
/ 07 февраля 2020

В сценарии я хочу проверить, является ли репозиторий Git чистым или нет. В случае, если это не чисто, изменения должны быть спрятаны. Для проверки я использую:

git diff-index HEAD --

для определения изменений отслеживаемых файлов и:

git ls-files --others

для определения наличия неотслеживаемых файлов. К сожалению, git ls-files --others также сообщит о неотслеживаемых подмодулях, которые нельзя спрятать.

Есть ли какая-либо опция или другая команда Git, которая возвращает тот же результат, что и git ls-files --other , за исключением неотслеживаемого подмодули

1 Ответ

2 голосов
/ 07 февраля 2020

git не может видеть, является ли каталог без отслеживания предполагаемым , чтобы стать подмодулем или нет. Это просто неотслеживаемый каталог.

Вы можете проверить наличие подкаталога .git, чтобы проверить, действительно ли этот неотслеживаемый каталог является хранилищем git; что-то вроде:

for untracked in $(git ls-files --others)
do
    if [ ! -e $untracked/.git ]
    then
        echo $untracked
    fi
done

, который будет печатать неотслеживаемые файлы / каталоги, которые не являются git хранилищем.

Git псевдоним

вы можете настроить его как git псевдоним:

git config --global alias.untracked-not-repo '!'"bash -c 'for untracked in \$(git ls-files --others); do if [ ! -e \$untracked/.git ]; then echo \$untracked; fi; done'"

, теперь вы можете использовать его как

git untracked-not-repo
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...