Ставьте только удаленные файлы с помощью git add
Я запустил git status и вижу несколько измененных файлов и несколько удаленных файлов. Можно ли ставить только удаленные или только измененные файлы?
9 ответов
Если у вас есть смесь измененных и удаленных файлов и вы хотите поместить только удаленные файлы в индекс, вы можете использовать git ls-files
в качестве фильтра.
git ls-files --deleted | xargs git add
Если вы хотите, чтобы это применялось только к части дерева файлов, укажите один или несколько подкаталогов в качестве аргументов для ls-files
:
git ls-files --deleted -- lib/foo | xargs git add
Чтобы сделать то же самое только для измененных файлов, используйте --modified
(-m
) вариант вместо --deleted
(-d
).
То же, что и ответ Steve, но с небольшим изменением:
Добавить --all в конец команды, чтобы добавить все файлы, возвращенные командой ls-files, в тайник
git ls-files --deleted | xargs git add --all
За всю любовь ls-files
приходит сюда, мне кажется
git add --all $(git diff --diff-filter=D --name-only)
проще.
Другой путь:
git diff --name-only --diff-filter=D | sed 's| |\\ |g' | xargs git add
я использую
sed
здесь, потому что пути могут содержать символы пробела.
Вы можете использовать эту команду для размещения только удаленных файлов.
git diff --diff-filter=D --name-only -z | xargs -0 git add
Надеюсь, поможет!
В качестве альтернативы принятому ответу вы можете использовать интерактивный режим
git add -i
, затем выберите
2
чтобы обновить файлы, которые вы хотите подготовить, и выбрать только удаленные (например, используйте диапазон
1-30
).
Иногда легче запомнить.
Чтобы сделать это с помощью только основных команд, созданных для сценариев:
git diff-files -z --diff-filter=D --name-only | git update-index -z --remove --stdin
Да.
мерзавец *
или же
git add myfile.php
или же
git add /templates/myfile.php
или же
git rm deletethis.php
или же
git rm /templates/deletethis.php
так далее
Также проверьте исходное дерево (простой в использовании графический интерфейс)