问题描述
目前,每当我 git pull
或 git push
到 http(s) 存储库时,我都会得到以下信息:
$ git pull
Username for 'https://gitrepos.reposdomain.com': [email protected]
Password for 'https://[email protected]@gitrepos.reposdomain.com':
这对于不经常使用来说还可以,但很快就会变得非常烦人。不幸的是,在这种情况下不能选择切换到 ssh。
我读到过,早期版本的 git
提供了凭据 “store” 和 “cache”,但不建议这样做,因为它以明文形式存储密码。
但
较新版本的 git
显然将 git 凭据存储在 gnome-keyring
中,但必须正确设置。
我已经尝试遵循 SO 上的其他(非 Ubuntu)答案来使其正常工作(即 this one ),但我仍然看到用户名和密码提示。
存储 http(s) 存储库的 git
凭据的正确且最安全的方法是什么?如何使它们在 Ubuntu 上工作?
最佳答案
git-credential-gnome-keyring
现已弃用。
相反,请使用 libsecret 。如果您的计算机上尚未预安装它,请使用以下过程:
-
确保已安装
libsecret
及其开发库:\n
sudo apt install libsecret-1-0 libsecret-1-dev\n
\n
-
然后从 libsecret 开发库附带的源代码构建凭证助手:
\n
sudo make --directory=/usr/share/doc/git/contrib/credential/libsecret\n
\n
-
最后,将新编译的二进制文件注册为 Git credential helper :
\n
git config --global credential.helper \\\n /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret\n
\n
有关 https://stackoverflow.com/a/40312117/2017781 的更多详细信息
次佳答案
您需要使用 Gnome 密钥环设置 git credential helper
:
安装并编译 Gnome Keyring 开发:
sudo apt-get install libgnome-keyring-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring
并设置凭据:
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
第三种答案
这个简单的方法似乎在我的 Ubuntu 18.04.1 和 git 2.17.1 上就足够了:
git config --global credential.helper cache
您可以指定一小时(= 3600 秒)超时,如下所示:
git config --global credential.helper 'cache --timeout=3600'
进一步阅读 the fine manual 。