Есть ли удобный способ игнорировать все необработанные файлы и папки в репозитории git?
(Я знаю о .gitignore.)
Итак, git status снова даст чистый результат.
Есть ли удобный способ игнорировать все необработанные файлы и папки в репозитории git?
(Я знаю о .gitignore.)
Итак, git status снова даст чистый результат.
Как уже было сказано, исключить из состояния просто:
git status -uno # must be "-uno" , not "-u no"
Если вы хотите постоянно игнорировать в настоящее время невоспроизводимые файлы, вы можете, начиная с корня вашего проекта, запустить:
git status --porcelain | grep '^??' | cut -c4- >> .gitignore
Каждый последующий вызов git status будет явно игнорировать эти файлы.
UPDATE: приведенная выше команда имеет незначительный недостаток: если у вас нет файла .gitignore, но ваш gitignore будет игнорировать себя! Это происходит потому, что файл .gitignore создается до того, как выполняется git status --porcelain. Поэтому, если у вас нет файла .gitignore, я рекомендую использовать:
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
Это создает подоболочку, которая завершается до создания файла .gitignore.
ОБЪЯВЛЕНИЕ ОБЪЯВЛЕНИЯ, поскольку я получаю много голосов (спасибо!) Я думаю, что мне лучше объяснить команду немного:
git status --porcelain используется вместо git status --short, потому что manual утверждает: "Дайте результат в формате простого для анализа скриптов. Это похоже на короткий вывод, но будет оставаться стабильным в версиях git и независимо от пользовательской конфигурации." Таким образом, мы обладаем как синтаксической обработкой, так и стабильностью;grep '^??' фильтрует только строки, начинающиеся с ??, которые в соответствии с git инструкцией по статусу соответствуют несоответствующим файлы;cut -c4- удаляет первые 3 символа каждой строки, что дает нам только относительный путь к необработанному файлу;| pipe, которые передают вывод предыдущей команды на вход следующей команды:>> и > перенаправляют операторы, которые добавляют результат предыдущей команды в файл или перезаписывают/создают новый файл, соответственно. ДРУГОЙ ВАРИАНТ для тех, кто предпочитает используя sed вместо grep и cut, здесь другой способ:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore
Если вы хотите постоянно игнорировать эти файлы, простой способ добавить их в .gitignore:
git ls-files --others --exclude-standard >> .gitignore
Найденное в руководство
git status -uno
-u no также не отображается неустановленные файлы. -uno работает по желанию и показывает неустановленный, но скрывает невоспеты.
Два способа:
используйте аргумент "-uno" для git -status. Вот пример:
[[email protected]_vmware:ft]$ git status
# On branch ft
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# foo
nothing added to commit but untracked files present (use "git add" to track)
[[email protected]_vmware:ft]$ git status -uno
# On branch ft
nothing to commit (working directory clean)
Или вы можете добавить файлы и директивы в .gitignore, и в этом случае они никогда не появятся.
Если у вас много неиспользуемых файлов и вы не хотите "gitignore" всех, обратите внимание, что, поскольку git 1.8.3 (22 апреля 2013 г.), git status упомянет --untracked-files=no, даже если вы не добавили эту опцию в первую очередь!
"
git status" предлагает пользователям изучить возможность использования опции--untracked=no, если она занимает слишком много времени.