我想在gitextension中使用自动推拉,而不需要每次都在提示中输入我的用户和密码。
那么,我如何将我的凭证保存在Git中呢?
跑
git config credential.helper store
然后
git pull
提供用户名和密码,稍后将记住这些详细信息。凭证存储在磁盘上的一个文件中,磁盘权限为"仅用户可读/可写",但仍为纯文本。
如果以后要更改密码
git pull
将失败,因为它失败了,它从~/.git-credentials文件中删除有问题的用户+密码,所以现在运行
git pull
提供一个新密码,它将像以前一样工作。
-u标志对于以后更改密码有何重要意义?
对于debian/ubuntu,使用libsecret stackoverflow.com/questions/36585496/…
@卢西德布罗很抱歉回答得太晚。git pull-u不使用最新版本。我已经更新了答案。希望它能回答你的问题。
请注意,这将把您的用户名和密码存储在~/.git凭证处的纯文本文件中。任何人都可以打开并阅读。
这不管用。它不能拉。
编辑edited Oct 22 at 23:45没有意义。@罗杰帕克,你要运行git pull来更改密码吗?
好吧,fetch也可以,任何"re-requires"密码都可以做到:)
它只适用于一个存储库,即您当前所在的repo。如果我想和另一家回购公司合作,我需要再做一次。
@Shamsularefinsajib使用git config --global ...。
store是不安全的,如果我的机器被偷了?我注定……,应该是埃多克斯。
您可以使用git config在git中启用凭证存储。
git config --global credential.helper store
当运行这个命令时,当您第一次从远程存储库中拉或推时,您将被问及用户名和密码。
打开之后,对于与远程存储库的后续通信,您不必提供用户名和密码。
存储格式是以纯文本形式存储的.git-credentials文件。
此外,您还可以为git config credential.helper使用其他帮助程序,即内存缓存:
git config credential.helper cache
这需要一个可选的timeout parameter来决定它的执事应该运行多长时间,它的default值是900 seconds (15 minutes).值。
警告:如果使用此方法,您的Git帐户密码将以plaintext格式保存,以global .gitconfig file格式保存,例如在Linux中,它将是/home/[username]/.gitconfig格式。
如果您不希望这样做,请使用ssh key作为您的帐户。
希望您显示.gitconfig文件-第一个命令已被第二个命令覆盖:.(
打开凭据帮助器,以便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帮助
你是唯一一个建议全球版本的人,这很重要,因为每次我重新克隆回购协议时,它都会给我造成破坏。
如何将超时设置为无穷大?我再也不想输入密码了。
@阿瓦曼德只需将cache部分替换为store。所以,完全命令是:git config --global credential.helper store。请注意,这将把您的密码存储在一个打开的文本文件中(比如说,不加密)。
@casper如果不使用多个帐户,则不会像应该的那样根据电子邮件从存储中提取密码,而是使用列表中的第一个。
@阿瓦曼德尔这应该是那样的吗,还是可能是个虫子?--timeout参数的最大值是多少?
您可以这样设置用户名和密码:
git config --global user.name"your username"
git config --global user.password"your password"
这对我不起作用,Git Clone仍然要求输入用户名和密码。
我不建议这样存储您的密码,因为"git-config--global-l"会在控制台上显示您的密码。
您可以编辑~/.gitconfig文件来存储您的凭证。
sudo nano ~/.gitconfig
应该已经有了
[user]
email = [email protected]
user = gitUSER
您应该在这个文件的底部添加。
[credential]
helper = store
我推荐这个选项的原因是因为它是全局的,并且如果在任何时候您需要删除这个选项,那么您就知道该去哪里并更改它。
仅在个人计算机中使用此选项。
然后拉克隆输入您的git密码,一般情况下,密码将以~/.git-credentials格式保存。
https://GITUSER:[email protected]
其中domain.xxx可以是github.com bitback.org其他
参见文档重新启动终端。
别忘了重新启动GitBash窗口。只有当我这样做的时候,它才对我有效。
对于全局设置,打开终端(从任意位置)运行如下:
git config --global user.name"your username"
git config --global user.password"your password"
这样,您机器上的任何本地git repo都将使用该信息。
您可以通过执行以下操作为每个回购分别配置:
打开repo文件夹中的终端。
运行如下:
git config user.name"your username"
git config user.password"your password"
它只影响该文件夹(因为您的配置是本地的)。
您可以使用Git凭据存储将密码未加密存储在磁盘上,仅受文件系统权限保护。
例子
$ git config credential.helper store
$ git push http://example.com/repo.git
Username:
Password:
[several days later]
$ git push http://example.com/repo.git
[your credentials are used automatically]
您可以检查存储在文件~/.git-credentials中的凭证。
有关更多信息,请访问Git凭据存储-用于在磁盘上存储凭据的帮助程序
如果使用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,而不是https。因此,命令"ssh add"。对于HTTPS,这将是上面提到的解决方案"Git凭证osxkeychain"(在Mac上)。
我不同意。通过向主机授予SSH访问权,您不能更安全。使用HTTP认证,窃取凭证的人只能访问GitHub/GitLab。此外,代币的设计寿命有限。
在这种情况下,您需要使用以下命令行让Git记住您的GitHub密码和用户名:
git config --global credential.helper wincred
如果您使用的是使用ssh密钥的repo,那么您需要ssh密钥进行身份验证。
只需在URL中输入您的凭据,如下所示:
https://Username:[email protected]/myRepoDir/myRepo.git
您可以这样存储:
git remote add myrepo https://Userna...
…使用它的示例:
git push myrepo master
现在要列出URL别名:
git remote -v
…删除其中一个的命令:
git remote rm myrepo
你也可以把你的密码放在URL之外,这样Git会要求你输入密码,而不是你的用户名。
除了编辑~/.gitconfig文件。
注意要始终使用单引号:
git config --global user.name 'your username'
git config --global user.password 'your password'
如果使用双引号,用户名和密码可能会使用一些字符来破坏密码。