我查看了有关为'git pull'配置用户名/密码的所有问题,但是当远程存储库为404时,没有解决问题。
我过去曾经gitub从github克隆了一个存储库。无论出于何种原因,存储库所有者已删除了repo,并且git pull失败。在它失败之前,git pull会询问用户名和密码。
这是因为我有一个克隆的github git repos目录,我正在尝试通过进入每个目录的shell脚本更新它们并执行'git pull'。
$ git pull
ksshaskpass: cannot connect to X server
error: unable to read askpass response from '/usr/lib/ssh/ssh-askpass'
Username for 'https://github.com':
ksshaskpass: cannot connect to X server
error: unable to read askpass response from '/usr/lib/ssh/ssh-askpass'
Password for 'https://github.com':
remote: Repository not found.
fatal: Authentication failed for 'https://github.com/[ ... ]
答案 0 :(得分:0)
我创建此脚本以在执行拉取之前测试URL。 更新时,我不会再收到提示输入用户名/密码的信息。
#!/bin/bash
find . -type f | egrep '\.git/config' | while read fn ; do \
dn=${fn%/.git/config}
url=$( git -C $dn remote show -n origin | awk '/Fetch URL: / { print $3 }' )
wiki=${url%.wiki.git}
if [ "$url" != "$wiki" ]; then
url="${wiki}/wiki"
fi
url=$( echo $url | sed -e 's/git:/https:/' )
wget -O /dev/null $url > /dev/null 2>&1
if [ 0 != $? ]; then
echo $dn $url
else
pushd $dn
git pull
popd
fi
done
答案 1 :(得分:0)
我发现自己处于类似情况,我的解决方案是通过以下方式为Git设置虚假的凭据提供程序:
export GIT_ASKPASS="/bin/true"
这会导致pull / clone立即失败,而不是提示输入用户名和密码。这有点像黑客,但我找不到任何其他简单的方法来阻止提示。
答案 2 :(得分:0)
就我而言,我在git fetch
期间遇到了针对GitHub上不存在的存储库的提示。
尽管输入和输出已通过管道传输,但这些提示仍然存在(很可能git
在内部尝试/dev/tty
)
我通过将core.askPass
配置为虚拟值来调整了命令(我选择了/bin/true
,它会退出零并且不产生任何输出)
这是我最后得到的命令:
git -c core.askPass=/bin/true fetch origin ...