Как уже было сказано, для исключения из статуса просто используйте:
git status -uno # must be "-uno" , not "-u no"
Если вместо этого вы хотите навсегда игнорировать неотслеживаемые в данный момент файлы, вы можете из корня вашего проекта запустить:
git status --porcelain | grep '^??' | cut -c4- >> .gitignore
Каждый последующий вызов git statusявно игнорирует эти файлы.
ОБНОВЛЕНИЕ : у приведенной выше команды есть небольшой недостаток: если у вас еще нет .gitignoreфайла, ваш gitignore проигнорирует себя! Это происходит потому, что файл .gitignoreсоздается до git status --porcelainвыполнения. Поэтому, если у вас еще нет .gitignoreфайла, я рекомендую использовать:
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
Это создает подоболочку , который завершает перед тем.gitignore файла.
ОБЪЯСНЕНИЕ КОМАНДЫ, так как я получаю много голосов (спасибо!) Думаю, мне лучше немного объяснить команду:
git status --porcelainиспользуется вместо того, git status --shortпотому что руководство указано: «Предоставляйте выходные данные в формате, удобном для синтаксического анализа для сценариев. Это похоже на краткие выходные данные, но будет оставаться стабильным во всех версиях git и независимо от конфигурации пользователя». Таким образом, у нас есть возможность синтаксического анализа и стабильность;
grep '^??'фильтрует только строки, начинающиеся с ??, которые, согласно руководству по git status , соответствуют неотслеживаемым файлам;
cut -c4- удаляет первые 3 символа каждой строки, что дает нам только относительный путь к неотслеживаемому файлу;
- что
|символы трубы , которые проходят вывод предыдущей команды на вход следующей команды;
>>и >символы переадресация операторы , которые добавляют вывод предыдущей команды в файл или переписывает / создает новый файл, соответственно.
ДРУГОЙ ВАРИАНТ для тех, кто предпочитает использоватьsed вместо grepи cut, вот еще один способ:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore