“git pull”在Windows命令提示符下返回错误

时间:2013-07-31 07:30:46

标签: git command-prompt

现在我在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 pullgit show都可以正常工作。但我的期望是双击perl脚本来运行它而不是从Git Bash shell调用它。

2 个答案:

答案 0 :(得分:2)

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

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

I discover that after I reinstall git, it works as normal.

答案 1 :(得分:1)

@lord_linus答案中的

The link帮助解决了我的问题,但我想说清楚一点。

确实这是一个路径问题。由于我希望在Windows的命令提示符中使用git命令,因此我在环境变量中将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");

这项工作可以按照我的预期运作。