Поддерживает ли git подстановочные знаки в путях?
Я посмотрел, искал и читал документацию и ничего не мог найти об этом.
В принципе, я хочу иметь возможность сделать это:
git reset -- *.exe
или
git reset -- */some_executable.exe
Вместо этого:
git reset -- some/very/long/path/some_executable.exe
Также было бы неплохо иметь возможность сделать это:
git reset -- topleveldirectory/another/subdirectory/*
Вместо этого:
git reset -- topleveldirectory/another/subdirectory/SomeFile.cpp
git reset -- topleveldirectory/another/subdirectory/SomFile.h
Я думаю, что я могу использовать подстановочный знак *
в git -add для добавления файлов, но не нашел ничего, что работает в вышеприведенном случае.
Любые предложения или указатели на то, где я могу найти дополнительную информацию?
Использование: git версия 1.7.3.1.msysgit.0 в 64-разрядной версии Windows 7
Ответы
Ответ 1
Git поддерживает некоторый globing pathspec, но вам нужно быть осторожным с shell-escape-символами, поэтому они не интерпретируются в вашем случае msys bash, который не поддерживает более сложное расширение подстановочных знаков.
EDIT: Кроме того, для вашего примера reset вы можете просто передать каталог как аргумент git reset, а git будет работать рекурсивно.
git reset my/long/path
а не
git reset my/long/path/*
Ответ 2
В некоторых случаях, однако, нужно использовать подстановочные знаки определенным образом для таргетинга определенного подмножества файлов, а не только всех файлов, особенно при работе с git rm
или git checkout
или git reset
. Вы можете добиться того же, просто избегая символа дикой карты.
git rm app/assets/javascript/templates/projects/\*.jst.ejs
Ответ 3
По крайней мере, в случае подпапок/подфайлов нет необходимости в подстановочном знаке.
git add .
... добавляет текущий каталог (.) и все под ним. То же самое касается...
git add files/
..., который добавил бы ./files
, ./files/foo.txt
и ./files/foo/bar.txt
.
Ответ 4
В reset все exe файлы рекурсивно изнутри папки git, вы можете сделать следующее:
git reset -- \*.exe
Или если вы хотите добавить все java файлы в определенную подпапку, вы тоже можете это сделать:
git add ./some/sub/folder/path/**/*.java
где ** означает, что все папки рекурсивно из этой точки в пути