Поддерживает ли git подстановочные знаки в путях?

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

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

git reset -- *.exe

or

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


person Nathan McDaniel    schedule 16.02.2011    source источник


Ответы (4)


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

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

git reset my/long/path

скорее, чем

git reset my/long/path/*
person Matt Enright    schedule 16.02.2011
comment
Эй, это вообще не работает! У меня много java-файлов, и запуск git log --all -- '*.java' ничего не дает. найти . -name '*.java' выводит тонны. - person misiu_mp; 12.03.2012
comment
Это на git 1.7.4.4 в Linux. - person misiu_mp; 12.03.2012
comment
Эта версия, должно быть, была взломана. Сборка 1.7.9.3 работает так, как описано. Бьет меня. - person misiu_mp; 12.03.2012
comment
Если вы хотите передать все java-файлы, попробуйте: git reset -- \*.java - person Lars Juel Jensen; 18.08.2016

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

git reset -- \*.exe

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

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

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

person Lars Juel Jensen    schedule 18.08.2016

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

git rm app/assets/javascript/templates/projects/\*.jst.ejs
person Dhruva Sagar    schedule 06.02.2012

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

git add .

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

git add files/

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

person coreyward    schedule 16.02.2011