【问题标题】:How can I save username and password in Git?如何在 Git 中保存用户名和密码?
【发布时间】:2021-12-07 10:53:09
【问题描述】:

我想在 Git ExtensionsSourcetree 或任何其他 Git GUI 中自动使用推送和拉取功能,而无需在提示中输入我的用户名和密码,每个时间。

那么如何在 Git 中保存我的凭据?

【问题讨论】:

标签: git credentials git-config git-extensions


【解决方案1】:

注意:此方法将凭据以纯文本保存在您的 PC 磁盘上。您计算机上的每个人都可以访问它,例如恶意 NPM 模块。

运行

git config --global credential.helper store

然后

git pull

提供用户名和密码,稍后将记住这些详细信息。凭据存储在磁盘上的文件中,具有“仅用户可读/可写”的磁盘权限,但仍以明文形式。

如果您想稍后更改密码

git pull

会失败,因为密码不正确,git然后从~/.git-credentials文件中删除有问题的用户+密码,所以现在重新运行

git pull

提供一个新密码,以便它像以前一样工作。

【讨论】:

  • 对于 Debian/Ubuntu 使用 libsecret stackoverflow.com/questions/36585496/…
  • 请注意,这会将您的用户名和密码存储在 ~/.git-credentials 的纯文本文件中。任何人都可以打开并阅读。
  • 如果你想忘记就用这个:git config --global credential.helper forget
  • 我认为值得指出的是,人们可能希望跳过--global 只存储一个存储库的密码(在拉取和推送时)而不是任何其他存储库(可能位于不同的主机,具有不同的凭据,人们可能出于某种原因不想存储)
  • @RoboAlex 的评论很受欢迎,但对~/.git-credentials 的保护与~/.ssh/id_rsa 之类的私钥没有什么不同。因此,如果您的私钥上没有密码,那么 ~/git-credentials 并不比 ssh 密钥差
【解决方案2】:

您可以使用git config 在 Git 中启用凭据存储。

git config --global credential.helper store

运行此命令时,第一次从远程存储库拉取或推送时,系统会询问您用户名和密码。

之后,为了与远程存储库进行后续通信,您无需提供用户名和密码。

存储格式为.git-credentials文件,以明文形式存储。

此外,您还可以为git config credential.helper 使用其他助手,即内存缓存:

git config credential.helper 'cache --timeout=<timeout>'

它采用可选的timeout parameter,确定凭据将在内存中保留多长时间。使用帮助程序,凭据将永远不会接触磁盘,并将在指定的超时后被擦除。 default 的值为 900 秒(15 分钟)


警告:如果您使用此方法,您的 Git 帐户密码将以 纯文本 格式保存,格式为 global .gitconfig file,例如在 Linux 中为 @987654330 @。

如果您不希望这样做,请为您的帐户使用 ssh key

