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