要求可能很奇怪。但有时我真的需要这个功能。好的,这就是事情,我总是在代理之后工作。无论是在办公室我使用公司代理还是在家里我也使用VPN和代理(你知道,我在中国,所以我希望你能理解)。
通常我使用git协议来连接github远程存储库,但是我很难在git协议后面设置代理,所以我决定用以下命令切换回http
git remote set-url origin https://github.com/<username>/repo.git
git config http.proxy http://proxy:8080
它就像一个魅力。但是每当我连接到远程服务器时,git都会询问用户名和密码,例如拉/推。
我只有一个github帐户,我想保存一些打字,所以问题是如何避免每次我想要推送时输入github用户名。我可以接受输入我的密码,但我不想输入用户名。如何实现?
答案 0 :(得分:16)
您可以使用以下命令告诉git存储您的凭据:
git config --global credential.helper store
使用此方法,您只需输入用户名和密码一次,git将永远不再要求它。但请注意,您的密码将以明文存储,这在安全性方面不是很好。
您也可以选择缓存,这会在您在会话中输入一次密码后存储密码。
git config --global credential.helper cache
这更安全,因为您的密码不会存储在磁盘上 - 只是暂时存储在内存中。如果您对默认值不满意,可以自行设置超时:
git config --global credential.helper 'cache --timeout=600'
再一次,这并不总是理想的。
您应该使用的是ssh
协议来推送和提取数据。这将允许您使用私有ssh密钥对自己进行身份验证 - 这将由您的操作系统安装的密钥代理处理。这应该与代理一起使用而没有任何问题,所以你一定要试一试。
您可以通过设置远程网址进行设置,如下所示:
git remote set-url origin git@github.com:<username>/<project>.git
如果您正在使用其他托管服务,例如bitbucket,请更换&#34; github.com&#34;与您的提供商域名。
一旦这样做,您将需要设置公钥和私钥对,以便在github和您的计算机之间进行通信。有一个关于如何设置它的非常好的教程here。如果您使用的是Linux或MacOSX,则只需在运行命令ssh-keygen
时按照步骤操作。
之后,您可以获取SSH代理来存储您的密码,这通常更安全。 SSH代理通常要求您在打开计算机后输入密码一次 - 但之后它应该自动为您完成所有操作。密码以这种方式安全存储,与第一种以纯文本存储密码的解决方案不同。
您使用的SSH代理程序取决于您的操作系统,但它不应该很难设置。对于大多数流行的Linux发行版,您不应该做任何事情,我在下面的评论中被告知您可以按如下方式设置Windows:
git config --global credential.helper wincred
我从未使用过MacOSX,所以我无法确定这是否会像在基于Ubuntu的发行版中一样自动设置。
答案 1 :(得分:5)
要完成Nevik comment,您可以更改现有仓库的网址:
git remote set-url origin https://<username>@github.com/<username>/repo.git
这将指定代理身份验证所需的用户名,您可以输入密码。
我个人使用%HOME%\_netrc.gpg
凭据帮助程序(git1)将所有不同的凭据(GitHub,BitBucket,...)存储在加密的~/.netrc.gpg
(Windows)或_netrc
(Unix)中.8.3+),而不是Michael&#39; answer中描述的内存缓存凭据帮助器。
详见&#34; Configure Git clients, like GitHub for Windows, to not ask for authentication&#34;。
区别在于:
另外,如果您激活GitHub two-factor authentication,则无法再使用常规GitGub密码,但您需要一个&#34;个人访问令牌&#34;,这是一个40长度的随机字符串。在加密文件中一劳永逸地存储它的另一个原因,而不是每次会话必须输入一次。
我刚才描述的是https网址,在我看来,它比ssh网址更容易管理,使用他们需要密码保护的公共/私有ssh密钥,和你需要在您的GitHub帐户上发布(每个工作站一个不同,因为您不应该重复使用ssh密钥)
答案 2 :(得分:4)
这是一个简单的解决方案 为了节省一些打字,你可以轻松地在git bash中使用以下步骤..
(1)创建远程存储库
git remote add origin https://{your_username}:{your_password}@github.com/{your_username}/repo.git
注意:如果您的密码包含'@'符号,请使用'%40'代替
(2)然后使用远程存储库执行任何操作
ex:- git push origin master