Получение списка всех неверсированных файлов в папке Git -controlled

Получение списка неверсированных файлов в папке с Git -контролем более раздражает, чем должно быть. Если я действительно не сосать чтение man-страниц, это не похоже на то, что Git предоставляет возможность выполнять эту операцию самостоятельно.

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

Edit: получается стандартный способ сделать это, который уже хорошо работает.

git ls-files --other [--exclude-standard]

Ответы

Ответ 1

Или...

git clean -dnx | cut -c 14-

Если вы не хотите видеть проигнорированные файлы,

git clean -dn | cut -c 14-

Ответ 2

На самом деле, если вы используете git clean с опцией -n или --dry-run, он распечатает список незатрещенных файлов, которые он бы удалил, если бы вы запустили его с опцией -f или --force. Добавление флага -d включает в себя каталоги, которые либо пусты, либо содержат только файлы без следа.

Итак, вы можете запустить эту команду из репозитория git:

$ git clean -dn

И получим такой вывод:

Would remove dir/untracked_file_1.txt
Would remove untracked_file_2.txt

Здесь бонус: он также уважает ваш файл .gitignore, но если вы добавите флаг -X, он отобразит только проигнорированные файлы.

Ответ 3

diff <(echo "`git ls-tree -r master | sed 's/.*\t//g'`") <(echo "`find . -type f`") | grep '> .*' | cut -c 3-