我想在 GitExtension 中自动使用推送和拉取,而不是每次都在提示符中输入我的用户和密码。
那么如何在 GIT 中保存我的凭据?
答案 0 :(得分:1072)
运行
git pull
然后
git pull
提供用户名和密码,稍后将记住这些详细信息。凭证存储在磁盘上的文件中,磁盘权限为"只是用户可读/可写"但仍然是明文。
如果您想稍后更改密码
~/.git-credentials
将失败,因为密码不正确,git然后从git pull
文件中删除有问题的用户+密码,所以现在重新运行
function my_function()
{
}
function my_function
{
}
my_function()
{
}
提供新密码,以便作为收件人使用。
答案 1 :(得分:186)
您可以使用git config
在git中启用凭据存储。
git config --global credential.helper store
运行此命令时,第一次从远程存储库中提取或推送时,系统会询问您的用户名和密码。
之后,为了与远程存储库进行后续通信,您不必提供用户名和密码。
存储格式是.git-credentials
文件,以纯文本格式存储。
此外,您可以使用git config credential.helper
的其他帮助程序,即内存缓存:
git config credential.helper cache <timout>
采用可选的timeout parameter
,确定其守护程序应运行多长时间,其default
值为900 seconds (15 minutes).
警告:如果您使用此方法,您的git帐户密码将以plaintext
格式保存在global .gitconfig file
中,例如在linux中将{{1} }}
如果您不喜欢这样做,请改为使用/home/[username]/.gitconfig
作为您的帐户。
答案 2 :(得分:73)
在终端中,输入以下内容:
# 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'
答案 3 :(得分:65)
您可以这样设置用户名和密码:
git config --global user.name "your username"
git config --global user.password "your password"
答案 4 :(得分:28)
您可以将~/.gitconfig
文件编辑为存储 凭据
sudo nano ~/.gitconfig
哪个应该已经
[user]
email = your@email.com
user = gitUSER
您应该在此文件的底部添加。
[credential]
helper = store
我推荐此选项的原因是因为它是全局的,如果您在任何时候需要删除该选项,您知道该去哪里并进行更改。
仅在您的个人计算机中使用此选项。
然后当你拉|克隆|输入git密码,一般情况下,密码将以~/.git-credentials
格式保存为
https://GITUSER:GITPASSWORD@DOMAIN.XXX
WHERE DOMAIN.XXX可能是GITHUB.COM | BITBUCKET.ORG | OTHER 强>
请参阅Docs
答案 5 :(得分:13)
您可以使用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
答案 6 :(得分:13)
对于全局设置,请从任何位置打开终端 运行以下命令:
git config --global user.name "your username"
git config --global user.password "your password"
通过计算机上的任何本地git repo都将使用该信息。
您可以通过以下操作为每个存储库分别进行配置:
运行以下命令:
git config user.name "your username"
git config user.password "your password"
它仅影响该文件夹(因为您的配置是本地的)。
答案 7 :(得分:12)
如果使用SSH身份验证而不是用户名/密码身份验证,则会更安全。
如果您使用的是Mac,则会将SSH客户端身份验证集成到MacOS钥匙串中。创建SSH密钥后,键入终端:
Microsoft.WindowsAzure
这会将SSH私钥添加到MacOS钥匙串中。 git客户端在连接到远程服务器时将使用ssh。只要您在服务器上注册了ssh公钥,就可以了。
答案 8 :(得分:12)
只需将Ya凭据放入Url中,如下所示:
https://Username
:Password
@github.com/myRepoDir/myRepo.git
您可以像这样存储:
git remote add myrepo https://Userna...
... 使用它的示例:
git push myrepo master
现在要列出网址别名:
git remote -v
...以及删除其中一个的命令:
git remote rm myrepo
答案 9 :(得分:12)
我认为缓存凭据比永久存储更安全:
git config credential.helper 'cache --timeout=10800'
现在您可以输入用户名和密码(git pull
或...),并在接下来的3小时内继续使用git。
好又安全。
超时以秒为单位(在示例中为3小时)。
此命令必须在Git存储库中执行,但是您也可以通过添加--global
参数在全局范围内进行此更改,如下所示:
git config --global credential.helper 'cache --timeout=10800'
答案 10 :(得分:10)
在这种情况下,您需要使用git凭据助手来通过以下命令行告诉git记住您的GitHub密码和用户名:
├── src
│ ├── components // Dumb components should go here -> they should be stand-alone components
│ │ ├── App // App should should render all the main topics
│ │ │ ├── index.js // Component logic and jsx
│ │ │ ├── index.test.js // Component tests
│ │ │ ├── index.css // Component styles
│ │ ├── Header // All components should have their own index.js and index.test.js files
│ │ │ ├── index.js // Component logic and jsx
│ │ │ ├── index.test.js // Component tests
│ │ │ ├── index.css // Component styles
│ │ ├── MainTopic // MainTopic should be a component on its own because it's repeated. It's in an array.
│ │ │ ├── index.js // Component logic and jsx
│ │ │ ├── index.test.js // Component tests
│ │ │ ├── index.css // Component styles
│ │ ├── SubTopic // SubTopic should be a component on its own because it's repeated. It's in an array.
│ │ │ ├── index.js // Component logic and jsx
│ │ │ ├── index.test.js // Component tests
│ │ │ ├── index.css // Component styles
│ │ ├── Topic // Topic should be a component on its own because it's repeated. It's in an array.
│ │ │ ├── index.js // Component logic and jsx
│ │ │ ├── index.test.js // Component tests
│ │ │ ├── index.css // Component styles
│ ├── index.test.js // Tests for non-components files
│ ├── index.js
│ ├── routes.js // All routes should be registered here
如果您使用的是使用SSH密钥的回购协议,则需要SSH密钥进行身份验证。
答案 11 :(得分:9)
以上所有答案对我都没有作用。每当我想fetch
或pull
时,我都会得到以下信息:
Enter passphrase for key '/Users/myusername/.ssh/id_rsa':
对于Macs
我能够阻止它通过以下方式询问密码:
vi ~/.ssh/config
UseKeychain yes
:wq!
对于Windows
我能够使用此stackexchange中的信息使其工作: https://unix.stackexchange.com/a/12201/348665
答案 12 :(得分:6)
如果您在Windows上使用 Git凭据管理器 ...
git config -l
应该显示:
credential.helper=manager
但是,如果没有提示您输入凭据,请按照以下步骤操作:
如果拥有代理并且Git服务器位于内部网络上,还请确保您未未设置HTTP_PROXY
,HTTPS_PROXY
,NO_PROXY
环境变量。< / p>
您还可以使用git-gui
测试Git提取/推/拉,该链接到C:\Users\<username>\AppData\Local\Programs\Git\mingw64\libexec\git-core
中的凭证管理器二进制文件
答案 13 :(得分:5)
查看官方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
答案 14 :(得分:3)
全局保存用户名和密码
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
答案 15 :(得分:3)
完整地阅读了该线程并尝试了该问题的大多数答案之后,我最终找到了适合我的过程。我想分享它,以防某人不得不处理一个复杂的用例,但又不想像我一样浏览整个线程以及gitcredentials,gitcredentials-store等手册页。
在以下过程中查找,我建议如果,您(像我一样)必须使用几种不同的用户名/密码组合来处理来自多个提供商(GitLab,GitHub,Bitbucket等)的多个存储库。如果您只使用一个帐户,那么最好使用git config --global credential.helper store
或git config --global user.name "your username"
等解决方案,这些解决方案在前面的答案中已经得到很好的解释。
我的解决方案:
> git config --global --unset credentials.helper
> cd /path/to/my/repo
> git config --unset credential.helper
> git config credential.helper 'store --file ~/.git_repo_credentials'
注意:此命令在您的主目录中创建一个名为“ .git_repo_credentials”的新文件,Git将您的凭据存储在该文件中。如果您未指定文件名,则Git使用默认的“ .git_credentials”。在这种情况下,只需发出以下命令即可:
> git config credential.helper store
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”,并在后续访问时自动使用相同的数据。
答案 16 :(得分:2)
.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 repository,然后通过在docker hub的post_push
挂钩中将其推送来触发它。
在堆栈溢出中可以看到一个这样的示例here。
答案 17 :(得分:2)
除了编辑~/.gitconfig
文件之外。
请注意始终使用单引号:
git config --global user.name 'your username'
git config --global user.password 'your password'
您的用户名和密码可能使用某些字符,如果使用双引号,则会破坏密码。
答案 18 :(得分:1)
只需使用
git config --global credential.helper store
并执行 git pull ,它将要求输入用户名和密码,从现在开始,它将不提供任何提示输入用户名和密码,它将存储详细信息
答案 19 :(得分:1)
对于Windows用户,如果您具有以下条件,请查看.gitconfig文件并检查已为凭据帮助程序配置了什么...
[凭证“ helperselector”] 选择= Wincred
您将在Windows凭据管理器中找到凭据。
您可以在其中编辑凭据。
编辑:Wincred已被弃用,请参阅...
https://github.com/git-for-windows/git-sdk-64/tree/main/mingw64/doc/git-credential-manager
因此,您也可以重新配置git以使用内置的GIT凭据管理器...
git config --global credential.helper manager
答案 20 :(得分:1)
对于 Windows 用户来说,这种方式是可行的
注意:如果您为 GitHub 启用双因素身份验证,请暂时禁用它
Goto Control Panel -> User Accounts -> Credential Manager -> Windows Credentials
Goto Generic Credentials section -> Add a generic credential
Internet or network address : git.https://github.com
User name : your github username
Password : your github username
现在点击确定。这会将您的 GitHub 帐户的密码和用户名保存到您的本地计算机
答案 21 :(得分:0)
浏览了数十篇SO帖子,博客等之后,我尝试了每种方法,这就是我想出的方法。它涵盖了一切。
所有这些方法和工具都可以用来安全地验证git以克隆存储库,而没有交互式密码提示。
是否想要使用Just™?这是神奇的银弹。
获取您的访问令牌(如果您需要Github或Gitea指令,请参阅备忘单中的部分),并将其设置在环境变量中(用于本地开发和部署):
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
对于Github,复制并运行以下行 verbatim :
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:"
恭喜,现在无论使用https还是ssh url样式,任何自动克隆git存储库的工具都不会受到密码提示的阻碍。
不使用Github吗?
对于其他平台(Gitea,Github,Bitbucket),只需更改URL。请勿更改用户名(尽管任意,但对于不同的配置条目来说是必需的)。
兼容性
这可以在MacOS,Linux,Windows(在Bash中),Docker,CircleCI,Heroku,Akkeris等本地运行。
更多信息
请参阅备忘单的“ .gitconfig代替Of”部分。
安全性
请参阅速查表的“安全性”部分。
答案 22 :(得分:0)
根据rifrol的评论,在Linux Ubuntu上,摘自以下answer:
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”“内置”的,因此您可以免费获得它。
答案 23 :(得分:0)
git config --global user.name "你的用户名"
git config --global user.password "你的密码"
检查
git 配置 --list