Git: список только" неотслеженных " файлов (также пользовательские команды)

есть ли способ, чтобы использовать команду git ls-files показывать только неотслеженные файлы?

причина, по которой я спрашиваю, заключается в том, что я использую следующую команду для обработки всех удаленных файлов:

git ls-files -d | xargs git rm

Я хотел бы что-то похожее на неотслеживаемые файлы:

git some-command --some-options | xargs git add

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

git status --porcelain | grep '^??' | cut -c4- | xargs git add

похоже, что должна быть лучшая команда, которую я могу использовать здесь. А если нет, как создать пользовательские команды git?

8 ответов


чтобы перечислить неотслеженные файлы, попробуйте:

git ls-files --others --exclude-standard

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

au = !git add $(git ls-files -o --exclude-standard)

Edit: Для справки: git-ls-files


если вы просто хотите удалить все неотслеживаемые файлы, сделайте следующее:

git clean -df

добавить x к этому, если вы хотите также включить специально игнорируемые файлы. Я использую git clean -dfx a много в течение дня.

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


git add -A -n будет делать то, что вы хотите. -A добавляет все неотслеживаемые файлы в репо, -n делает dry-run где добавление не выполняется, но вывод состояния дается список каждого файла, который б добавлены.


принятый ответ аварийно завершает работу с именами файлов с пробелом. Я не могу прокомментировать это (низкий балл stackoverflow до сих пор), и я на данный момент не уверен, как обновить команду alias, поэтому я поставлю улучшенную версию здесь:

git ls-files -z -o --exclude-standard | xargs -0 git add

все очень просто

чтобы получить список всех неотслеженных файлов используйте команду git статус С опции - u (--untracked-files)

git status -u

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

 git status --porcelain | grep "^?? " | sed -e 's/^[?]* //'

это полезно при объединении в конвейере, чтобы найти файлы, соответствующие определенному шаблону, а затем трубопровод, который git add.

git status --porcelain | grep "^?? "  | sed -e 's/^[?]* //' | \
egrep "\.project$|\.settings$\.classfile$" | xargs -n1 git add

Я знаю его старый вопрос, но с точки зрения списка неотслеженных файлов я думал, что добавлю еще один, который также перечисляет неотслеженные папки:

вы можете использовать операцию git clean с -n (dry run), чтобы показать вам, какие файлы он удалит (включая .gitignore files) by:

git clean -xdn

это имеет то преимущество, что показывает все файлы и все папки которые не отслеживаются. Параметры:

  • x - показывает все неотслеженные файлы (в том числе игнорируемые git и другими, такими как вывод сборки и т. д...)
  • d - показать игнорируемых каталогов
  • n - и большинство важно! - dryrun, т. е. на самом деле ничего не удалять, просто используйте механизм очистки для отображения результатов.

Я думаю, что это будет то же самое, что и оригинальный плакат:

git add .