Поддерживает ли git подстановочные знаки в путях? - PullRequest
30 голосов
/ 16 февраля 2011

Я посмотрел, искал и прочитал документацию и не могу ничего найти по этому поводу.

В принципе, я хочу быть в состоянии сделать это:

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 version 1.7.3.1.msysgit.0 в 64-битной Windows 7

Ответы [ 4 ]

18 голосов
/ 16 февраля 2011

Git поддерживает некоторые глобализации пути, но вы должны быть осторожны, чтобы избежать экранирования символов, чтобы они не интерпретировались в вашем случае, msys bash, который не поддерживает более сложное расширение с подстановочными знаками.

РЕДАКТИРОВАТЬ: Кроме того, для вашего примера сброса, вы можете просто передать каталог в качестве аргумента для git reset, и git будет работать рекурсивно.

git reset my/long/path

вместо

git reset my/long/path/*
8 голосов
/ 06 февраля 2012

В некоторых случаях, однако, нужно использовать специальные символы определенным образом для определения целевого подмножества файлов, а не только для всех файлов, особенно при работе с git rm, или git checkout или git reset.Вы можете достичь того же, просто избежав подстановочного знака.

git rm app/assets/javascript/templates/projects/\*.jst.ejs
6 голосов
/ 18 августа 2016

Чтобы рекурсивно сбросить все exe-файлы из папки git, вы можете сделать следующее:

git reset -- \*.exe

Или, если вы хотите добавить все java-файлы в определенную подпапку, вы можете сделать этотоже вот так:

git add ./some/sub/folder/path/**/*.java

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

4 голосов
/ 16 февраля 2011

По крайней мере, в случае подпапок / субфайлов нет необходимости в подстановочном знаке.

git add .

... добавляет текущий каталог (.) И все, что в нем. То же самое касается ...

git add files/

... что добавит ./files, ./files/foo.txt и ./files/foo/bar.txt.

...