使用 bat 来执行 cmd(比如 git),就像在另一个文件夹中一样,无需 cd

使用 bat 来执行 cmd(比如 git),就像在另一个文件夹中一样,无需 cd

我有一个 Windows BAT 脚本,它执行以下操作:

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

这可行,但我真的想在另一个文件夹的上下文中执行它,类似于(这不起作用):

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

我该怎么做?出于多种原因,我不想使用“cd”,尤其是因为它似乎会破坏执行更改(仅运行一个 git 命令)。

答案1

毫不奇怪,您的第二个示例不起作用,因为git这是一个全局命令(假设您以这种方式安装它)。执行的../git是查找名为gitone 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/

答案2

更新:

--git-dir= 设置存储库的路径(“.git”目录)。这也可以通过设置 GIT_DIR 环境变量来控制。它可以是绝对路径,也可以是当前工作目录的相对路径。

因此对于 OP 示例:

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

相关内容