我正在GitHub上与一个仓库一起工作,每次尝试推送内容时,它都会询问我的GitHub用户名和密码。我不想这样做。

我尝试了在Git中设置您的电子邮件的说明,即设置Git变量github.user和github.token,但这没有任何区别。 。

我不明白为什么会这样。

评论

您需要缓存密码:help.github.com/articles/set-up-git#password-caching

@PiotrUsewicz旧链接不再起作用。新链接:docs.github.com/en/github/using-git / ...

#1 楼

您需要设置一个ssh代理,您只需要对它进行一次身份验证。在SO上查看此答案以获取方法。

评论


但是此解决方案适用于ssh系列短语。问题是git使用“ git push”,我认为它不会触发ssh-agent。 (我已经这样做了,所以我知道它不起作用。)

– picardo
2010-10-14 18:27

@picardo:我已经做到了,它的确起作用了。

–丹妮丝
2010-10-14 19:44

#2 楼

今天遇到了类似的问题:我把工作副本弄乱了,所以我决定重命名目录,然后再次从github克隆我的项目。但是这样做之后,我必须输入密码来执行任何拉/推请求,而不是像过去那样只输入一次密码。

那是因为今天我使用https协议进行克隆该项目!要检查您正在使用的协议,只需运行

git config -l


,然后查看以“ remote.origin.url”开头的行。

要切换协议:

git config remote.origin.url git@github.com:the_repository_username/your_project.git


the_repository_usernameyour_project应该替换为适当的存储库名称和该存储库的所有者。如果您拥有存储库,则用户名将为您的用户名,否则为存储库所有者的用户名。

评论


它为我工作。一件事是url不包含我的用户名,而是包含我在github上显示的回购地址:git@github.com:some-user / repo-name.git

– B七
2012-2-15在7:04

注意:Google带我来了这里。我将remote.origin.url设置为https方法,甚至没有注意到有https vs ssh方法。该URL帮助我看到了明显的内容:help.github.com/articles/…

–克里斯K
2012年6月17日下午3:31

有没有办法通过密码输入呢?

– zishe
2012年7月30日在20:58

对那些了解git的人有什么疑问:上面使用的git config remote.origin.url ...与git remote set-url origin ...之间有什么区别(或偏好)?

–达里恩
2013年1月9日18:47

我不知道如何删除这样的错误来源。答案是:git remote rm origin

–Vacilando
2013年4月7日14:56



#3 楼

如果您使用的是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




评论


我的用户名本身包含@,对我不起作用。

–coding_idiot
2014年8月20日下午4:08

但是,如果没有(您不需要使用电子邮件),它就可以完美运行!谢谢。

–基拉
2014年10月16日19:33

如果您的用户名包含@,则需要对其进行URL编码。 meyerweb.com/eric/tools/dencoder

– Tim Bodeit
14-10-22在7:23

出于安全原因,您应该省略密码。

– zygimantus
2015年12月26日在17:14

注意,密码将以纯文本格式存储在.git / config文件中!

– Amro
16年1月13日在13:07

#4 楼

我更喜欢使用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


来源:

http://git-scm.com/docs/git-credential-cache

http://git-scm.com/docs/ git-config

#5 楼

为github设置ssh密钥时,如果不是默认密钥,则需要在~/.ssh/config中添加一个部分

Host *github.com
    User git
    IdentityFile ~/.ssh/github_id_rsa


#6 楼

另外,如果希望每次都提示您输入密码,但又不想输入用户名,则可以将远程服务器配置为使用用户名的HTTPS。像这样..

git config remote.origin.url https://USERNAME@github.com/repo_owner/repo_name


此后,每次都会提示您输入密码,但不会提示您输入用户名。

这是我喜欢的方式,因为我喜欢在与世界分享之前被迫输入github密码。

#7 楼

如果您在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.


然后下次输入您的姓名和密码,它将为您记住它们。

评论


谢谢。该项目已重命名为Windows的Git-Credential-Manager-for。

– Michael S.
16年5月11日在15:16

#8 楼

如果您使用的是2因子身份验证,则情况会有所不同。由于在其他地方找不到很好的答案,因此我在这里贴上一个,以便以后可以找到它。

如果您使用的是2因子身份验证,则可以指定用户名/密码事件活动-您的访问被拒绝。但是您可以使用应用程序访问令牌,并使用git的凭据帮助器为您缓存该令牌。以下是相关的链接:



设置命令行以使用2因子身份验证(搜索标题为“如何对命令行Git起作用的部分” ?“)
凭据缓存

我不记得我在哪里看到了,但是当您被问到您的用户名时-那就是您粘贴应用程序访问令牌的地方。然后将密码留空。在我的Mac上工作。

#9 楼

使用SSH

要防止GitHub在推送时询问密码,理想情况下,您应该使用SSH(git@github.com:...)而不是HTTPS URL(https://github.com/...),并将SSH密钥添加到GitHub帐户。请参阅:我应该使用哪个远程URL?



凭据帮助程序

否则,如果您确实需要使用HTTPS,则可以缓存GitHub Git中的密码,您应该使用凭据助手来告诉Git每次与GitHub对话时都记住您的GitHub用户名和密码。


Mac:git config --global credential.helper osxkeychain(需要osxkeychain helper),
Windows:git config --global credential.helper wincred

Linux和其他操作系统:git config --global credential.helper cache


.netrc

另一种方法是在以下位置使用配置用户名/密码~/.netrc(在Windows上为_netrc),例如

machine github.com
login USERNAME
password PASSWORD


OAuth

使用OAuth令牌(个人API令牌)推送更改,例如

git push https://4UTHT0KEN@github.com/foo/bar



相关:


在GitHub上使用https://时是否可以跳过密码输入?
如何在终端钥匙串中在Linux上存储您的GitHub https密码?
配置Git客户端(例如Windows的GitHub)以不要求身份验证


#10 楼

另外,如果您使用的是Windows,则可以使用:

$ git config --global credential.helper wincred


您只需要再登录一次,然后git就会记住。

#11 楼

询问用户名对我来说很烦人,但是询问密码很好,因为它可以确保您确实希望公开所做的更改...

所以我只需将其添加到我的“ .gitconfig”

[url "https://myusername@github.com"]
    insteadOf = https://github.com


#12 楼

如果您在Windows上,请使用Windows版Git Credential Manager。

该项目包括:

在Windows Credential Store中保护密码存储
多因素身份验证对Visual Studio Team Services的支持
对GitHub的两因素身份验证支持
对Visual Studio Team Services和GitHub的个人访问令牌的生成和使用支持
对Visual Studio Team Services的非交互模式支持通过Azure目录
Team Foundation Server的Kerberos身份验证
用于构建代理优化的可选设置


只需下载最新版本并安装它。

如何使用
不用。当需要凭据时,它神奇地起作用。


#13 楼

这对我有用。
使用以下语法执行命令。
git config remote.origin.url https://<<username>>@<<.git url>>