每当我按下时,Git都会要求输入用户名


675

每当我尝试将其插入仓库时,git都要求两者username & password

每次重新输入密码都没有问题,但是问题在于输入用户名。我https用来克隆我的仓库。

因此,我该如何配置git,以便它不会username在每一个上都要求git push

我是Linux的新手,但Windows中的IIRC git push仅要求输入密码。



@Wug:但是我不想存储密码。我只想存储用户名。
RanRag

4
请尝试遵循这些指示并省略密码行。
乌格2012年


还有的超级用户回答您最初的问题- superuser.com/questions/847181/...
DK14

Answers:


975

编辑(由主持人和评论建议使用@ dk14)

警告:如果credential.helper store从答案中使用密码,您的密码将完全不加密(“原样”)存储在~/.git-credentials。请查阅下面的评论部分或“链接的”部分的答案,尤其是如果您的雇主对安全问题的容忍度为零。

即使被接受,它也不能回答实际OP关于仅省略用户名(而不是密码)的问题。对于有确切问题的读者,@ grawity的答案可能会派上用场。


原始答案(@Alexander Zhu):

您可以使用以下命令存储凭据

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

我也建议你读
$ git help credentials


160
警告,此方法没有安全性。您的密码以明文形式存储。
马克·拉卡塔

13
你可以找到更好的方法,在这里实现安全- stackoverflow.com/a/28104587/1809978
DK14

4
@MarkLakata-请告诉我如何在此答案中撤消命令?撤消它之后,我将使用一种安全的方法来存储凭据。
MasterJoe2 '16

25
@ testerjoe2试试git config --unset credential.helper
dk14

1
不要忘记设置超时,默认值为15分钟-将值设置为3000万,大约1年。在这里找到:stackoverflow.com/a/35942890/1579667
Benj

180

您可以在 .git/config本地存储库文件中。该文件包含一个名为“ remote”的部分,以及一个名为“ url”的条目。“ URL”条目应包含您正在谈论的存储库的https链接。

当您在主机名“ url”前添加用户名时,就git不再需要用户名了。这是一个例子:

url = https://username@repository-url.com

5
如果在用户名或密码中使用特殊字符,则应转义它们。有关正确的转义字符,请参见en.wikipedia.org/wiki/Percent-escape。例如,“!@#”(不带引号)将替换为“%21%40%23”。另请参见下面的“ Daniel Lerch”答案
nsof

1
在同一存储库上工作的其他人会看到我的用户名吗?
CodyBugstein 2015年

17
这应该是OP问题的正确答案,即“如何保留用户名,而不是密码”。此答案不仅是保留用户名的正确方法,而且还避免了的可能的安全风险git config credential.helper store
RayLuo

我很感谢这个答案,并尝试过这种方法,但是每次(v 2.1.4)仍然让我感到困惑-尝试使用name@gitlab.com和name%40mailaddress.com@gitlab.com的remoteurl-它总是要求username for https://gitlab.com:
eli

1
我尝试过并得到unable to access 'https://<me>@bitbucket.org:<x>/<y>.git/': Illegal port number
Ian Grainger

118

使用Git存储库进行永久身份验证

运行以下命令以启用凭据缓存:

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

使用时还应指定缓存过期

git config --global credential.helper "cache --timeout 7200"

启用凭据缓存后,它将缓存7200秒(2小时)


读取凭证文件

$ git help credentials

我将超时设置为7200。但是后来我想将其设置为5进行测试。因此我将其设置为5,但是当我尝试在30秒后再次按下时,却没有要求我输入用户名或密码。
Buttle Butkus,2016年

可能是您的凭据不在全球存储。
杰·帕特尔

关于安全性,值得参考文档:“此命令将凭据缓存在内存中,以供将来的Git程序使用。存储的凭据永远不会接触磁盘,并且在可配置的超时后会被忘记。” git-scm.com/docs/git-credential-cache
mloskot

2
那不是git config credntial.helper store负责将明文凭证存储在〜/ .git-credentials文件中的危险命令吗?我认为(根据我的经验)... cache ...-命令就足够了:git config --clogal credential.helper 'cache --timeout 7200'它创建了dir :,~/.git-credential-cache其中包含了缓存文件,因此,只需执行此命令,而不要执行“ ... store”-命令
eli

没为我工作。每次仍在询问密码
Ian Grainger

75

GitHub上的本文所述,添加新的SSH密钥。

如果Git仍然要求您提供用户名和密码,请尝试更改https://github.com/git@github.com:远程URL:

$ git config remote.origin.url 
https://github.com/dir/repo.git

$ git config remote.origin.url "git@github.com:dir/repo.git"

19
这应该是正确的答案!保存凭证非常不安全。如果我有一个SSH密钥,那只是因为我没有此处概述的正确URL而询问我的凭据。
亚历克西斯·威尔克

2
或者您可以使用git config remote.origin.url "ssh://git@yourRepoHost/yourRepoName.git"
ndarkness,

