目录
- 1.前言
- 2.错误情况
- 3.解决错误
- 4.Github设置密钥
- 5.Git与Githun连接测试
- 6.解决问题
- 7.总结
1.前言
在使用git push时出现没有权限连接Github上的远程仓库,经过查阅资料,需要在Github登录状态在settings中添加SSH key,与本机的密钥相匹配,才能建立远程连接,那么本机工程项目在push时就有权限了。
2.错误分析
ZSAndroid@DESKTOP-6LMLR19 MINGW64 ~/Desktop/qe (master)
$ git clone git@github.com:xxxxx/GitTest_Login.git
Cloning into 'GitTest_Login'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
# 本机安装的Git应用程序没有权限访问使用公开密钥的github官网
git@github.com: Permission denied (publickey).# 本机Git版本库与远程Github版本库,两个仓库不能建立连接
fatal: Could not read from remote repository.# 请确保拥有正确的访问权限并且存储库存在
Please make sure you have the correct access rights
and the repository exists.说明:我这里使用命令“git clone”,从github远程仓库克隆项目到本机时,发生无权限错误提示。不论是“git clone”或者“git push”推送本机项目到到github远程仓库,两个仓库没有建立连接,均会出现Permissin denied,首先需要解决授权仓库连接问题。
***Github远程版本库与Git本机版本库要求使用 SSH Key 来验证***
3.解决错误
(1)使用本机Git Bash 命令行工具生成SSH key,使用命令:ssh-keygen -t rsa -C "xxx.@qqcom"——如下:
说明:生成密钥后,会在本机C盘的用户User目录,自动生成.ssh目录(id_rsa私钥、id_rsa.pub公钥),用于存放命令生成的密钥对。作用于本机Git版本库调用Git命令时,与远程仓库Github进行密钥相互匹配成功后,能真实有效建立两个仓库的远程连接,增加本机版本库与远程版本库的安全性。
(2)查看命令生成的SSH密钥,使用命令:cat ~/.ssh/id_rsa.pub
说明:cat查看显示出来SSH密钥不方便copy,我们可以使用“Git GUI here ”图形化工具,快捷复制密钥到剪切板。
(3)快捷copy:桌面鼠标右键——Git GUI here——Help——Show SSH key
4.Github设置密钥
(1)登录Github官网:https://github.com,右上角头像图标——settings
(2)创建SSH密钥:SSH and GPG keys——New SSH key
(3)开始创建SSH密钥:Tiltle——key——Add SSH key
***Github远程版本库与Git本机版本库SSH Key 匹配验证成功,就有权限操作项目了***
5.Git与Githun连接测试
在上面已经使得本机Git版本库与Github版本库以SSH方式建立了远程连接,那么应该在配置SSH keys 后,在Git Bash工具中,测试远程连接状态信息,使用命令:ssh git@github.com,如下:
6.解决测试
使用“git push --set-upstream origin master”命令,将本机Git版本库推送项目到远程版本库Git中,如下:
——git push -u origin master :将本机Git版本库master推送到远程Github版本库origin,同时默认指定origin
——git push:默认推送当前分支,simple方式
ZSAndroid@DESKTOP-6LMLR19 MINGW64 ~/Desktop/qe (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: asdasd.txt
no changes added to commit (use "git add" and/or "git commit -a")
ZSAndroid@DESKTOP-6LMLR19 MINGW64 ~/Desktop/qe (master)
$ git add asdasd.txt
ZSAndroid@DESKTOP-6LMLR19 MINGW64 ~/Desktop/qe (master)
$ git commit -m "文件"
[master 69e2a8d] 文件
1 file changed, 1 insertion(+), 1 deletion(-)
ZSAndroid@DESKTOP-6LMLR19 MINGW64 ~/Desktop/qe (master)
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
ZSAndroid@DESKTOP-6LMLR19 MINGW64 ~/Desktop/qe (master)
$ git push --set-upstream origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 302 bytes | 302.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:GuiZhouAndroid/qe.git
9d90c4f..69e2a8d master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
ZSAndroid@DESKTOP-6LMLR19 MINGW64 ~/Desktop/qe (master)
7.总结
仅自己学习记录,如有错误,敬请谅解~,谢谢~~~