Есть ли способ использовать команду, как, git ls-files
чтобы показать только неотслеживаемые файлы?
Причина, по которой я спрашиваю, заключается в том, что я использую следующую команду для обработки всех удаленных файлов:
git ls-files -d | xargs git rm
Я хотел бы что-то подобное для неотслеживаемых файлов:
git some-command --some-options | xargs git add
Я смог найти -o
вариант git ls-files
, но это не то, что я хочу, потому что он также показывает проигнорированные файлы. Я также смог придумать следующую длинную и уродливую команду:
git status --porcelain | grep '^??' | cut -c4- | xargs git add
Кажется, здесь должна быть лучшая команда, которую я могу использовать. И если нет, как я могу создавать собственные команды git?
git
git-status
git-rm
git-stage
git-ls-files
Мы все Моника
источник
источник
git ls-files -d | xargs git rm
?git
работает только с файлами, у него нет никакого способа отслеживания пустых папок. Попробуйfind . -type d -empty
вместо этого.Ответы:
Чтобы получить список неотслеживаемых файлов, попробуйте:
Если вам нужно Направьте вывод
xargs
, имеет смысл против белых пространств , используяgit ls-files -z
иxargs -0
:Хороший псевдоним для добавления неотслеживаемых файлов:
Изменить: Для справки: git-ls-files
источник
!
означает в начале строки псевдонима или где это задокументировано?git add *
будет делать то же самое: добавлять все неотслеживаемые файлы, кроме стандартных (файлы, пути которых указаны.gitignore
).[alias] lso = "!f() { cd $(git rev-parse --show-toplevel); git ls-files -o; }; f"
Если вы просто хотите удалить неотслеживаемые файлы, сделайте это:
добавьте
x
к этому, если вы хотите также включить специально игнорируемые файлы. Я используюgit clean -dfx
много в течение дня.Вы можете создать свой собственный git, просто написав скрипт
git-whatever
и вызывая его на своем пути.источник
git add -A
илиgit add -u
(в зависимости от того, что имеет для тебя больше смысла)git add -A -n
будет делать то, что вы хотите.-A
добавляет все неотслеживаемые файлы в репозиторий,-n
делает его там,dry-run
где добавление не выполняется, но выводится состояние с указанием каждого файла, который был бы добавлен.источник
.gitignore
файлах, что обычно является тем, что мы хотим, но если нет, тоgit add -fAn
.add '$file'
. Принимая во внимание, чтоgit ls-files --exclude-standard -o
дает чистый вывод, обжигающе горячий.Принятый ответ падает на имена файлов с пробелом. На данный момент я не уверен, как обновить команду alias, поэтому я выложу улучшенную версию здесь:
источник
Все очень просто
Чтобы получить список всех неотслеживаемых файлов, используйте команду git status с опцией -u (--untracked-files)
источник
--ignored
вgit status -u
командуПри поиске файлов для потенциального добавления. Выход из этого
git show
делает, но он также включает в себя много других вещей. Следующая команда полезна для получения того же списка файлов, но без всего остального.Это полезно, когда объединяется в конвейере, чтобы найти файлы, соответствующие определенному шаблону, и затем передать их в
git add
.источник
Я знаю, это старый вопрос, но с точки зрения перечисления неотслеживаемых файлов я подумал, что добавлю еще один, в котором также перечислены неотслеживаемые папки:
Вы можете использовать операцию git clean с -n (пробный запуск), чтобы показать вам, какие файлы будут удалены (включая файлы .gitignore):
git clean -xdn
Это имеет преимущество, показывая все файлы и все папки , которые не отслеживаются. Параметры:
x
- Показывает все неотслеживаемые файлы (включая игнорируемые git и другие, такие как выходные данные сборки и т. Д.)d
- показать неотслеживаемые каталогиn
- и самое главное! - dryrun, то есть на самом деле ничего не удаляйте, просто используйте механизм очистки для отображения результатов.Это может быть немного небезопасно, если вы забудете об этом
-n
. Поэтому я обычно называю его псевдонимом в git config.источник
Все предыдущие ответы, которые я проверял, также содержат список файлов для фиксации. Вот простое и легкое решение, в котором перечислены только те файлы, которые еще не находятся в репо и не подлежат
.gitignore
.или
источник
Я думаю, что это будет так же, как предполагалось в оригинальном постере:
git add .
источник
git/svn add .
, котенок умирает.git add .
безнаказанно!.gitignore
правильно настроили . Тем не менее, хорошо избегатьgit add .
. Лучше естьgit add -u
.