当前位置:   article > 正文

git error: (权限不够)_git 的那些奇奇怪怪的问题合辑 (更新中)

.repo/repo/git_ssh': 权限不够

e6ae148c67e8a17cda0ef269d5affccd.png

问题初显

事情的起因是这样的,我不是自己建了好几个网站嘛。

有的是为了好玩,比如前文提到的hexo; 还有的我拿来当电子简历了(嘻嘻,简历网站就没有公开了啦)。

我在面试某厂的时候,面试官竟然对我的简历版的网站很有兴趣,并且对着我网站上列举出的技术栈进行了狂轰滥炸式的考察。

面试最后还不忘夸了夸我的网站。 呜!受宠若惊~

但其实我还有不满意的点以及要更新的东西,于是在面试结束后就马不停蹄的去修改了。

当我提交完,兴奋的想去看网站效果的时候。

咦,怎么毫无变化?

我反复刷新刷新页面,最后又回到github上看。

嘶 !!! 竟然。。。

github 上提交的 commit 都没成功!

17662db9212a6efaeb5f2a3e31badc46.png

纳尼,咋一段时间没用,我都提交不了了呢???

原来前一天终端的git commit 也没有成功,

但是终端这个铁憨憨好像什么都没有发现,还提示 Everything up-to-date (主人,一切都更新好了哦!)。仿佛一切安好的样子。

ae04214392d32e9604e8016811300dc5.png

解决问题

工欲善其事, 必先利其器。

但是好像我的解决问题工具都有些问题,哭哭。

工具 1 github desktop

314fcfa86c05b2471bd5df7458445c3f.png

曾经是个非常好用的一个操作git的应用端。

直到。。。我建的那个hexo_blog 新增加了个 SSH 公钥之后。

总是有问题,不是 SSH 连接失败,就是commit提交error -1.或者狂按fetch也没有反应。

(更新补充:就是 github desktop 没有配置好 SSH 密钥 导致的,解决 ing )

392ec720603c008720a56b7aa4f72401.png

总之,这次先不用它了。

工具 2 终端

终端是个天真的铁憨憨,始终觉得自己同步完了,工作树很干净。

。。。

它究竟是为啥这么认为?

嗷呜,先不去打扰它对这个虚拟世界的美好幻想了吧。

b3b356ddf3a396d9f968d4b6d2b63adf.png

=====================================================

更新部分 !!

这个伙伴遇到了和我一样的问题:

Github远程推送一直Everything up-to-date

根据这篇文章,我突然发现我本地branch只有master, 但是github 上却多出了个默认主分支 main ?!

这是因为今年的敏感政治事件, 从此github 将会用 main 来取代 master !!

可以推断是因为分支导致的问题。

经确认我的更新只改变了我的 master, main 完全没有被改变。

所以要着手解决:

  1. 这篇会教我们怎么把分支从 master 改为 main:

How to rename the "master" branch to "main" in Git

2. 因为是自己一个人用的仓库,如果修复过程中出现 本地和远程仓库冲突, 而不能上传的情况。

确认我只想要本地的内容的话,

可以强制上传:

 git push -u origin master -f

搞定~

=====================================================

工具 3 我自己的手 --手动同步

我的设想是这样,既然两个仓库冲突了,那我删掉其中一个。那不就铁定不会冲突了吗。

呵呵,理想很美好。现实总是。。。啪啪啪打脸呢。

我已经把本地仓库删光光,然后复制了远程的到本地,重新建立了他们的连接。竟然还是不行。

到底是哪里出问题了呢??

难道是我本地空间不足,一些文件上传了云,所以本地没有,导致有冲突吗?

下面是疯狂提示:

1bc36bef8a8a8cf752371f3e40588dc1.png

不不不,应该不会和这个有关系。。。。吧

猜想 -- 为啥会出现这些问题呢?

应该就是远程仓库和本地仓库同步有问题,导致版本冲突,新的操作提交不了。

那么为啥同步会有问题呢?

猜测 1:密钥 不对,远程链接不上

猜测 2: 本地仓库和远程仓库之间没同步好

猜测 3: 难道真的是我本地空间不够?

验证猜想 -- 来嘛,咱一个一个来

