У меня есть сценарий Windows BAT, который делает следующее:

call git reset --hard
call git clean --force

Это работает, но я действительно хочу выполнить его в контексте другой папки, что-то вроде (это не работает):

call ../git reset --hard
call ../git clean --force

Как я могу это сделать? Я не хочу использовать 'cd' по ряду причин, не в последнюю очередь потому, что кажется, что он нарушает изменение выполнения (выполняется только одна команда git).

1 ответ1

1

Не удивительно, что ваш второй пример не работает, потому что git - это глобальная команда (при условии, что вы установили ее таким образом). Doing ../git ищет исполняемый файл с именем git one folder back (я бы предположил, что в Windows он ищет git.exe или git.bat или что-то подобное).

Вместо этого git предоставляет опцию --git-dir=<path> (согласно странице руководства).

--git-dir=<path>
    Set the path to the repository. This can also be controlled by
    setting the GIT_DIR environment variable. It can be an absolute
    path or relative path to current working directory.

Таким образом, предполагая, что он работает в Windows, как в Linux, вы, вероятно, захотите:

call git reset --hard --git-dir=../otherproject/
call git clean --force --git-dir=../otherproject/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .