摆脱';。。。未指向有效的对象';对于一个老的git分支
我有一个Git回购的分支,而我的克隆似乎与一个旧的、不再存在的分支有问题。我一直看到这样的信息:摆脱';。。。未指向有效的对象';对于一个老的git分支,git,version-control,github,Git,Version Control,Github,我有一个Git回购的分支,而我的克隆似乎与一个旧的、不再存在的分支有问题。我一直看到这样的信息: 错误:refs/heads/t_1140未指向有效对象 我没有任何其他消息,回购协议工作正常。没有任何操作可以阻止我在其他分支上工作、推动更改、拉动…等等 我环顾了一下四周,对于如何避开这个问题,没有明确的指示。我试图执行git fsck--full,但没有看到任何错误。只需在悬空的消息上加载… 我还检查了我的.git/config,没有对该分支的引用,还检查了.git/refs/heads,没有对
错误:refs/heads/t_1140未指向有效对象代码>
我没有任何其他消息,回购协议工作正常。没有任何操作可以阻止我在其他分支上工作、推动更改、拉动…等等
我环顾了一下四周,对于如何避开这个问题,没有明确的指示。我试图执行git fsck--full,但没有看到任何错误。只需在悬空的消息上加载…
我还检查了我的.git/config
,没有对该分支的引用,还检查了.git/refs/heads
,没有对t_1140
你知道如何消除这个错误吗
p、 我再次尝试克隆我的回购协议,似乎错误也是我的Github回购协议。所以,我现在唯一能想到的就是放弃我的回购协议,重新开始。检查.git/refs/remotes/origin
。它们在那里,而上游不再有它们。要清除不再存在的远程设备,请运行
git remote prune origin
在实际操作之前,您还可以通过添加--dry run
来了解它的作用。您说您有:
还选中了.git/refs/heads,没有提到t_1140
。。。这是非常令人惊讶的。只有当文件.git/refs/heads/t_1140
存在时,我才能看到这个错误是如何发生的。有没有可能你弄错了
更正:Charles Bailey在下面指出,refs可能已打包,在这种情况下,中没有相应的文件。git/refs/heads
您的本地克隆可能很好,问题是您的GitHub存储库中缺少t_1140
分支对象
我也有这个问题,GitHub支持修复了这个问题,我想通过删除refs/heads/t_1140
更新:我在另一个分支中再次遇到错误,我可以通过运行以下命令来修复它:
git push origin :refs/heads/t_ispn982_master
您应该会收到如下警告消息:
remote: warning: Allowing deletion of corrupt ref.
但是损坏的分支将被删除我在尝试克隆一些github存储库时遇到了这个问题,我所在的系统运行的是较旧版本的gitv1.7.4
,一个快速更新修复了它
remote: Counting objects: 533, done.
remote: Compressing objects: 100% (248/248), done.
remote: Total 533 (delta 232), reused 529 (delta 230)
Receiving objects: 100% (533/533), 121.36 KiB, done.
Resolving deltas: 100% (232/232), done.
error: refs/remotes/origin/master does not point to a valid object!
verror: Trying to write ref refs/heads/master with nonexistant object 0457f3e2e9432e07a1005f0f4161dc4b8215f128
fatal: Cannot update the ref 'HEAD'.
我经常遇到这个错误。git remote prune origin不适合我
[Update.AFAIU,由于使用git alternate,我遇到了这个问题。假设我已获得repo A,注册为repo B的alternate。当我在repo A中创建一个新分支br,并在repo B中获取repo A作为remote时,git将为新分支创建一个remote ref.git/refs/remotes/A/br。当我在repo A中删除该分支时,在相应的g对象被垃圾收集,我得到“错误:refs/remotes/A/br未指向有效对象!”]
我已经编写了这个脚本(更新以处理压缩引用)来删除悬空引用(使用中的信息)
我要为使用VisualStudio的人付出我的两分钱。
在尝试删除本地分支并通过命令行运行以下命令时,我遇到了此问题:
git branch -D <branchName>
git分支-D
如果此操作失败:
错误:无法运行重新打包
在.git/packed refs
中查找列出的分支并删除这些行。我尝试了所有其他解决方案,但最终解决了问题。通过.git目录对分支进行文本搜索
使用类似于grep
或findstr
的方法删除所有实例。这为我修复了它:
git push origin :refs/remotes/origin/[branch name]
git push origin :refs/heads/origin/[branch name]
警告:这将从服务器上删除分支-该分支上未合并到其他分支的任何更改都将丢失。我遇到了此问题,上述建议的任何补救措施均无效。
因此,我编辑了.git/packed refs并删除了提到不存在的分支的行。
一切突然好了起来
一定会喜欢这些人类可读的文件格式…这将清除任何缺失的参考:
git for-each-ref --format="%(refname)" | while read ref; do
git show-ref --quiet --verify $ref 2>/dev/null || git update-ref -d $ref
done
在尝试了各种解决方案后,我终于在Windows命令提示符下清理了引用,具体如下:
for /f %i in ('git for-each-ref --format="%(refname)"') do git show-ref --quiet --verify %i || git update-ref -d %i
假设您尝试过用以下方法修剪:
git远程修剪源代码
而您仍然无法使其工作,作为最后手段,请尝试删除t1140
基本上
1.cd参考/标题
2.rm-r t_1140
顺便说一句,我在按下mastergit push origin master
时遇到了这个错误,我确信我在master中:情况越来越糟,它现在也影响了我新创建的分支,如中所示。在按下新创建的t_1144
分支后,我突然收到了错误消息每当我尝试推动另一个分支时,该分支都会出现。从那时起,任何与上游回购同步的尝试都会显示该错误和t_1140
错误:我已经擦除了我的分叉,再次分叉。现在一切看起来都很好。可能相关:嗯,这不起作用。我没有看到对t_1140的引用,我仍然有相同的错误。谢谢你的帮助帮助!@GalderZamarreño:git show ref
显示了什么?分支引用可能已打包,不一定对应于.git/refs
下的文件。修剪对我也不起作用。我所做的是导航到指定的文件夹“.git/refs/remotes/origin”然后我简单地删除了与我的错误消息匹配的文件。这使错误消失了。这并不能解决OP的问题。请看,您永远不要假设所有引用都与.git/refs
中的文件对应,因为它们可能已经打包。最好使用git show ref
来显示打包和解包的引用。@Charles贝利:谢谢你的合作
for /f %i in ('git for-each-ref --format="%(refname)"') do git show-ref --quiet --verify %i || git update-ref -d %i
error: refs/heads/t_1140 does not point to a valid object!