Git: Как я могу рекурсивно добавлять все файлы в поддереве каталога, которые соответствуют шаблону glob?

У меня есть несколько .screen файлов внутри /xxx/documentation и его подкаталогов, которые уже отслеживаются с помощью Git.

После изменения многих из этих экранных файлов я запускаю git add documentation/\\*.screen -а, указанный в первом примере в документации git-add, чтобы сгенерировать эти файлы, но команда не работает:

fatal: pathspec 'documentation/\*.screen' did not match any files

Является ли моя команда плохим, или есть git ошибка?

Ответ 1

Это ошибка в документации. Отправьте звездочку с помощью

$ git add documentation/\*.screen

или

$ git add 'documentation/*.screen'

чтобы получить нужное поведение.

Если вместо этого вы хотите добавлять файлы только в текущий каталог, используйте

$ git add *.screen

ОБНОВЛЕНИЕ: Я отправил патч, который исправляет проблему, теперь исправлено с версии 1.6.6.2.

Ответ 2

Я пробовал принятый ответ, но это не сработало для меня.. так что здесь мой на всякий случай кто-то хочет выполнить эту работу, не тратя время на анализ различных аспектов, которые могут вызвать проблему:

find documentation -name "*.screen" | xargs git add -u

//опция -u для git -add добавляет к индексу только файлы, которые ранее отслеживались и изменялись

Ответ 3

Вы сказали оболочке искать *.screen (т.е. именно эту строку - которая не существует - вместо того, что вы хотите "все файлы, которые заканчиваются на .screen). Опустите \\, чтобы оболочка могла выполните расширение имени файла.

Ответ 4

Это то, что я использовал для аналогичной проблемы git, добавляя все файлы в каталог:

find . | sed "s/\(.*\)/\"\1\"/g" | xargs git add 

Для исходного вопроса команда будет следующей:

find -name "*.screen" | sed "s/\(.*\)/\"\1\"/g" | xargs git add 

Обратите внимание, что я имею дело с случаем, когда полное имя файла содержит пробелы. Вот почему мой ответ. Отредактируйте часть перед первым |, чтобы выбрать разные файлы для добавления.

Ответ 5

попробовать

git add ./documentation/*.screen

Ответ 6

git add *.java работает для меня, чтобы добавить рекурсивно все java файлы