【讨论】:

  • 希望您显示 .gitconfig 文件 - 第一个命令已被第二个命令覆盖 :(
  • 对于git config credential.helper cache,密码不会保存到文件中,只会存储在内存中。见:git-scm.com/docs/git-credential-cache
  • 不起作用。给出致命的:身份验证失败。甚至不要求输入密码。
  • 作为附录 - 您的私有 ssh 密钥也将以明文形式存储在用户可访问的位置,因此在这两种情况下本质上是相同的攻击面。
  • 这不会增加超时,请参阅下面的@Andreas Bigger 评论: git config --global credential.helper 'cache --timeout=3600'
【解决方案3】:

推荐的安全方法:SSH

创建一个 SSH GitHub 密钥。转到github.com设置SSH 和 GPG 密钥新的 SSH 密钥。现在将您的私钥保存到您的计算机上。

那么,如果私钥保存为~/.ssh/目录下的id_rsa,我们就这样添加验证:

ssh-add -K ~/.ssh/id_rsa

更安全的方法:缓存

我们可以使用git-credential-cache 来缓存我们的用户名和密码一段时间。只需在 CLI(终端或命令提示符)中输入以下内容:

git config --global credential.helper cache

您也可以这样设置超时时间(以秒为单位):

git config --global credential.helper 'cache --timeout=3600'

更不安全的方法

Git-credential-store 也可以使用,但它将密码保存在磁盘上的纯文本文件中:

git config credential.helper store

【讨论】:

  • 这对我不起作用,git clone 仍然要求输入用户名和密码
  • 我不建议这样存储您的密码,因为“git config --global -l”会在控制台上显示您的密码
  • 这对我不起作用。奇怪的是它应该适用于任何人,因为在 gitconfig 的规范中没有“密码”的空间
  • 如果你使用 SSH 方法,你需要开始使用 SSH URLs 而不是 git URLs - stackoverflow.com/questions/14762034/…
  • “更不安全的方法”。不得不不同意。这里有没有人意识到您的无密码私有 ssh 密钥(问题的重点是避免输入您的密码)以纯文本形式存储(默认情况下在 ~/.ssh/id_rsa,不比 ~/.git-credentials 更安全?还有 credential.helper 存储方法不会将密码/令牌放入 .gitconfig 同样由于 GitHub 等网站的怪癖,您可以比 SSH 公钥更精细地控制个人访问令牌的权限。所以对于那个特定情况,我会说 PAT凭证助手“更安全”
【解决方案4】:

打开凭证助手,以便 Git 将您的密码保存在内存中一段时间​​:

在终端中,输入以下内容:

# Set Git to use the credential memory cache
git config --global credential.helper cache

默认情况下,Git 会将您的密码缓存 15 分钟。

要更改默认密码缓存超时,请输入以下内容:

# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'

来自GitHub Help

【讨论】:

  • 你是唯一一个建议全球版本的人,这很重要,因为每次我重新克隆 repo 时它都会毁了我
  • 如何将超时设置为无穷大?我再也不想输入密码了。
  • @Avamander 只需将cache 部分替换为store。因此,完整的命令将是:git config --global credential.helper store。请注意,这会将您的密码存储在一个开放文本文件中(可以说没有任何加密)。
  • @Casper 这不适用于多个帐户,不会像应有的那样根据电子邮件从商店中获取密码,而是使用列表中的第一个。
  • @Avamander hm.. 应该是这样还是可能是一个错误? --timeout 参数的最大值是多少?
【解决方案5】:

您可以编辑~/.gitconfig 文件以存储您的凭据

sudo nano ~/.gitconfig

应该已经有了

[user]
        email = your@email.com
        user = gitUSER

您应该在此文件的底部添加以下内容。

[credential]
        helper = store

我推荐这个选项的原因是因为它是全局的,如果在任何时候你需要删除你知道去哪里并改变它的选项。

仅在您的个人计算机中使用此选项。

然后当你拉 |克隆|输入你的Git密码,一般情况下,密码会以~/.git-credentials的格式保存

https://gituser:gitpassword@domain.xxx

其中 DOMAIN.XXX 可能是 github.com、bitbucket.org 或其他

the documentation

重启你的终端。

【讨论】:

  • 别忘了重启 git bash 窗口。只有当我这样做时,它才对我有用。
  • 不推荐的另一种选择是保留 [credential] 和 git-credentials 并将密码直接存储在 .gitconfig 中。手动或使用 git config ..
  • 重启意味着exec bash
  • 诚实的问题,为什么用户特定的文件需要 sudo?
【解决方案6】:

只需将您的凭据放在 URL 中,如下所示:

https://Username`**:**`Password`**@**`github.com/myRepoDir/myRepo.git`

您可以像这样存储它:

git remote add myrepo https://Userna...

...使用的示例:

git push myrepo master`

现在是列出 URL 别名:

git remote -v

...以及删除其中一个的命令:

git remote rm myrepo

【讨论】:

  • 你也可以在 URL 之外留下你的密码,这样 Git 会询问你的密码,而不是你的用户名。
  • 使用 SSH 代替 HTTP 非常简单和安全。所以,你可以保密你的 Git 密码,只使​​用你的 SSH-Key。 Git 上 SSH 的相关信息:help.github.com/en/enterprise/2.16/user/…git@github.com:Username/myRepo.git
  • 在 url 中包含密码会将其保存到终端的历史记录中,因此这种方式不是很安全。
  • 请注意,目前只能通过 https 克隆 Wiki,而不能通过 ssh 克隆,因此这样的解决方案在那里很有用。另请注意,您可以使用 oauth-token,它比您的 GitHub 密码更安全。
  • 使用 windows 凭据管理器,windows 提示输入密码!
【解决方案7】:

在浏览了 几十个 Stack Overflow 帖子、博客等之后,我尝试了 每一种 方法,这就是我想出的。它涵盖了一切

The vanilla DevOps Git credentials & private packages cheat sheet

这些是您可以安全地验证 Git 以克隆存储库的所有方法和工具无需交互式密码提示

  • SSH 公钥
    • SSH_ASKPASS
  • API 访问令牌
    • GIT_ASKPASS
    • .gitconfig 代替
    • .gitconfig [凭据]
    • .git-credentials
    • .netrc
  • 私人包(免费)
  • Node.js/npm package.json
  • Python / pip / eggs requirements.txt
  • RubygemsGemfile
  • Gogo.mod

银弹

想要 Just Works™?这是灵丹妙药。

获取您的访问令牌(如果您需要 GitHub 或 Gitea 说明,请参阅备忘单中的部分)并将其设置在环境变量中(用于本地开发和部署):

MY_GIT_TOKEN=xxxxxxxxxxxxxxxx

对于 GitHub,复制并运行这些行逐字逐句

git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"

恭喜。现在任何克隆 Git 存储库的自动化工具都不会受到密码提示的阻碍,无论是使用 HTTPS 还是任何一种 SSH URL 样式。

不使用 GitHub?

对于其他平台(Gitea、GitHub 和 Bitbucket),只需更改 URL。不要更改用户名(尽管是任意的,但不同的配置条目需要它们)。

兼容性

这适用于 macOS、Linux、Windows(在 Bash 中)、Docker、CircleCI、Heroku、Akkeris 等本地。

更多信息

请参阅备忘单的“.gitconfig insteadOf”部分。

安全

请参阅备忘单的“安全”部分。

【讨论】:

  • 我所追求的是git config --global credential."https://somegithost.com".username MyUserName,它在您的备忘单in 中,但在此答案线程中的其他任何地方都没有。该特定解决方案没有回答 OP 的问题,但它回答了我的问题,所以谢谢!
  • 最后:关于在没有 Jenkins 凭据帮助程序或 Vault 的管道中非交互式全局使用 API 访问令牌的文档。
  • 这不仅不起作用,而且现在我根本无法提交到 Git :-(
  • @robcarver 它有效。但是,您可能没有正确的访问令牌,或者可能使用了错误类型的引号或外壳(例如,如果您在 Windows 上)。您可以编辑 ~/.gitconfig 或 .git/config 并删除配置。
  • @MaxN 是一样的。每个服务只有一组配置选项 - 因此 github 不仅有 3 个,而且 gitea 有 3 个,gitlab 有 3 个,bitbucket 有 3 个,等等。
【解决方案8】:

对于全局设置,打开终端(从任何地方),运行以下命令:

  git config --global user.name "your username"
  git config --global user.password "your password"

这样,您机器上的任何本地 Git 存储库都将使用该信息。

您可以通过以下方式为每个存储库单独配置:

  • 在存储库文件夹中打开终端。

  • 运行以下命令:

      git config user.name "your username"
      git config user.password "your password"
    

它只影响那个文件夹(因为你的配置是本地的)。

【讨论】:

  • 在任何人都可以查看的简单配置文件中拥有这样的凭据不是很危险吗?
  • 您的问题应该是针对另一个主题的。这里我们讨论一下如何为git全局和本地配置名称和密码。
  • 我想补充一点,询问答案的可能安全问题在这里占有一席之地,因为它直接影响其质量,并可能影响成千上万的用户实施它。
  • 对我不起作用,添加了--local 标签但又没有任何反应
  • 我认为@bool3max 的问题是一个公平的问题。不过没有人真正回答。 git config --global 仍然只能由用户访问,在 ~/.gitconfig,所以从这个意义上说,它可能并不比你的主目录中的私有 ssh 密钥(没有密码保护)差,或者像 ~/.aws/config 之类的东西对于 aws cli .如果您使用--system 进行 git config 它将可供您计算机上的所有用户使用,因此最好不要这样做,也不需要这样做,尽管它仍然仅限于您计算机上的其他用户。
【解决方案9】:

我认为缓存凭据更安全,而不是永远存储:

git config --global credential.helper 'cache --timeout=10800'

现在您可以输入您的用户名和密码(git pull 或 ...),然后在接下来的三个小时内继续使用 Git。

很好,很安全。

超时单位是秒(本例中为三小时)。

【讨论】:

  • 语法无效,引号必须围绕'cache --timeout='
  • @fmigneault 这是在 Ubuntu 终端和最新版本的 Git 上为我工作的该命令的精确副本。你用的是什么软件?
  • 我正在使用带有 zsh 的 Ubuntu 20.04。当我按照原帖运行命令时,似乎只有'cache' 部分被解释为要设置的credentials.helper 的值,而--timeout 被解释为git config 的另一个选项,这会导致语法错误。老实说,考虑到通常如何解析命令选项,这是有道理的。在引号中使用'cache --timeout=&lt;secs&gt;' 可以明确表明整个事情必须是credential.helper 下的设定值,而且他的便携性更高。没有空间解释如何阅读--timemout 部分。
  • @fmigneault 我再次检查了git config --global -e,正如沃尔特·怀特所说,“你说得对!” :)。谢谢,我会编辑我的答案
【解决方案10】:

您可以使用 git-credential-store 将未加密的密码存储在磁盘上,仅受文件系统的权限保护。

示例

git config credential.helper store
git push http://example.com/repo.git

Username: <type your username>
Password: <type your password>

[Several days later]

git push http://example.com/repo.git

[Your credentials are used automatically]

您可以检查存储在文件~/.git-credentials 中的凭据。

欲了解更多信息,请访问git-credential-store - Helper to store credentials on disk

【讨论】:

    【解决方案11】:

    除了编辑~/.gitconfig 文件之外,如果你从命令行调用,你可以这样做:

    git config --local --edit
    

    git config --global --edit
    

    在默认文本编辑器中编辑 git 配置文件

    也可以使用命令行直接编辑git配置文件(不用编辑器)

    git config --local user.name 'your username'
    git config --local user.password 'your password'
    

    git config --global user.name 'your username'
    git config --global user.password 'your password'
    

    请注意始终使用引号。如果您使用双引号,您的用户名和密码可能会使用一些字符会破坏您的密码。

    --local--global 表示为项目或操作系统用户保存配置参数。

    【讨论】:

    • 查看这个one,它解释得更多。
    • 你确定单引号可以在 Windows 上工作,而不是在 WSL 内?
    • 我通常在 Windows PowerShell 中做事,而这个单引号在 Windows 上工作(没有 WSL)。
    • 什么是“操作系统用户”?您是指“操作系统用户” 吗? (操作系统 = 操作系统)。如果是这样,那是什么意思?或者是其他东西?能改一下吗?
    • 第一句话几乎无法理解。请问可以rephrase吗? (但没有“编辑:”、“更新:”或类似的 - 答案应该看起来好像是今天写的。)
    【解决方案12】:

    如果您使用 SSH 身份验证比用户名/密码身份验证更安全。

    如果您使用的是 Mac,则 SSH 客户端身份验证已集成到 macOS 钥匙串中。创建 SSH 密钥后,在终端中输入:

    ssh-add -K ~/.ssh/id_rsa
    

    这会将 SSH 私钥添加到 macOS 钥匙串中。 Git 客户端在连接到远程服务器时将使用 SSH。只要您在服务器上注册了您的 ssh 公钥,就可以了。

    【讨论】:

    • 应该是 k 而不是 K?
    • 仅供参考:我正在使用 Mac。话虽如此,来自“man”信息:“-k” 当将密钥加载到代理中或从代理中删除密钥时,仅处理普通私钥并跳过证书。 “-K” 添加身份时,每个密码短语也将存储在用户的钥匙串中。使用 -d 删除身份时,将从中删除每个密码。
    • 我认为这不适用于基于 https 的存储库。
    • 这个答案似乎将密码(HTTPS repos)与 SSH 私钥混淆了。
    • 我不同意。通过为主机提供SSH 访问权限,您再安全不过了。使用 HTTP 身份验证,窃取凭据的人只能访问GitHub/GitLab。令牌也被设计为具有有限的寿命。
    【解决方案13】:

    将用户名和密码存储在 .git-credentials 中

    .git-credentials 是您运行git config --global credential.helper store 时存储您的用户名和密码(访问令牌)的位置,这是其他答案所建议的,然后输入您的用户名和密码或访问令牌:

    https://${username_or_access_token}:${password_or_access_token}@github.com
    

    所以,为了保存用户名和密码(访问令牌):

    git config —-global credential.helper store
    echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials
    

    这对于 GitHub 机器人非常有用,例如解决Chain automated builds in the same Docker Hub repository的问题,方法是为不同的分支设置规则,然后通过在 Docker Hub 中的 post_push 钩子中推送它来触发它。

    可以在 StackOverflow 上看到 here 的一个示例。

    【讨论】:

    • 谢谢,你是生命的救星!我们也可以设置 https://${access_token}:${access_token}@github.com
    • @LucasMendesMotaDaFonseca 访问令牌可以用作用户名???
    • @PeterMortensen 绝对不是,现在用'hook'代替了。
    • 是否也在使用 bitBucket?
    • @SL5net 我认为这应该适用于任何网站。但是,bitbucket 需要使用 2FA(我启用)的用户使用 ssh 密钥进行克隆,所以我无法对其进行测试。
    【解决方案14】:

    以前的答案都不适合我。每次我想fetchpull 时,我都会收到以下信息:

    Enter passphrase for key '/Users/myusername/.ssh/id_rsa':


    适用于 Mac

    我可以通过以下方式阻止它询问我的密码:

    1. 通过运行打开配置:vi ~/.ssh/config
    2. 添加了以下内容:UseKeychain yes
    3. 保存并退出:按Esc,然后输入:wq!

    适用于 Windows

    我能够使用此 Stack Exchange 帖子中的信息使其工作: How to avoid being asked passphrase each time I push to Bitbucket

    【讨论】:

    • 那是因为您使用的是 SSH 协议(其他答案使用 HTTPS)。
    【解决方案15】:

    在这种情况下,您需要 git credential helper 来告诉 Git 使用以下命令行记住您的 GitHub 密码和用户名:

    git config --global credential.helper wincred
    

    如果您使用的是使用 SSH 密钥的存储库,那么您需要 SSH 密钥来进行身份验证。

    【讨论】:

    【解决方案16】:

    随便用

    git config --global credential.helper store
    

    然后执行 git pull。它将要求输入用户名和密码。从现在开始,它不会提供任何输入用户名和密码的提示。它将存储详细信息。

    【讨论】:

    【解决方案17】:

    查看官方 Git 文档:

    如果您使用 SSH 传输连接到远程,这是可能的 让您拥有没有密码的密钥,这使您可以 无需输入用户名和密码即可安全传输数据。 然而,这对于 HTTP 协议是不可能的——每个 连接需要用户名和密码。这变得更加困难 具有双因素身份验证的系统,其中您使用的令牌 密码是随机生成的,无法发音。

    幸运的是,Git 有一个凭证系统可以帮助解决这个问题。吉特 框中提供了一些选项:

    • 默认是根本不缓存。每一个连接都会提示你 为您的用户名和密码。

    • “缓存”模式将凭据在内存中保存一段时间 时间。没有一个密码曾经存储在磁盘上,而且它们是 15 分钟后从缓存中清除。

    • “存储”模式将凭据保存到磁盘上的纯文本文件中, 它们永不过期。这意味着在您更改密码之前 对于 Git 主机,您无需输入凭据 再次。这种方法的缺点是您的密码被存储 在主目录中的纯文件中以明文形式显示。

    • 如果您使用的是 Mac,Git 带有“osxkeychain”模式,该模式 将凭据缓存在附加到您的安全钥匙串中 系统帐号。此方法将凭据存储在磁盘上,并且它们 永不过期,但它们使用与存储相同的系统加密 HTTPS 证书和 Safari 自动填充。

    • 如果您使用的是 Windows,您可以安装一个名为“Git Windows 凭据管理器。”这类似于“osxkeychain” 上述帮助程序,但使用 Windows 凭据存储 控制敏感信息。它可以在 https://github.com/Microsoft/Git-Credential-Manager-for-Windows.

    您可以通过设置 Git 配置来选择其中一种方法 价值:

    git config --global credential.helper cache
    
    git config --global credential.helper store
    

    来自7.14 Git Tools - Credential Storage

    【讨论】:

      【解决方案18】:

      全局保存用户名和密码:

      git config --global user.name "fname lname"
      git config --global user.email "example@gmail.com"
      git config --global user.password "secret"
      

      获取特定设置,

      git config --global --get user.name
      git config --global --get user.email
      git config --global --get user.password
      

      获取所有 Git 设置:

      git config --list --show-origin
      

      【讨论】:

      • 我已经全局设置好了用户名、邮箱和密码,但是我在GitHub上推送代码时,每次都要求输入用户名和密码
      • 是的,有多个地方保存了 git 设置。也许在项目 .git 文件夹中,一些项目设置是默认设置并优先。
      【解决方案19】:

      来自comment by rofrol,在 Linux Ubuntu 上,来自 this answer,以下是在 Ubuntu 上的操作方法:

      sudo apt-get install libsecret-1-0 libsecret-1-dev
      cd /usr/share/doc/git/contrib/credential/libsecret
      sudo make
      git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
      

      其他一些发行版提供二进制文件,因此您不必构建它。

      在 OS X 中,它通常是“内置”的,默认模块添加了“osxkeychain”,因此您可以免费获得它。默认情况下,OS X 内置版本和自制版本都有它。

      【讨论】:

        【解决方案20】:

        如果您在 Windows 上使用 Git 凭据管理器...

        git config -l 应该显示:

        credential.helper=manager
        

        但是,如果系统没有提示您输入凭据,请按照以下步骤操作:

        1. 从开始菜单打开控制面板
        2. 选择用户帐户
        3. 在左侧菜单中选择管理您的凭据
        4. 删除与 Git 或 GitHub 相关的所有凭据

        如果您有代理并且您的 Git 服务器位于内部网络上,请确保您设置了 HTTP_PROXYHTTPS_PROXYNO_PROXY 环境变量。

        您还可以使用 git-gui 测试 Git fetch/push/pull,它链接到 C:\Users\&lt;username&gt;\AppData\Local\Programs\Git\mingw64\libexec\git-core 中的凭据管理器二进制文件

        【讨论】:

          【解决方案21】:

          在完整阅读答案并尝试了这个问题的大部分答案后,我最终找到了适合我的程序。我想分享它,以防有人必须处理复杂的用例,但仍然不想像我一样浏览所有答案和 gitcredentialsgitcredentials-store 等手册页。

          在下面找到我建议如果您(像我一样)必须使用几种不同的用户名/密码组合处理来自多个提供商(GitLab、GitHub、Bitbucket 等)的多个存储库的过程。如果您只有一个帐户可以使用,那么您最好使用git config --global credential.helper storegit config --global user.name "your username" 等解决方案,这些解决方案已在之前的答案中得到很好的解释。

          我的解决方案:

          1. 取消设置全局凭据帮助程序,以防之前的一些实验遇到问题 :)

            git config --global --unset credentials.helper
            
          2. 移动到你的 repo 的根目录并禁用本地凭证助手(如果需要)

            cd /path/to/my/repo
            git config --unset credential.helper`
            
          3. 创建一个文件来存储你的 repo 的凭据

            git config credential.helper 'store --file ~/.git_repo_credentials'
            

            注意:此命令会在您的主目录中创建一个名为“.git_repo_credentials”的新文件,Git 会在其中存储您的凭据。如果不指定文件名,Git 使用默认的“.git_credentials”。在这种情况下,只需发出以下命令即可:

            git config credential.helper store
            
          4. 设置你的用户名

            git config credential.*.username my_user_name
            

            注意:如果您的存储库来自同一提供商(例如 GitLab),通常可以使用“*”。相反,如果您的存储库由不同的提供商托管,那么我建议为每个存储库显式设置指向提供商的链接,如下例所示(对于 GitLab):

            git config credential.https://gitlab.com.username my_user_name
            

          此时,如果您发出需要您的凭据的命令(例如git pull),您将被要求输入与“my_user_name”对应的密码。这只需要一次,因为 git 将凭据存储到“.git_repo_credentials”并在后续访问时自动使用相同的数据。

          【讨论】:

          • 请注意,这里使用 * 我得到:“警告:url 没有方案:* 致命:无法解析凭据 url:*”。所以我必须指定“credential.github.com.username”。
          • (stackoverflow 评论将我上次评论中的 https://github... 替换为 github...
          【解决方案22】:

          对于 Windows 用户,请查看 .gitconfig 文件并检查已为凭据帮助程序配置的内容。如果你有以下...

          [凭证“helperselector”] 选择 = wincred

          您将在 Windows Credential Manager 中找到凭据。

          您可以在此处编辑凭据。

          注意:Wincred 已被弃用,请参阅...

          https://github.com/Microsoft/Git-Credential-Manager-for-Windows#notice-this-project-is-no-longer-being-maintained-warning

          因此,或者您可能希望重新配置 Git 以使用内置的 Git 凭据管理器...

          git config --global credential.helper manager
          

          【讨论】:

          • 我遇到了 manager-core helper 的问题,我的凭据每天都会消失 - 关于如何解决这个问题的任何线索?
          • 编辑是我正在寻找的答案,谢谢!
          • @Jonathan 与 Git for Windows 捆绑的凭据管理器最近更改了几次,因此最简单的选择是下载最新的 Windows 版 Git 并安装在顶部,然后在安装程序中选择凭据管理器。凭证管理器是一个单独的实用程序,您可以在 GitHub 上的 github.com/microsoft/Git-Credential-Manager-Core 上看到它,但最好让 Git for Windows 安装程序安装它,这样您就知道您有版本兼容性
          • 链接已损坏 (404)。
          【解决方案23】:

          GitHub 推荐现在变了,最好的方法也是最简单的。 Details here

          1. Install Github official cli。例如。对于 mac:brew install gh
          2. 在终端中输入gh auth login,然后按照提示操作。

          【讨论】:

            【解决方案24】:

            如果 git 客户端不关心安全性,请以这种方式编辑 url:

            git remote set-url origin https://${access_token}@github.com/${someone}/${somerepo}.git
            

            我个人不赞成 git configglobal 域,因为这会扰乱我的业务和社区设置。

            【讨论】:

              【解决方案25】:

              对于 Windows 用户,这种方式可行:

              注意:如果你为 GitHub 启用了two-factor authentication,请暂时禁用它

              • 第一步

                转到控制面板用户帐户凭据管理器Windows 凭据

              • 第 2 步

                转到通用凭据部分 → 添加通用凭据

              • 第 3 步 - 填写字段

                Internet或网络地址:git.https://github.com

                用户名:你的 GitHub 用户名

                密码:你的 GitHub 用户名

                现在点击OK。这会将您的 GitHub 帐户的密码和用户名保存到您的本地计算机

              【讨论】:

                【解决方案26】:

                截至 2021 年,HTTPS 远程有一个用户友好的安全跨平台解决方案。无需再输入密码!不再有 SSH 密钥!不再有个人访问令牌!

                安装由 GitHub (downloads) 开发的Git Credential Manager。它支持对 GitHub、BitBucket、Azure 和 GitLab 的无密码浏览器内 OAuth 身份验证。这意味着您可以启用two-factor authentication on GitHub 和其他平台,大大提高您的帐户的安全性。

                当您推送时,您可以选择身份验证方法:

                > git push
                Select an authentication method for 'https://github.com/':
                  1. Web browser (default)
                  2. Device code
                  3. Personal access token
                option (enter for default): 1
                info: please complete authentication in your browser...
                

                在 Linux 上,需要一点设置。以下将凭据在内存中缓存 20 小时,因此您每天最多必须进行一次身份验证。

                git-credential-manager-core configure
                git config --global credential.credentialStore cache
                git config --global credential.cacheoptions=--timeout 72000
                

                熟悉 gnome-keyring 或 KWallet 的高级用户可能更喜欢 change the credential store 而不是 libsecret。

                化妆品配置docs):

                1. 更喜欢在终端而不是在 GUI 中选择身份验证方法(点击次数较少)
                2. 始终使用浏览器方法,而不是每次都被询问(甚至更少的按键)
                git config --global credential.guiPrompt false
                git config --global credential.gitHubAuthModes browser
                

                授权 GCM 访问你的 GitHub 帐户的屏幕截图(仅第一次看到):

                后续身份验证的

                屏幕截图(每天查看一次)。无需点击。

                【讨论】:

                  【解决方案27】:
                  git config --global user.name "your username"
                  git config --global user.password "your password"
                  

                  检查

                  git config --list
                  

                  【讨论】:

                  • 请注意this answer 声明这是一种不安全的做法。
                  • 什么是安全方式 请分享安全方式一些提示 Eric Aya
                  猜你喜欢
                  • 2021-11-07
                  • 2012-08-31
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多