Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
摆脱';。。。未指向有效的对象';对于一个老的git分支_Git_Version Control_Github - Fatal编程技术网

摆脱';。。。未指向有效的对象';对于一个老的git分支

摆脱';。。。未指向有效的对象';对于一个老的git分支,git,version-control,github,Git,Version Control,Github,我有一个Git回购的分支,而我的克隆似乎与一个旧的、不再存在的分支有问题。我一直看到这样的信息: 错误:refs/heads/t_1140未指向有效对象 我没有任何其他消息,回购协议工作正常。没有任何操作可以阻止我在其他分支上工作、推动更改、拉动…等等 我环顾了一下四周,对于如何避开这个问题,没有明确的指示。我试图执行git fsck--full,但没有看到任何错误。只需在悬空的消息上加载… 我还检查了我的.git/config,没有对该分支的引用,还检查了.git/refs/heads,没有对

我有一个Git回购的分支,而我的克隆似乎与一个旧的、不再存在的分支有问题。我一直看到这样的信息:

错误: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存储库时遇到了这个问题,我所在的系统运行的是较旧版本的git
v1.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

顺便说一句,我在按下master
git 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!