我正在GitHub上的一个仓库上工作,每次尝试推送内容时,它都会要求我的GitHub用户名和密码。我不希望那样做。
我尝试了在Git中设置您的电子邮件的说明,即设置Git变量github.user和github.token,但这没有任何区别。
我不明白为什么会这样。
我正在GitHub上的一个仓库上工作,每次尝试推送内容时,它都会要求我的GitHub用户名和密码。我不希望那样做。
我尝试了在Git中设置您的电子邮件的说明,即设置Git变量github.user和github.token,但这没有任何区别。
我不明白为什么会这样。
Answers:
您需要设置一个ssh代理,您只需要对它进行一次身份验证。有关如何操作的信息,请参见SO的答案。
今天也遇到了类似的问题:我把工作副本弄乱了,所以我决定重命名目录,然后再次从github克隆我的项目。但是这样做之后,我必须输入密码来执行任何拉/推请求,而不是像过去那样只输入一次密码。
那是因为今天我使用https协议来克隆项目!要检查您使用的协议,只需运行
git config -l
并查看以“ remote.origin.url”开头的行。
切换协议:
git config remote.origin.url git@github.com:the_repository_username/your_project.git
the_repository_username
并your_project
应替换为适当的存储库名称和该存储库的所有者。如果您拥有存储库,则用户名将为您的用户名,否则为存储库所有者的用户名。
git@github.com:some-user/repo-name.git
remote.origin.url
设置为https方法,甚至没有注意到有https
vs ssh
方法。此URL帮助我看到了明显的内容:help.github.com/articles/…–
git config remote.origin.url ...
上面使用的vs. 之间有git remote set-url origin ...
什么区别(或偏好)?
git remote rm origin
如果您使用的是HTTPS而不是SSH,则可以按照以下步骤操作:
找到您的远程URL(remote.origin.url)
git config -l
感谢Sergio Morstabilini
您的远程URL将如下所示:https:// {USERNAME} @ github.com / {USERNAME} / {REPONAME} .git
执行以下命令:
git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
@
,对我不起作用。
.git/config
文件中!
我更喜欢使用HTTPS,我发现它比设置ssh密钥更容易,更安全。
使用HTTPS,您可以使用以下命令阻止git向github遥控器询问用户名:
git config --global url."https://yourusername@github.com".insteadOf "https://github.com"
而且您至少可以通过以下方式降低git要求输入密码的频率:
git config --global credential.helper 'cache --timeout=28800'
那里28800是8个小时。当我开始工作时,我仅使用此设置输入一次密码。
之后,您将在您的内部拥有这些条目 ~/.gitconfig
[url "https://yourusername@github.com"]
insteadOf = https://github.com
[credential]
helper = cache --timeout=28800
资源:
如果您在Windows上使用HTTPS,请尝试使用Git凭据存储 -它使用Windows凭据存储来保存您的名称和密码。
Windows Credential Store for Git
This application is a small helper app designed to follow the
git credentials API as defined by the Git Documentation.
Installation
1. Download the git-credential-winstore.exe application
2. Run it! If you have GIT in your PATH, it should just work.
然后,下次您输入名称和密码时,它将为您记住它们。
如果您使用的是2因子身份验证,则情况会有所不同。由于在其他地方找不到很好的答案,因此我在这里贴一个,以便以后再找到。
如果您使用的是2要素身份验证,则指定用户名/密码将无法正常工作-您将被拒绝访问。但是您可以使用应用程序访问令牌,并使用git的凭据帮助器为您缓存该令牌。以下是相关链接:
而且我不记得我在哪里看到的内容,但是当系统询问您输入用户名时,您就在这里粘贴应用程序访问令牌。然后将密码留空。在我的Mac上工作。
为了防止GitHub在推送时询问密码,理想情况下,您应该使用SSH(git@github.com:...
)而不是HTTPS URL(https://github.com/...
),并将SSH密钥添加到GitHub帐户中。请参阅:应该使用哪个远程URL?
否则,如果您确实需要使用HTTPS 在Git中缓存GitHub密码,则应该使用凭据助手来告诉Git每次与GitHub对话时都要记住您的GitHub用户名和密码。
git config --global credential.helper osxkeychain
(osxkeychain helper
需要)git config --global credential.helper wincred
git config --global credential.helper cache
.netrc
另一种方法是在~/.netrc
(_netrc
Windows上)中使用配置您的用户名/密码,例如
machine github.com
login USERNAME
password PASSWORD
git push https://4UTHT0KEN@github.com/foo/bar
有关:
如果您使用的是Windows,请使用适用于Windows的Git Credential Manager。
该项目包括:
- Windows凭据存储中的安全密码存储
- 对Visual Studio Team Services的多因素身份验证支持
- 对GitHub的两因素身份验证支持
- 针对Visual Studio Team Services和GitHub的个人访问令牌生成和使用支持
- 对Azure目录支持的Visual Studio Team Services的非交互模式支持
- Team Foundation Server的Kerberos身份验证
- 用于优化构建代理的可选设置
只需下载最新版本并安装。
如何使用
你不知道 当需要凭据时,它神奇地工作。