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 256

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 status С опции - 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 operation with-n (dry run), чтобы показать вам, какие файлы он удалит (в том числе .gitignore files) by:

git clean -xdn

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

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

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

git add .