Git push 需要用户名和密码。

1859

我从GitHub账户将Git仓库克隆到了PC上。

我想要使用同一个GitHub账户在PC和笔记本电脑上进行操作。

当我尝试使用PC推送或拉取GitHub时,需要输入用户名和密码,但是使用笔记本电脑则不需要!

我不想每次与origin交互时都输入用户名和密码。我错过了什么?


3
您需要在您的Github账户中注册公钥(https://github.com/account/ssh),并配置您的SSH客户端来使用正确的用户名。 - jwodder
2
我已经做了所有的事情,但它仍然需要用户名和密码!是否可能在两台电脑上使用一个帐户? - TooCooL
1
这个问题在这方面涵盖了你所有的选项:https://dev59.com/om435IYBdhLWcg3wkA5e - ford
3
不再需要切换到 SSH,HTTPS 也可以实现。请检查我的回答。 - Varun Achar
1
我更喜欢使用加密的netrc.gpg,在其中可以存储所有https远程库的凭据。这对于新的GitHub双因素身份验证非常有效! - VonC
显示剩余4条评论
31个回答

14

这里有另一个选择:

不要写成:

git push origin HEAD

您可以写成:

git push https://user:pass@yourrepo.com/path HEAD

显然,对于大多数shell来说,这将导致密码被缓存在历史记录中,所以请记住这一点。


1
在Bash中,添加一个或多个前导空格通常会使其不被记录在历史记录中。但是在Git Bash中不是这样。 - Peter Mortensen

14

对我有效的方法是编辑.git/config文件并使用。

[remote "origin"]
        url = https://<login>:<password>@gitlab.com(...).git

不言而喻,这是一种不安全的存储密码的方式,但在某些环境/情况下可能不会成为问题。


11

针对 Mac OS

  1. 前往你的 Github 页面中的 设置 -> 开发者设置 -> 个人访问令牌 (https://github.com/settings/tokens/new),并生成一个具有所有 Repo 权限的新令牌。
  2. 在你的 mac 上搜索 Keychain Access -> 搜索 github.com -> 点击 显示密码,然后粘贴你刚刚复制的 令牌
  3. 进入 CLI, 它会再次询问你的用户名和密码, 输入你的 Github 用户名,并将令牌粘贴到密码框中,这样你就可以在之后的使用中直接使用 CLI。

谢谢,这对于Mac用户有效。 - roy
谢谢,这很有帮助。还有一件事要补充,如果在钥匙串访问中找不到 github.com,那没关系,只需执行第三步,然后它就会显示在钥匙串访问中。 - Deqing

11

如果SSH密钥或.netrc文件对您无效,那么另一个简单但不太安全的解决方案是git-credential-store - 用于在磁盘上存储凭据的助手:

git config --global credential.helper store

默认情况下,凭据将保存在文件~/.git-credentials中。它将被创建并写入。

请注意,使用此帮助程序将会将您的密码以未加密的方式存储在磁盘上,仅受文件系统权限保护。如果这可能不是可以接受的安全权衡,请注意。


8

我曾经遇到同样的问题。

所以我修改了我的项目中.git/config文件,

url = https://github.com/<your-user-here>/<your-repo-here>

to

url = git@github.com:<your-user-here>/<your-repo-here>

我已经将SSH公钥添加到了Git配置文件中的设置中。

关于SSH公钥:

cat ~/.ssh/id_rsa.pub

1
使用 cat ~/.ssh/id_rsa.pub 命令获取 RSA 密钥,并将其粘贴到 Git 网站设置中。 - Anupam Maurya

7

如果你使用HTTPS克隆而不是SSH,在pull、push和fetch时面临用户名和密码提示问题。你可以简单地解决Ubuntu上的这个问题。

步骤1: 移动到根目录

cd ~/

创建一个文件.git-credentials

将以下内容添加到该文件中,包括你的 用户名密码git托管URL

https://user:pass@example.com

然后执行该命令。
git config --global credential.helper store

现在您将能够轻松地从您的存储库中拉取、推送和获取所有细节,无需任何麻烦。


1
githosting URL 是什么?例如,对于 Gitlab,它是什么? - étale-cohomology

6

直接更新 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/*

将URL的部分更改为以下格式以进行SSH:

url = git@github.com:happy_feet/my_code.git

(上述格式不会因为使用不同的Git远程服务器(如GitHub或Bitbucket)而改变。如果您正在使用Git进行版本控制,那么这是相同的):

注意: 通过SSH连接到远程Git存储库将要求您将公共SSH密钥添加到您的Git远程服务器中(如GitHub或Bitbucket。在设置页面中搜索SSH密钥)。

要了解如何生成您的SSH密钥,请参考: 创建SSH密钥


设置[user]的好处是,即使您拥有主git凭据,提交也将由配置中的[user]注册。 - Ayush Mandowara

5

对于Windows Git用户,在运行 git config --global credential.helper store 命令后,如果仍然提示输入密码,建议检查配置文件写入的位置,可以使用以下命令:

git config --list --show-origin

在我的情况下,手动编辑配置文件'C:\Program Files\Git\mingw64\etc\gitconfig',并添加以下文本后,它就可以工作了。
[credential]
    helper = store

5

你基本上有两个选择。

如果您在两台机器上使用相同的用户,则需要将.pub密钥复制到您的PC上,以便GitHub知道您是同一用户。

如果您为PC创建了一个新的.pub文件并希望将这些机器视为不同的用户,则需要在GitHub网站上注册新的.pub文件。

如果仍然无法正常工作,则可能是因为ssh未正确配置,ssh无法找到密钥的位置。尝试:

ssh -vv username@github.com

获取更多关于SSH连接失败的信息。


5
这是对我有用的方法:
git remote set-url origin https://username@github.com/username/reponame.git

例子:

git remote set-url origin https://jsmith@github.com/jsmith/master.git

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接