git登录相关操作梳理
本文主要基于 Linux/Mac ,Windows下未经测试,不过估计差不多,在 git bash 内操作即可。
创建ssh key并关联github等账号
因为本地Git仓库和GitHub仓库之间的传输是通过SSH加密传输的,GitHub需要识别是否是你推送,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送,所以需要配置ssh key。
ssh-keygen -t rsa -C {"YOUR_EMAIL"}
输入命令会提示输入文件名,没有特别需求的话不需要特别输入,用默认的即可,即直接一顿回车。之后在 ~/.ssh
下得到两个文件:id_rsa
和 id_rsa.pub
,到 github 或者 gitlab 等的个人设置界面,添加 ssh key,把 id_rsa.pub
中的内容复制进去即可,一般这一步会需要输入密码。
同机器多用户
有时候我们会有在同一台机器上登录多个 git 账户的需求,比如要同时登录我们个人的 github 账号,和在公司的 gitlab 账号。
配置 config 文件
编辑 ~/.ssh/config
文件,该文件内保存了我们 ssh 其他机器时的信息,和 ssh 连接 git 的信息。
# Default user
Host coding # host地址对应的别名,切换用户使用该名称
HostName xxx.xx.xx.xx # host地址 我这里填的是公司搭建的git仓库的ip地址
User xiaofute1
IdentityFile ~/.ssh/id_rsa_default # ssh-key文件地址 默认只会读取id_rsa# second user
Host github
HostName github.com
User xiaofute2
IdentityFile ~/.ssh/id_rsa_github
切换用户
这里就用到了配置文件中的host对应的字段:
ssh -T git@github
输出类似如下信息则表示成功:
Hi xiaofute2! You've successfully authenticated, but GitHub
does not provide shell access.
验证出错
验证过程中出现 Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
删除 known_hosts 文件。执行以下命令
ssh -T -v git@xxx.xx.xx.xx
设置username和email
这里设置的 username 和 email 就是我们每次 commit 记录的用户信息。注意这里是不需要密码的。验证我们的用户身份是通过上面的 ssh key。
全局
git config --global user.name "YOUR_USRE_NAME"
git config --global user.enail "YOUR_EMAIL"
可以用
git config --list
来查看配置信息。
本地
本地仓库文件夹下配置用户名 会在当前仓库中提交试用该用户信息提交,覆盖全局的配置、
git config user.name "YOUR_USER_NAME"
git config user.email "YOUR_EMAIL"
由于我们全局配置的为default user的用户名和邮箱,在github上的commits history中会link不到用户,所以每次要在 github 上 commit 内容时,需要在 git init 后需要配置该本地局部仓库的用户信息。
git设置用户名密码
我们刚才提到,上面设置git用户名/邮箱是不需要密码的。如果我们的 git 源在每次操作都需要你输入用户名/密码验证,我们依然需要每次设置,那么该如何办呢?
这里主要是修改某个项目下的 .git/config
文件:
[core]repositoryformatversion = 0filemode = truebare = falselogallrefupdates = true
[remote "origin"]url = https://github.com/Miss-you/kernel-netfilter-sample-code.gitfetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]remote = originmerge = refs/heads/master
# 上面是一般的本地仓库的内容,如果想要保存用户名密码,添加以下两行
[credential]helper = store
再使用 git config --list
查看已设配置
feiqianyousadeMacBook-Pro:xt_GTPU yousa$ git config --list
core.excludesfile=/Users/yousa/.gitignore_global
user.name=Miss-you
user.email=snowfly1993@gmail.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
remote.origin.url=https://github.com/Miss-you/xt_GTPU.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
Ref:
git命令行登陆github进行操作
git多用户配置(多用户&公司/个人)
git设置用户名密码