当前位置: 首页 > 工具软件 > git-recall > 使用案例 >

Git remote(远端)分支丢失问题

越琦
2023-12-01

用的VS2019原生git工具,云端采用gitee
问题描述:分支“dev”,假设remote origin dev的状态为t0,本地dev更改到状态t10(期间经过10次commit)后push了一次,此后gitee云端可以看到最新的提交记录。
但本地的dev状态却回到了t0时刻,显示有10个新的commit,执行提取、拉取、推送操作均失败,git fatal error提示见“输出”,但VS的输出窗口并没有详细的错误提示,且发现remote分支下的dev分支没有了。
通过命令行直接执行git fetch,可以见到错误信息

error: cannot lock ref 'refs/remotes/origin/dev': unable to resolve reference 'refs/remotes/origin/dev': reference broken

猜测是ref文件损坏了,找到.git/refs/remotes/origin文件夹下的dev文件,文件大小1KB,但打开一看全是NUL NUL NUL…估计是push的时候写入本地文件时出BUG了,把dev文件直接搞坏了。
把这个文件删掉,在VS里提取,依然显示fatal error,汗!还是老办法,进命令行运行git fetch,终于可以获取remote dev分支了。
接下来拉取分支,提示另一个错误

fatal: bad object refs/remotes/origin/dev

应该还有损坏的文件,在.git里面找了下,找到.git/logs/refs/remotes/origin文件夹下面还有一个dev文件,打开看了倒不是乱码,是一些提交记录。把这个文件删掉,重新拉取终于成功了!注意如果只是改文件名不删除是不行的,它还是会识别到

 类似资料: