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 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, т. е. фактически ничего не удаляйте, просто используйте чистый механизм для отображения результатов.