Git Remote: 内部服务错误起因
拉取阿里云·云效仓库代码的时候,之前一直拉取仓库并且推送都没有任何问题,但是最近在云效里面新建了一个仓库,也能成功拉取下来,但就是推送不上去,但是其它仓库都可以随意推送没有任何问题,账号密码也是全局统一的,但就是死活推送不上去,且报错原因非常的不明细,一直说内部服务错误 :
[oh-my-zsh] Random theme 'mrtazz' loaded
MacBook-Pro:merchant_manage:% git push <master>
Enumerating objects: 801, done.
Counting objects: 100% (800/800), done.
Delta compression using up to 8 threads
Compressing objects: 100% (375/375), done.
remote: 内部服务错误 (136/797)
Writing objects: 100% (797/797), 4.29 MiB | 2.03 MiB/s, done.
Total 797 (delta 228), reused 796 (delta 228), pack-reused 0
fatal: the remote end hung up unexpectedly
但是最终还是解决了该问题,以下是解决问题的过程,操作命令都在终端上面了:
- 修改 git 缓冲区大小:
em… 我也是只不过是 git 提交到暂存区好几天没有 push 罢了,全是代码文件,谈不上大文件,但是配置这个帮助解决大文件传输时的问题,我这里操作了该命令故作解释一下。 - 使用 --verbose 选项可以帮助你获取更多的输出信息,这个确实好用,默认报错信息就告诉remote 服务器错误,也不具体说出哪里错误了,使用这个直接就输出了具体错误原因,例如下面贴的终端图上面就是 Authentication failed 说明认证失败,https 克隆账号或密码错误,早这样说不就完事了。。。
- 查看git 配置,这个需要标识身份的,查看配置与你的 git 服务相关信息是否一直,例如:云效
4.需要删除用户凭证,因为我之前一直拉不下来就说明我的凭证是错误的,需要删除之后,重新推送,这个时候因为没有了凭证就会重新触发出凭证验证器让你重新输入用户名密码
。。。以上就是解决过程,很 sb,但是平时也不会遇到这种2b 问题,这突然来了还给我整懵额,所以记录一下。。。
增加 Git 缓冲区大小
有时候增加 Git 的缓冲区大小可以帮助解决大文件传输时的问题。
git config http.postBuffer 524288000
清理并重新推送
有时候清理本地仓库的缓存并重新推送也可以解决问题。
git gc
git push origin master
诊断问题
使用 --verbose 选项获取更多信息
使用 --verbose 选项可以帮助你获取更多的输出信息,以便更好地诊断问题。
git push --verbose origin master
或者
git -c color.branch=false -c color.diff=false -c color.status=false -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/master:refs/heads/master
解释
命令 1: git push --verbose origin master
git push --verbose origin master
--verbose
: 以详细模式运行推送操作,显示更多的调试信息。origin
: 远程仓库的名称,默认情况下是 origin。master
: 本地分支名称,表示将本地 master 分支推送到远程 master 分支。
这个命令会:
- 将本地 master 分支推送到远程 origin 仓库的 master 分支。
- 以详细模式运行,显示更多调试信息。
- 使用默认的 Git 配置(包括颜色输出、路径转义等)。
- 不会推送标签(除非你显式地指定了 --tags 选项)。
命令 2: git -c color.branch=false -c color.diff=false -c color.status=false -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/master:refs/heads/master
git -c color.branch=false -c color.diff=false -c color.status=false -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/master:refs/heads/master
- -c 选项:
color.branch=false
: 禁用分支名称的颜色。color.diff=false
: 禁用差异输出的颜色。color.status=false
: 禁用状态输出的颜色。diff.mnemonicprefix=false
: 禁用在差异输出中使用助记符前缀。core.quotepath=false
: 禁用对路径中的特殊字符进行转义。credential.helper=sourcetree
: 设置凭证助手为 sourcetree,这意味着 Git 将使用 SourceTree 提供的凭证管理器来处理认证信息。
-v
或--verbose
: 以详细模式运行推送操作,显示更多的调试信息。--tags
: 推送所有标签到远程仓库。origin
: 远程仓库的名称,默认情况下是 origin。refs/heads/master:refs/heads/master
: 显式指定要推送的本地分支和远程分支。这里表示将本地的 master 分支推送到远程的 master 分支。
删除现有的凭证缓存
删除现有的凭证缓存并重新输入用户名和密码。
# macOS/Linux
rm -f ~/.git-credentials
# Windows
del %USERPROFILE%\.git-credentials
重新推送以触发凭证输入
git push origin master
使用 HTTPS URL 格式
git remote set-url origin https://xx.com/xx.git