我有一个 Windows BAT 脚本,它执行以下操作:
call git reset --hard
call git clean --force
这可行,但我真的想在另一个文件夹的上下文中执行它,类似于(这不起作用):
call ../git reset --hard
call ../git clean --force
我该怎么做?出于多种原因,我不想使用“cd”,尤其是因为它似乎会破坏执行更改(仅运行一个 git 命令)。
答案1
毫不奇怪,您的第二个示例不起作用,因为git
这是一个全局命令(假设您以这种方式安装它)。执行的../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/
答案2
更新:
--git-dir= 设置存储库的路径(“.git”目录)。这也可以通过设置 GIT_DIR 环境变量来控制。它可以是绝对路径,也可以是当前工作目录的相对路径。
因此对于 OP 示例:
call git reset --hard --git-dir=../otherproject/.git
call git clean --force --git-dir=../otherproject/.git