问题总是一个一个一个一个一个一个一个...一个一个一个一被解决的嘛。哭

别哭了,先来验证第一个猜想。

github 上关于秘钥的官方教程 错误:权限被拒绝(公钥) - GitHub Docs

是不是因为密钥的问题,去查查看

  1. 1.ssh-keygen -t rsa -C “youremail@example.com” # 创建SSH-Key
  2. 将本地用户目录(用户目录/.ssh/id_rsa.pub)的ssh公钥添加到GitHub中
  3. 2.git bash中输入
  4. cat ~/.ssh/id_rsa.pub
  5. 复制好出现的内容
  6. 3.打开github,在头像下面点击settings,再点击SSH and GPG keys,新建一个SSH,名字随便。
  7. 把刚刚复制的内容全部黏贴到框中,点击确定保存。
  8. # 以上操作我以前已经做过了。也就是说我已经在github添加了我的ssh。我现在只要验证下是不是还连接成功。
  9. (这个ssh链接是和我的整个github的)
  10. 4.输入ssh -T git@github.com # 如果出现我的用户名,那就成功了。

a28b3b69cb367f435be8bd4c42924287.png

那,是本地仓库和远程仓库之间没同步好?

那我就重新建立一次远程连接嘛

  1. git init # 初始化本地仓库
  2. git add ./ # 将文件添加到待提交区域
  3. git commit -m “提交信息” # 提交
  4. 使用GitHub创建仓库(new Repository)
  5. ssh-keygen -t rsa -C “youremail@example.com” # 创建SSH-Key
  6. 将本地用户目录(用户目录/.ssh/id_rsa.pub)的ssh公钥添加到GitHub中
  7. git remote add origin git@github.com:2571503519/MedicalFee-Manage.git # 将远程仓库与本地仓库建立连接
  8. git pull origin master –allow-unrelated-histories # 首先将远程仓库的文件pull下来
  9. #如果执行这句命令时,出现了“ couldn’t find remote ref –allow-unrelated-histories”的错误,输入如下命令即可解决:
  10. ```git pull --rebase origin master
  11. ```git push origin master
  12. git push origin master # 将本地提交同步到远程仓库

注意 git pull --rebase origin master 这个命令,重大突破来咯!!!

当我用这行命令解决 error 的时候,这个解决 error 的语句也出现了 error。。(呃 感觉像是绕口令)

39d52f6a2586f2c16c96d9a26b8c5e52.png

当我搜索解决方案的时候,stackoverflow[https://stackoverflow.com/questions/16064513/git-fatal-unable-to-write-new-index-file]上的这位哥们一下道破了问题的关键。

689208bbc00eaec6474bb78cf8182785.png
他说他是磁盘空间不够了,要清理。

喵个叽 果然和我磁盘空间脱不了关系。

磁盘空间不足

我感觉我快接近问题的本质了,离 K.O 它不远了!!!

我再分析下其他人的回答,好像这个空间是服务器端,也就是github那边的问题。

和我设想的本地空间不足好像有点不一样啊。

再看这位的回答:

42b55c768f54f54a41a67b5dc07032fa.png

妈呀我都快激动哭了,这么朋友也是由这个问题导致的commit不了。

那么我赶紧来试试这个命令:

chmod -RN /path/to/repo #别忘了把/path/to/repo改成你本地仓库的地址哦

然后我继续把刚刚中断的命令敲完:

  1. git pull --rebase origin master #可能会有一些小冲突,按照提示走就行了。
  2. git push origin master

上图!啊哈哈 虽然有些安全性上的小问题,但是我就先无视了。

f0285f76a96d4bb3b959f0d004c70e12.png

7cf66e156632db9e39a4c228368cf6d6.png
耶耶耶耶✌️

完结撒花~~~~~!!

什么? 你以为这就完结了,还是太天真了哦。

未完待续。。。。。。


小插曲:

一开始把拉取远程仓库的命令写错了。

既不是 git pull, 也不是 git pull master ‍♀️。

正确的应该是 git pull origin master ‍♀️!

希望大家不要和我一样犯这个傻傻的错误哦。

1a9002cd0103338e460714f6e8f63614.png
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/382385
推荐阅读
相关标签
  

闽ICP备14008679号