git: Как мне рекурсивно добавить все файлы в поддереве каталога, которые соответствуют шаблону glob? - PullRequest
56 голосов
/ 08 февраля 2010

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

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

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

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

Ответы [ 6 ]

59 голосов
/ 08 февраля 2010

Это ошибка в документации. Заключите звездочку в

$ git add documentation/\*.screen

или

$ git add 'documentation/*.screen'

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

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

$ git add *.screen

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

17 голосов
/ 23 июня 2011

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

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

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

4 голосов
/ 23 августа 2011

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

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

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

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

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

4 голосов
/ 08 февраля 2010

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

1 голос
/ 19 ноября 2013

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

1 голос
/ 08 февраля 2010

1001 * попробовать *

git add ./documentation/*.screen
...