Git凭证填写拒绝我在Windows上安排的输入

Ode*_*ded 8 git credentials

我想在Windows服务器上运行日常任务:git-pull + heavy tests.

由于我希望它由一个计划触发并从脚本运行,我需要自动输入Git凭据.我想使用Git凭证填充语法key = value

由于这是我第一次使用Git凭据,我可能会遇到一些基本错误.

我尝试过使用Git Bash(Git扩展 - > Ctrl+ G)和Cygwin.

我在那里输入以下内容:

$ git credential fill
protocol=ssh
host=devserver
username=<my user name>
password=<my password>
path=/srv/gitosis/repositories/Matlab.git
<empty line>
Run Code Online (Sandbox Code Playgroud)

然后Git回复:

warning: invalid credential line:
fatal: unable to read credential from stdin
Run Code Online (Sandbox Code Playgroud)

我也尝试在空行之前只输入一行并获得相同的结果.我只尝试了用户名行,只有协议行,只有主机行.

第一:我做错了什么?

第二:什么是正确的饲料途径?

如果我跑

git remote -vv
Run Code Online (Sandbox Code Playgroud)

得到:

origin  gitosis@10.10.10.102:/srv/gitosis/repositories/Matlab.git (fetch)
origin  gitosis@10.10.10.102:/srv/gitosis/repositories/Matlab.git (push)
Run Code Online (Sandbox Code Playgroud)

我的道路是什么?

第三:主机名是什么?

鉴于Git远程输出,如果我运行ping devserver 得到

64 bytes from 10.10.10.102: icmp_seq=0 ttl=64 time=74 ms
Run Code Online (Sandbox Code Playgroud)

这是否意味着主机是devserver

Tim*_*thy 5

首先,免责声明:我不知道Git的功能,我只是将一些东西混在一起以使它们正常工作,并在这里发表评论,以防对您有所帮助。此时,我还使用了过时的Git版本(1.9.5.mysysgit;我有原因)。

我从尝试做类似的事情中获得的经验是,git-credential很难正常工作。但是,我确实通过更直接地使用凭据帮助程序来获得与工作类似的功能。

我发现了有关项目的凭据API,描述调用git credential-foogit config credential.helper返回foo。这似乎具有稍微不同的界面,但使用get而不是命令fill(这似乎更合逻辑)。

无论如何,对我来说,我的凭证助手是wincred,我们称它为主机mysite.com。我的大部分工作都是在同一网站上进行的,因此Windows凭据管理器显示的是保存的凭据https://myusername@mysite.com,而不是任何特定的路径。调用它,我输入:

>git credential-wincred get
protocol=https
host=mysite.com
Run Code Online (Sandbox Code Playgroud)

然后走出去:

username=myusername
password=mypassword
Run Code Online (Sandbox Code Playgroud)

我还可以将用户名添加到输入列表中,并输出相同的内容。如果我在输入中添加了任何路径,或者将主机替换为IP地址,则无法使用。

我的建议是查看是否可以使用git credential-foo <get|store|erase>语法而不是git credential <fill|approve|reject>,尽管它们看起来本质上是同一件事,只是名称略有不同。


要回答您更具体的问题:

我做错什么了?

假设我正确理解您正在尝试设置Git凭据,我想您想调用git credential approve而不是git credential fill,因为approve这实际上会将您输入的值发送到帮助程序进行存储,而fill试图填充您提供的数据中的漏洞(我认为;这里和其他地方的名称在Git中令人困惑。

正确的路径是什么?

我不确定,因为我的一种重叠用法没有路径,但是我建议srv/gitosis/repositories/Matlab.git,因为这是路径的隐含斜线。

主机名是什么?

我怀疑这里发生的是主机上以您的远程名称进行的简单字符串匹配,而不是对域的查找,因此建议host=10.10.10.102您使用这种情况。