1
git配置remote.origin.url git@gitlab.com:adammajewski / ray-backward-iteration.git
亚当(Adam)

1
谢谢,这是我一直在寻找的答案。
唐玉鹏

50

我找到的最简单的方法是使用以下命令:

git config --global credential.https://github.com.username <your_username>

这可以在每个站点的基础上工作,并修改您的全局git配置。

要查看更改,请使用:

git config --global --edit

1
由于某种原因,这是唯一对我有用的方法。谢谢!
mathetes

这种方法安全吗?github密码仅存储在本地计算机上而不被推送到github吗?
Akin Hwan '18

我不知道为什么这不是批准的答案,该命令可以完美地运行并且可以完全响应以下问题:存储用户名,而不是密码。谢谢本!
AmaelH

您也可以运行:[git config --global credential.helper'cache --timeout = 3600']因此,您的密码每次都会保存一个小时
obenda

31

如果您使用的是https而不是ssh,则可以.git/config按照user701648的说明编辑“ url” ,但如果需要,还可以添加密码:

url = https://username:password@repository-url.com

1
如果@我的密码中包含密码怎么办?url = https://username:abc@123@repository-url.com这给了我一个错误Could not resolve host: @123@git.com
拉胡尔·曼卡

username当服务器重定向(例如从FOO到FOO.git)时,该部分似乎被忽略。
米哈伊尔(Mikhail T.)

22

您可以通过在Git配置文件中放置以下内容来为给定站点上的所有存储库设置用户名。您需要将“ https://example.com ”和“ me”更改为实际的URL和实际的用户名。

[credential "https://example.com"]
    username = me

(这直接来自“ git帮助凭据”)


16

更改克隆的回购作品:

git remote set-url origin git@github.com:gitusername/projectname.git

使用缓存的凭据有效,并且设置超时时间可以减少烦人的事情。如果您使用Windows凭据帮助程序,那应该是最简单的方法(尤其是在SSH被阻止的情况下)。


这是GitHub的一个正确答案(说明该问题专门询问......(不知道为什么会得到downvoted)
蒂姆·格林菲尔德

12

确保您使用的是SSH而不是http。检查 SO答案。


3
但是我不得不使用,http因为在我的大学ssh中,系统管理员部门阻止了该工作。
RanRag

那么也许此链接会为您提供帮助。
gkris

现在有一个官方的GitHub帮助页面。对我来说,发生的事情是我在登录之前克隆了自己的存储库之一,因此它无法识别我,并且默认为HTTPS。help.github.com/articles/changing-a-remote-s-url
anon58192932

11

git config --global credential.helper缓存


1
在Linux上,这是一个更好的答案。
拉里

9

除了user701648的答案外,您还可以使用以下命令将凭据存储在主文件夹(对于所有项目都是全局文件夹)中,而不是项目文件夹中

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

9

当我只使用git pull时,git pull origin xxx,git要求输入用户名和密码。

git config credential.helper store

有用。


9

最简单的方法是创建~/.netrc具有以下内容的文件:

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(如此处所示:https : //gist.github.com/ahoward/2885020

您甚至可以关闭该文件的权限,以便没人输入以下内容来读取密码:

chmod 600 ~/.netrc

6

如果您使用的是SSH版本,则密码不会有任何问题。只有一次生成SSH密钥时,才告诉git, PC可以与 github帐户一起使用,并且永远不会再询问任何有关此PC的访问权限。

如何为Github生成SSH


4

为了避免输入用户名,但仍提示您输入密码,则只需克隆包含用户名的存储库即可:

git clone user_name@example.gitrepo.com/my_repo.git


3

ssh+ key authenticationhttps+ 更可靠credential.helper

您可以配置为对所有存储库使用SSH而不是HTTPS,如下所示:

git config --global url.ssh://git@github.com/.insteadOf https://github.com/

url.<base>.insteadOf记录在这里


2

快速方法

在工作目录中获取git的URL:

git config remote.origin.url

然后 :

git config credential.helper store

git push "url of your git"

最后一次询问用户名和密码

完成。


1

你可以跑

git config --global credential.helper wincred

在系统中安装并登录Windows的GIT之后。


在查询中没有看到Linux单词。我的坏人
赛朋克

1

(仅适用于Mac OS)

适用于WindowsLinux请参阅下面提到的Github文档链接。

来自Github文档:文档链接

在Git中缓存GitHub密码

  • 您需要Git 1.7.10或更高版本才能使用osxkeychain凭据帮助器。

    检查您的Git版本: git --version

  • 找出osxkeychain helper已经安装:

    git credential-osxkeychain

    如果您收到以下响应,则说明它已经安装并可以在Mac上使用:

    > Usage: git credential-osxkeychain <get|store|erase>

    如果没有收到如上所示的响应,则可以运行以下命令来安装它:

    git credential-osxkeychain

  • 告诉git在git凭证中全局使用osxkeychain:

    git config --global credential.helper osxkeychain

    在将凭据保存到钥匙串之前,它将提示一次。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.