1

我正在组合一个工具来自动化我的一些 git 任务,但我遇到了一个问题,“git commit”提示输入用户名和密码。我可以做 git add, rm, status ok,但不能提交。Runtime.exec()这是通过java运行 git 。

Runtime.getRuntime().exec("git " + cmd, new String[0], mDir);

我目前的测试是在 MS Windows 上。从命令行运行 git commit 就可以了。只有通过exec()调用运行时才会提示输入用户/密码。

我之前确实做过 git config --global 来设置用户名和密码。

那么,它为什么会提示我呢?

--添加 2/13

这是使用本地 git 目录,而不是使用远程存储库。好的,这是 GIT 向我报告的确切错误消息: git commit -F -

 *** Please tell me who you are.

 Run

   git config --global user.email "you@example.com"
   git config --global user.name "Your Name"

 to set your account's default identity.
 Omit --global to set the identity only in this repository.

致命:无法自动检测电子邮件地址(得到 'Cougar@COUGAR-HOUSE.(none)')

4

2 回答 2

1

你的 HOME 环境是在 java 运行时设置的吗?如果没有,git 将不知道在哪里可以找到您的全局 .gitconfig 文件(通常是 %HOME%.gitconfig)

于 2013-02-11T15:42:24.090 回答
0

密码配置将不会被使用,git因此这不是命令行运行的原因。更有可能的是,您设置了 SSH 密钥以允许您在没有密码的情况下访问您的服务器。这适用于命令行,但由于环境不同,从 Java exec 运行时可能不起作用。

您可以尝试调试环境,我不确定您需要在 Windows 上做什么。或者,您可以尝试配置core.askpass. 从git config手册页:

    core.askpass
    Some commands (e.g. svn and http interfaces) that interactively ask for a
    password can be told to use an external program given via the value of this
    variable. Can be overridden by the GIT_ASKPASS environment variable. If not
    set, fall back to the value of the SSH_ASKPASS environment variable or,
    failing that, a simple password prompt. The external program shall be given a
    suitable prompt as command line argument and write the password on its
    STDOUT.
于 2013-02-11T16:13:00.600 回答