1

现在我在 Windows 机器上有一个 git 存储库,并且想用 Perl 在这个存储库上运行自动测试。为了确保每次启动测试时存储库都是最新的,我使用:

system("git pull");

在测试之前。

但它返回一个错误:

fatal: Uh oh. Your system reports no Git commands at all.

但是,当我git show使用相同的方法运行时,例如:

system("git show");

输出正常,也就是说 Windows 命令提示符识别了该git命令(并且它确实存在于系统 PATH 中)。那么为什么有些 git 命令可以成功而其他命令却不能呢?

PS:我正在使用Git Bash,如果我从 git bash 启动 Perl 脚本,两者都可以git pull工作git show。但我的期望是双击 perl 脚本来运行它,而不是从Git Bashshell 调用它。

4

2 回答 2

2

确保这不是路径问题,如此链接中所述(适用于 Windows,但也适用于其他操作系统)。还要检查您是否没有任何活动的 git 别名,这可能会阻止 git pull 正常工作。

关于路径问题,OP aladine在评论中确认:

I discover that after I reinstall git, it works as normal.
于 2013-07-31T11:23:45.660 回答
1

@lord_linus 答案中的链接对解决我的问题有很大帮助,但我想让它更清楚。

确实是路径问题。由于我希望将git命令与 Windows 的命令提示符一起使用,我将 git 命令路径(对我来说是D:\Git\Bin)添加到PATH环境变量中。

现在Git Bash有两个git命令:

$ which git
git is /bin/git
git is /Bin/git

在命令提示符中有一个git命令:

C:\>where git
D:\Git\bin\git.exe

我认为这搞砸了路径。我的解决方案是使用D:\Git\bin\git.exe而不是git,所以在我的 Perl 脚本中我写道:

my $git = `where git`;
system("$git pull");

这种解决方法可以按我的预期工作。

于 2013-08-01T02:41:58.773 回答