【Git】安装+配置多git连接+常用命令+常见问题
安装&配置
下载安装包
配置
1、打开Git Bash用账号配置环境
2、配置用户名,邮箱
# 配置用户名
git config --global user.name "username" //( "username"是自己的账户名,)
# 配置邮箱
git config --global user.email "username@email.com" //("username@email.com"注册账号时用的邮箱)
3、查看配置是否OK
git config --global --list
4、生成ssh
ssh-keygen -t rsa
- 连敲三次回车键,结束后去系统盘目录下(一般在 C:\Users\你的用户名.ssh)(mac: /Users/用户/.ssh)查看是否有。ssh文件夹生成,此文件夹中以下两个文件
5、把ssh文件配置到github中
- 将ssh文件夹中的公钥( id_rsa.pub)复制
- 在GitHub的个人账户的设置中找到设置ssh的界面
- title随便起一个,将公钥( id_rsa.pub)文件中内容复制粘贴到key中,然后点击Ass SSH key
6、测试一下配置是否成功连接
ssh -T git@github.com
- 注意如果以前配置过git会提示是否用以前的git地址,注意一下。
配置多git用户切换
- 由于公司多个git库,每次下项目我都是覆盖之前的糊里糊涂的非常不方便,上网查阅了很多帖子各种报错,其实只要步骤明确,真的不难,我的是多个gitlab。
1、设置公共用户和邮箱
- 这个username和email的名字我试了随便写,不会影响你生成的密钥和你连接是否成功
git config --global user.name "putong"
git config --global user.email "putong@putong.com"
- 查看用户列表(看是否设置成功)
git config --global --list
2、生成密钥文件,设置到git上
- 【1】输入命令生成密钥文件。
- 项目注意输入命令后敲一下回车,密钥文件名字区分开,注意路径不要写错
- 生成密钥后,直接在当前用户再生成了另一个密钥文件就行了
- 不用设置密码直接回车
ssh-keygen -t rsa
回车
/c/Users/halo/.ssh/id_rsa85
回车、回车
- 【2】将密钥中的内容粘在git的setting中的ssh配置页面
- 密钥位置:C:\Windows\System32\drivers\etc\id_rsa.pub
3、设置hosts文件让hostname生效
- hosts文件位置:C:\Windows\System32\drivers\etc
#ip hostname
111.111.111.111 git.gitedit.com
192.168.100.85 cpppppv.com.cn
4、设置配置文件config
由于设置多个连接,无法识别哪个密钥,自动识别默认密钥文件,会导致没有权限访问
- 在.ssh目录下新建config文件,让hostname(你所连接的ssh地址)址与对应的密钥匹配
- 看你gitlab上项目的SSH地址@ 与:中间部分为你git的识别name
例如:git@git.gitedit.com:zzz/zzz_web.git的为git.gitedit.com
#自己打的备注名字
#你连接不同git库时的名
#hosts文件里的hostname
#用来区分名字就行(随便写)
#密钥文件路径和名字
#putongCompany85
Host cpppppv.com.cn
HostName cpppppv.com.cn
User putongCompany85
IdentityFile ~/.ssh/id_rsa85
#putongCompany49
Host git.gitedit.com
HostName git.gitedit.com
User putongCompany49
IdentityFile ~/.ssh/id_rsa49
5、验证是否成功
- 看你gitlab上项目的SSH地址中@ 与:中间部分为你git的识别name
- 例如:git@git.gitedit.com:zzz/zzz_web.git的为git.gitedit.com
- 输入命令,显示welcome xxx!你就成功了老弟!
ssh -T git@git.gitlab.com
常用命令
下载代码git clone
git clone xxx(ssh或者http地址都可)
切换分支
git checkout xxx(分支名称)
解决代码冲突
git stash(压栈)
git pull
git stash pop(弹栈)
引入git到当前路径
- 设置非全局用户时会用到
git init
识别新密钥
ssh-agent bash
常见问题
报错:ssl certificate problem self signed certificate
- 利用git命令行全局设置ssl验证为false
git config --global http.sslVerify false
报错:ssh: Could not resolve hostname xxx: Name or service not known fatal: Could not read from remote repository.
- 更改hosts文件设置该hostname对应的ip
#C:\Windows\System32\drivers\etc
#ip hostname
111.111.111.111 git.gitedit.com
192.168.100.85 cpppppv.com.cn
报错:Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
因为设置多个连接,无法识别哪个密钥,自动识别默认密钥文件,没有权限访问
- 在.ssh目录下新建config文件,让hostname(你所连接的ssh地址)址与对应的密钥匹配
#自己打的备注名字
#你连接不同git库时的名
#hosts文件里的hostname
#用来区分名字就行(随便写)
#密钥文件路径和名字
#putongCompany85
Host cpppppv.com.cn
HostName cpppppv.com.cn
User putongCompany85
IdentityFile ~/.ssh/id_rsa85
#putongCompany49
Host git.gitedit.com
HostName git.gitedit.com
User putongCompany49
IdentityFile ~/.ssh/id_rsa49