我有一个用于构建 Android 应用程序的构建服务器的自动构建脚本。作为此构建过程的一部分,我需要从存储库中提取当前源代码以进行发布,并在构建过程结束时发出推送命令,以使用构建服务器在构建过程中更改的文件更新存储库。
因此我必须构建以下 bash 脚本:
#!/bin/bash
clear
echo "Start of Pull command"
git pull
echo "End of Pull command"
echo "Start of incrementedRelease build"
gradle incrementedRelease
echo "End of incrementedRelease build"
echo "Start of Commit command"
git commit -a -m "======================== Commit to change Manifest Version ======================"
echo "End of Commit command"
echo "Start of Push command"
git push
echo "End of Push command"
git push
问题出在和命令中git pull
,git 提示我输入密码。
现在我尝试运行此命令来创建密码存储,然后输入 git 的密码。
sudo git config --global credential.helper store
无论有没有该sudo
命令,但下次运行脚本时它仍然会提示我输入密码。
有人能告诉我如何存储 git 密码吗,这样我就不会在每次执行 pull 或 push 命令时都被提示?最好从文件中获取它,而不要使用 ssh,因为我无权访问 git 服务器来在那里生成密钥。
更新: 这是我在用户主文件夹中的文件夹:
提前致谢。
答案1
credential.helper
将配置选项设置为store
肯定可以满足您的要求。您仍然需要至少输入一次您的用户名和密码为了git-凭证存储将其存储在文件中(~/.git-credentials
默认),但之后您不再需要这样做。
请注意,存储您的凭据的文件不会被加密,任何设法读取该文件的人都会获得用户对存储库的权限,因此设置一个只读用户特别是对于这一点,而不是全局设置credential.helper
配置选项store
。
如果你使用 Web 界面访问你的存储库(Github,Bitbucket,GitLab等),你也许还可以(在我看来,这是首选)建立一个SSH 部署密钥通过存储库设置提供安全的只读访问。
答案2
假设你使用的是Linux:本教程描述如何在不输入密码的情况下建立与远程服务器的 ssh 连接。
如果您按照这些步骤操作,git 将不再要求您提供凭据。
此外,您将能够从命令行通过 ssh 连接到您的服务器,无需密码。