解决每次 git push 都要输入用户名
type
Post
status
Published
date
Jun 22, 2023
slug
git-ssh
summary
tags
git
Github
icon
未配置用户名和邮箱
如果每次
git push
都要输入用户名,很可能是由于没有配置 Git 的全局用户名和邮箱地址导致的。通过
cat gitconfig
查看当前项目是否设置用户名和邮箱地址通过下面两条命令查看是否已经设置全局用户名和邮箱地址。
如果尚未配置,将会输出空。你可以使用以下命令设置全局用户名和邮箱地址:
这样,在执行
git push
命令时,就不需要每次输入用户名和邮箱地址了。Git 会使用你配置的全局用户名和邮箱地址来作为你的身份识别信息。如果确保已经设置了全局用户名和邮箱地址,但是每次执行
git push
都要输入用户名,那么可能是因为你在使用 HTTPS 认证方式进行Git操作。在该情况下,Git会要求输入每次进行push操作时的账号密码。为了避免每次都输入账号,你可以将认证方式改为 SSH 认证。配置 SSH 认证需要在本地生成 SSH 密钥,然后将公钥添加到远程 Git 服务器中,详情可以参考官方文档。配置 SSH 认证
- 首先需要生成 SSH 密钥。在 Git Bash 或者终端中输入以下命令:
- 生成密钥时会要求输入密钥的保存路径和文件名,直接回车即可默认保存在
.ssh
目录下。
- 生成密钥后,在
.ssh
目录中会生成两个文件:id_rsa
(私钥)和id_rsa.pub
(公钥)。
- 将公钥添加到 Git 服务商(如 GitHub、GitLab)中。以 GitHub 为例,登录 GitHub,在
Settings -> SSH and GPG keys -> New SSH key
(https://github.com/settings/ssh/new)中将公钥内容粘贴进去,并取一个适当的名称。
- 配置 Git 仓库的远程地址为 SSH 协议的 URL。例如:
其中
yourusername
和 yourrepository
修改为你自己的用户名和仓库名。你仓库链接后面就是
用户名/仓库名
这样就可以在提交代码时使用 SSH 认证了。如果您之前配置过 HTTPS 认证的话,需要将该仓库的
origin
地址修改为 SSH 协议才能生效。如果有多个 GitHub 账户
很多时候我们会有工作和个人用两个或更多个 Github 账户,而上文所生成的密钥,一旦被第一个账户(例如工作用 GitHub 账户)使用,第二个账户(例如私人用 GitHub 账户)就无法再添加该密钥了
可为第二个账户单独生成一个密钥对
- -t ed25519 指定了密钥类型为 ed25519。
- -f ~/.ssh/second 指定了密钥文件的路径和名称。