git本地无法上传到远程的问题解决方法
正常的创建本地git仓库然后上传到远程的方案参考另一篇博客:
用git建立本地仓库并与远程仓库连接
但是在push过程中可能出现无法连接的问题, 本文将对常见的具体问题和解决方案进行总结.
1. Please make sure you have the correct access rights and the repository exists
这个是公钥出问题了,也就是git服务器没有存储本地ssh密钥, 需要重新获取公钥, 具体的解决方法可以参考如下链接:
https://blog.csdn.net/lw545034502/article/details/90696872
1.1 项目文件夹目录下配置git
git config --global user.name "yourname"
git config --global user.email "your@email.com"
1.2 生成公钥
在终端对话框(ubuntu)或git shell(windows)中输入:
ssh-keygen -t rsa -C "your@email.com" #请填你设置的邮箱地址)
如果成功, 则会显示以下内容:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):
注意如果之前就有公钥, 只是失效了, 会提示是否覆盖, 选择"Y", 然后一路回车(不设置密码, 需要的话在提示设置密码的时候填一下)
成功之后, 显示:
The key's randomart image is:
+---[RSA 2048]----+
| . . |
| . = . . o|
|o o * . . ...|
|E oo o . o.. |
| B . o S . ... |
|. o o .o.. |
| . o**. |
| .B=+%. |
| +*BoBo |
+----[SHA256]-----+
然后系统会自动在.ssh文件夹下生成两个文件,id_rsa和id_rsa.pub,具体的.ssh文件夹目录信息已经显示在对话框中, 一般为:
username/.ssh/id_rsa.pub
用gedit编辑器打开id_rsa.pub
gedit xx/.ssh/id_rsa.pub #xx是.ssh文件夹的目录
复制全部内容
1.3 远程更新公钥
打开github网站, 登录自己的账户, 点击"设置", 进入ssh设置, New SSH Key, 然后将刚才复制的内容全部粘贴到Key中, 点击add ssh key, 完成.
2. 拒绝上传
解决了密钥问题, 在push的过程中可能还会出现以下问题:
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@github.com:KatelynLiu/SynMultiSensors.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
原因 : 本地仓库和远程仓库的文件不一致, 即github允许本地仓库有的东西, 远程仓库里没有, 但不允许远程仓库有的东西, 本地仓库没有.
解决办法 : 在push之前先同步一下本地仓库与远程仓库的文件。使用以下命令
git pull --rebase origin master
成功后会显示
warning: no common commits
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:KatelynLiu/SynMultiSensors
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
First, rewinding head to replay your work on top of it...
Applying: Synchronize multi sensors data from rosbag
Applying: synchronize multi sensors data
然后就可以正常push自己的代码了
git push origin master
如果上述方法仍有问题, 可以试试输入
git push -f
转载请声明出处