本篇主要汇总在使用 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_proxy
和https_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 主控器不匹配任何。
- 错误:未能将某些引用推到
git@github.com:molimi/MyBlog.git
2. 解决方案
其实只需要进行下面几步就能把本地项目上传到Github
- 在本地创建一个版本库(即文件夹),通过git init把它变成Git仓库;
- 把项目复制到这个文件夹里面,再通过git add .把项目添加到仓库;
- 再通过
git commit -m "注释内容"
把项目提交到仓库; - 在Github上设置好SSH密钥后,新建一个远程仓库,通过
git remote add origin https://github.com/molimi/MyBlog.git
将本地仓库和远程仓库进行关联; - 最后通过
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. 问题描述
根据报错原因提示 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 # 执行命令 清楚本地缓存刷新