【Git】git error记录之 "unpacking the sent packfile failed on the remote"
错误信息:
error: cannot open .git/FETCH_HEAD: Permission denied
unpacking the sent packfile failed on the remote
问题起因
在上周的工作中遇到一个提交代码至远程server失败的情况. 我在本地的git上一共提交过5次记录,使用vs集成的team explorer将这些本地commit push到remote server时候, 在output window中报出如下错误:
unpacking the sent packfile failed on the remote
在网上找了很多解决方案都没有一个符合我的情况的. 估计也是这个error比较泛泛,不能准确定位问题原因的一个搜索关键字.一时之间我无从下手.
问题排查
经过一些搜索后网上有指出出现这个错误是因为本地的代码损坏了. 其实不明白为什么损坏, 我想测试一下是否损坏,于是我想到用git bash试试能否将远程代码pull到本地, 结果是没问题的. git bash显示本地代码已经up to date. 那么问题来了, 我可以pull代码却不能push代码,这是为什么?
所以我就用bash尝试push代码,但是bash上面显示的错误是不一样的.它报的错误是
error: cannot open .git/FETCH_HEAD: Permission denied
这个错误我查了一下估计是没有权限, 很奇怪为什么我的code我为什么没有权限.
后来思索了一下, 我启动bash是用的我的login user, 但是我的git是使用vs的team explorer进行维护的. vs是用的administrator启动的. 有没有可能是这个原因.
我去找了code路径下面的git文件夹下面的所有带HEAD的文件, 检查了一下security发现我的login user并不在里面. 我对所有文件进行加权后这个问题就没了.
但是另一个问题出现了, 报错如下图:
很明显这应该是问题的根源, 我猜测vs的output的window没有将真正的错误给显示出来.
这个错误是由于我提交的内容里面, 由于包含了某些机密的内容无法提交. 后期我将包含问题的app.config reset回本地, 其他的code则可以顺利提交
问题总结
git的使用还是需要看看了解概念的.下面是我在解决问题的过程中用到的一些资料网址:
https://githowto.com/
https://gist.github.com/wilsonsilva/c6f870e6423a1c0076224d1f1e468dbb