Подтвердить что ты не робот

Поддерживает ли 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

4b9b3361

Ответ 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

где ** означает, что все папки рекурсивно из этой точки в пути