目录
一、使用公钥方式步骤
1、去github创建仓库
2、使用git在本地创建公钥和私钥
3、在github上配置本地公钥
4、测试
5、使用git上传代码
二、可能出现的一些错误
1、没有匹配到任何资源
2、git找不到本地仓库
3、提交没授权
如果还没有github账号,请先申请github账号,过程过于简单,此处不在详述。
在github创建远程仓库操作如上图所示,点击创建仓库后,会出现如下界面,提示一些初始化操作的命令
此处需要安装git,详细的git安装教程可以参考这篇文章:https://www.jianshu.com/p/a152f82c5e4a
本文此处演示使用Windows版本,打开git,输入下方命令,生成秘钥
$ ssh-keygen -t rsa -C "[email protected]"
出现下图提示,说明本地秘钥生成成功。
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa):
Created directory '/c/Users/Administrator/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Administrator/.ssh/id_rsa.
Your public key has been saved in /c/Users/Administrator/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:/uxaNgC1gXzFSQFugBg7RzLTSoBbrl2z0iZVBaCbTvM [email protected]
The key's randomart image is:
+---[RSA 3072]----+
|o.=+o+o+==+o |
|. +Bo ++.oo |
| =+.....+ |
|. o=+ o |
| o=+ o S |
|.o+o+ . . |
| .+E . + |
| = . |
| .o+ |
+----[SHA256]-----+
信息中给出了公钥和私钥所在的地址:
私钥:Your identification has been saved in /c/Users/Administrator/.ssh/id_rsa.
公钥:Your public key has been saved in /c/Users/Administrator/.ssh/id_rsa.pub.
如图,在本地电脑.ssh文件夹下生成了一对公钥和私钥,公钥需要粘贴到gitbub上,建立和github的连接
将上边生成的公钥,使用txt文档打开后,复制粘贴到github,如图操作
注:如果找不到setting,请点击头像标识
点击Add SSH Key 后,如下图,成功添加公钥,在github上可以添加多个公钥
为了验证本地是否能成功连接到github,输入以下命令进行验证
$ ssh -T [email protected]
如果出现以下提示,说明本地连接到github成功,接下来就可以尝试进行代码上传了
The authenticity of host 'github.com (52.74.223.119)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts.
Hi swadian2018! You've successfully authenticated, but GitHub does not provide shell access.
(1)初始化git本地仓库
在需要上传的项目文件夹下,打开git命令窗口,输入如下git初始化命令,初始化git本地仓库
$ git init
出现如下提示说明本地仓库初始化成功
Initialized empty Git repository in D:/IdeaWorkSpase/springbootdemo/.git/
初始化后,文件夹下会多了一个.git的隐藏文件夹,如下图所示:
创建git用户:尝试连接成功后,我们需要在git上创建连接的用户,--global代表全局使用。
$ git config --global user.name "your name"
$ git config --global user.email "[email protected]"
此处的“your name”使用的是刚注册的github的name,E-mail也是注册github的e-mail(当然你也可以使用别的name和e-mail,这个只是使用git时需要创建一个用户信息,另,需要修改用户信息时,直接使用原命令覆盖就可以了^_^)
(2)执行初始化命令
输入完成后,回到github创建仓库后的页面,执行初始化命令,在...or push an existing repository from the command line 一栏可以看到如下命令:
$ git remote add origin https://github.com/swadian2018/springbootdemo.git
$ git push -u origin master
把上边两条命令复制到git命令窗口,会弹出输入github的用户名和密码的窗口,如图
输入完后才能后,命令窗口会出现以下提示,文件上传成功!
Enumerating objects: 23, done.
Counting objects: 100% (23/23), done.
Delta compression using up to 4 threads
Compressing objects: 100% (16/16), done.
Writing objects: 100% (23/23), 3.85 KiB | 328.00 KiB/s, done.
Total 23 (delta 0), reused 0 (delta 0)
To https://github.com/swadian2018/springbootdemo.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
下面刷新下github的页面,可以看到上传的文件
error: src refspec master does not match any
error: failed to push some refs to 'https://github.com/swadian2018/springbootdemo.git'
git初始化提示信息为empty时,实际上这个文件夹下的代码是没有提交到本地仓库的,这个时候要把本地代码git commit 到本地仓库,如果使用的是idea,可以看到未提交的代码都成红色提示。
但有时候使用git init命令初始化本地仓库时,idea的代码却没有任何反应,这个时候可以删除代码文件夹下的.git文件夹,重新启动idea,使用idea工具进行git仓库的初始化。
$ git remote add origin https://github.com/swadian2018/springbootdemo.git
fatal: not a git repository (or any of the parent directories): .git
这个原因是git打开命令窗口时没有在本地仓库所在的位置打开,因此找不到本地仓库的资源。
解决方案:重新初始化git本地仓库,或者在有初始化本地仓库的资源下重新打开命令窗口。
这种情况一般是在连接github远程仓库时,输入的连接地址形式不支持时出现的
github初始连接时,支持以下两种方式进行连接,但有时候对于第一种连接方式可能并不支持,那就需要修改成第二种方式
第一种连接方式
$ git remote add origin [email protected]:swadian2018/springbootdemo.git
第二种连接方式
$ git remote add origin https://github.com/swadian2018/springbootdemo.git
使用如下命令修改连接地址:
查看当前的连接地址
$ git remote -v
修改当前的连接地址
$ git remote set-url origin https://github.com/youname/warehousename.git
$ git push -u origin master
或者
$ git remote set-url origin [email protected]:youname/warehousename.git
$ git push -u origin master