我从我的GitHub帐户克隆了一个Git存储库到我的电脑。
我想使用我的电脑和笔记本电脑,但只有一个GitHub帐户。
当我尝试使用我的电脑推送到GitHub或从GitHub中拉取时,它需要用户名和密码,但当我使用笔记本电脑时不需要!
我不想每次与origin交互时都键入用户名和密码。我在这里缺少什么?
我从我的GitHub帐户克隆了一个Git存储库到我的电脑。
我想使用我的电脑和笔记本电脑,但只有一个GitHub帐户。
当我尝试使用我的电脑推送到GitHub或从GitHub中拉取时,它需要用户名和密码,但当我使用笔记本电脑时不需要!
我不想每次与origin交互时都键入用户名和密码。我在这里缺少什么?
当前回答
直接更新Git配置文件(如果不想记住花哨的命令):
在您喜爱的文本编辑器中打开.git/config文件。它将在您克隆的文件夹中或执行git init的存储库中。进入该存储库。git是一个隐藏的文件夹,按Ctrl+H应该会显示隐藏的文件夹(终端中的ls-a)。
下面是.git/config文件的示例。复制并粘贴这些行,并确保使用Git信息更新这些行。
[user]
name = Tux
email = tux@gmail.com
username = happy_feet
[remote "origin"]
url = https://github.com/happy_feet/my_code.git
fetch = +refs/heads/*:refs/remotes/origin/*
将SSH的URL部分更改为以下格式:
url = git@github.com:happy_feet/my_code.git
(以上格式不会随GitHub或Bitbucket等各种Git远程服务器而改变。如果您使用Git进行版本控制,则相同):
注意:连接到远程Git存储库的SSH方式将要求您将公共SSH密钥添加到Git远程服务器(如GitHub或Bitbucket。在设置页面搜索SSH密钥)。
要了解如何生成SSH密钥,请参阅:创建SSH密钥
其他回答
除了更改为SSH之外,如果您不介意以明文形式输入密码,您还可以继续使用HTTPS。把这个放到你的~/.netrc中,它不会要求你输入用户名/密码(至少在Linux和Mac上是这样):
machine github.com
login <user>
password <password>
添加(请参见VonC的第二条评论):在Windows上,文件名为%HOME%\_netrc。
如果您想加密,请阅读VonC的第一条评论。
如果您有Git 1.7.10或更高版本,则可以使用另一个插件(请参见user137717的注释)。
使用凭据助手在Git中缓存GitHub密码:
如果要使用HTTPS克隆GitHub存储库,可以使用凭据助手,告诉Git记住您的GitHub用户名和密码。
这也适用于Linux、Mac和Windows。
截至2021,HTTPS远程有一个安全、用户友好的跨平台解决方案。不再输入密码!不再有SSH密钥!不再有个人访问令牌!
安装GitHub开发的Git凭据管理器(下载)。它支持对GitHub、BitBucket、Azure和GitLab的无密码浏览器内OAuth认证。这意味着您可以在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"
熟悉gnomekeyring或KWallet的高级用户可能更喜欢将凭证存储更改为libsecret。
外观配置(文档):
首选在终端而不是GUI中选择身份验证方法(点击次数较少)始终使用浏览器方法,而不是每次都被询问(甚至更少的按键)
git config --global credential.guiPrompt false
git config --global credential.gitHubAuthModes browser
HTTPS更新:
GitHub为Windows推出了一个新程序,在您使用HTTPS时存储您的凭据:
要使用:
从此处下载程序运行程序后,它将编辑.gitconfig文件。重新检查它是否编辑了正确的.gitconfig,以防出现多个错误。如果它没有编辑正确的文件,请将以下内容添加到.gitconfig中[凭据]助手=!'C: \\Path\\To\\Your\\Downloaded\\File\\git credential winstore.exe'注意[credential]后面的换行符。这是必需的。打开命令行客户端,尝试git push origin master一次。如果它要求您输入密码,请输入密码,您就完成了。密码已保存!
如果SSH密钥或.netrc文件不适用于您,那么另一个简单但不太安全的解决方案可能适用于您:git credential store-Helper将凭据存储在磁盘上:
git config --global credential.helper store
默认情况下,凭据将保存在文件~/.git凭据中。它将被创建并写入。
请注意,使用此助手将在磁盘上存储未加密的密码,仅受文件系统权限的保护。如果这可能不是可接受的安全权衡。
这就是对我有用的:
git remote set-url origin https://username@github.com/username/reponame.git
例子:
git remote set-url origin https://jsmith@github.com/jsmith/master.git