Git报错解决

        本篇主要汇总在使用 Git 进行提交和拉取文件时,遇到的问题的解决方案,以便下次查找。

1 关于使用Git出现“git Failed to connect to 127.0.0.1 port xxxx: Connection refused”的问题解决方案

1. 问题描述

        在使用 git 拉取、提交代码的时候,会出现 git Failed to connect to 127.0.0.1 port xxxx: Connection refused 的问题。

        原因:无法连接到127.0.0.1: xxx端口: 连接被拒绝。

2. 解决方案
方案一:
        思路:查询当前是否有代理,如果有就取消。

// 首先,查一下当前全局的 http 代理:
git config --global http.proxy
// 如果有代理,就取消
git config --global --unset http.proxy


// 再查 https 的代理:
git config --global https.proxy
// 同样的,有就取消
git config --global --unset https.proxy

方案二

        上面的方案如果不行的话,再参考这个方案

// 首先,查一下代理:
env|grep -i proxy
// 有就取消
unset http_proxy
unset https_proxy

// 再查
env|grep -i proxy
// 正常情况下是没有代理了
// 再次查询一下,如果还有的再取消

方案三

  • 修改环境变量
  • 在系统变量中找到了变量http_proxyhttps_proxy,用户变量也可以看看有没有,删除他就可以了。
  • 重启计算机。
  • 再用 git,正常了,再查env|grep -i proxy,代理没有了。

3. 小结

        代理没有了,就可以正常拉取、提交代码了。

本部分参考自:关于使用Git出现“git Failed to connect to 127.0.0.1 port xxxx: Connection refused”的问题解决方案

2 error: src refspec master does not match any

1. 问题描述

        在将本地项目上传到新建的仓库时,出现了下图的错误:

        问题的内容是:

  • 错误:SRC ReFSPEC 主控器不匹配任何。
  • 错误:未能将某些引用推到 [email protected]:molimi/MyBlog.git

2. 解决方案

        其实只需要进行下面几步就能把本地项目上传到Github

  1. 在本地创建一个版本库(即文件夹),通过git init把它变成Git仓库;
  2. 把项目复制到这个文件夹里面,再通过git add .把项目添加到仓库;
  3. 再通过 git commit -m "注释内容" 把项目提交到仓库;
  4. 在Github上设置好SSH密钥后,新建一个远程仓库,通过 git remote add origin https://github.com/molimi/MyBlog.git 将本地仓库和远程仓库进行关联;
  5. 最后通过 git push -u origin master 把本地仓库的项目推送到远程仓库(也就是Github)上;(若新建远程仓库的时候自动创建了README文件会报错,解决办法看上面)。

本部分参考自:error: src refspec master does not match any. 错误的解决办法

3 fatal: unable to access ‘https://XXX/’: OpenSSL SSL_read: Connection was reset, errno 10054

1. 问题描述

        之前关联的github库没办法上传(push)了,提示本地库不存在。于是做了

git init  # 初始化资源库
git remote-v origin https://http://github.com/我的库  # 将本地库与远程库做关联,
git pull      # 先将线上的资源拉取下来。

        问题出在了git pull的时候,提示错误

fatal: unable to access 'http://github.com/我的库/': OpenSSL SSL_read: Connection was reset, errno 10054

        报错原因:

  • 字面意思:服务器的SSL证书灭有经过第三方机构的签署。
  • 网上信息也有的说可能是网络不稳定,连接超时导致。

2. 解决方案
        修改设置,解除SSL验证。打开 命令行工具, 输入:

git config --global http.sslVerify "false"
git config --global https.sslVerify "false"

        真实原因是DNS被污染,国内ping到的github.com可能是被篡改过的。自己修改hosts把github的正确IP加进去就可以了。

4 remote: error: File:1f6cc8452313 157.10 MB, exceeds 100.00 MB

1. 问题描述

Git报错解决_第1张图片

        根据报错原因提示 Gitee免费用户单个文件最大100M,因此只能上传小于100M文件

(1) 查看大文件名称

$ git rev-list --objects --all | grep 9fc69e9816e94fb5bde1f86b31581d7ec12ede3b
9fc69e9816e94fb5bde1f86b31581d7ec12ede3b 2023/项目实战/NotPush/pytorch_resnet50.pth

        查出来了原来是2023/项目实战/NotPush/pytorch_resnet50.pth这个文件大于100M了。

        当然,你也可以执行下列代码:,查出历史提交的最大文件。

$ git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"

2. 解决方案

(1) 在提交中删除该文件

git filter-branch --force --index-filter  "git rm --cached --ignore-unmatch 2023\\项目实战\\NotPush\\pytorch_resnet50.pth"  --prune-empty --tag-name-filter cat -- --all
  • 若改行代码报错:Cannot rewrite branches: You have unstaged changes
  • 解决方案:先执行:git stash,再执行一遍该命令即可。

(2) 重新提交

        以强制覆盖的方式推送你的repo, 命令如下:

git push origin master --force

(3) 清理和回收空间

        虽然上面我们已经删除了文件, 但是我们的repo里面仍然保留了这些objects, 等待垃圾回收(GC), 所以我们要用命令彻底清除它, 并收回空间,命令如下:

rm -rf .git/refs/original/
 
git reflog expire --expire=now --all
 
git gc --prune=now      # 执行命令 清楚本地缓存刷新

你可能感兴趣的:(Git,git,Gitee,naster,remote,报错解决)