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 файлы