Как я рекурсивно добавляю файлы шаблоном (или шарик) расположенный в различных каталогах?
Например, я хотел бы добавить A/B/C/foo.java
и D/E/F/bar.java
(и несколько других файлов Java) с одной командой:
git add '*.java'
К сожалению, это не работает как ожидалось.
Ответ Серджио Акосты, вероятно, ваш лучший выбор, если некоторые из добавляемых файлов еще не отслеживаются. Если вы хотите ограничиться файлами, о которых git уже знает, вы можете объединить git-ls-files
с фильтром:
git ls-files [path] | grep '\.java$' | xargs git add
Git не предоставляет каких-либо причудливых механизмов для этого, так как это в основном проблема оболочки: как получить список файлов для предоставления в качестве аргументов для данной команды.
Немного не по теме (не относящееся конкретно к git), но если вы используете linux / unix, обходной путь может быть следующим:
find . -name '*.java' | xargs git add
И если вы ожидаете пути с пробелами:
find . -name '*.java' -print0 | xargs -0 git add
Но я знаю, что это не совсем то, что вы просили.
С помощью zsh
вы можете выполнить:
git add "**/*.java"
и все ваши *.java
файлы будут добавлены рекурсивно.