致命:无法将HEAD解析为有效的参考号

时间:2016-06-02 14:16:06

标签: git atlassian-sourcetree sourcetree

我变得致命:未能将HEAD解析为有效的参考。每当我尝试提交时。

我试过了

echo ref: refs/heads/master >.git/HEAD

但它不起作用

也试过

git commit

它无法从以下来源工作

Git 'fatal: No such ref: HEAD' git tag: fatal: Failed to resolve 'HEAD' as a valid ref

请帮忙。我的所有提交历史记录也已消失

9 个答案:

答案 0 :(得分:12)

我也遇到过同样的问题......我已经通过以下方式解决了

  1. 在其他文件夹中克隆您的同一项目
  2. 复制克隆项目的.git文件夹
  3. 最后使用您复制的文件夹替换项目的原始.git文件夹。
  4. 由Sudip Bhandari编辑

    为什么这样做?

    损坏的git存储库通常是由于突然断电或其他异常导致文件系统损坏的结果。由于git将所有信息存储在.git文件夹中,而且这些信息已损坏,因此git不再识别存储库。

    <强>注意事项

    您以前的.git文件夹中存储的内容将会消失。必须重新设置配置文件,例如遥控器的参考名称(如果您有多个)等。

答案 1 :(得分:1)

我的问题在于

git init
git add .

尝试

git reset
  fatal: Failed to resolve 'HEAD' as a valid ref.
git reset --hard
  fatal: Failed to resolve 'HEAD' as a valid ref.

解决

git rm -r --cached .

环境

  

git version 1.7.5.4

     

Ubuntu 11.10

答案 2 :(得分:1)

就我而言,在分支重命名后,我最终得到了两个名称相同的分支。通过在 .git / refs / heads 中删除其中一个,它们都恢复正常。

答案 3 :(得分:1)

由于磁盘故障,我遇到了此问题。我知道这是一个老问题,但也许可以帮助某人。在我的情况下,我有一个本地分支机构,在我的存储库损坏之前我正在工作,因此重新克隆该存储库不适合我。除了我发现的here这小段代码之外,这里或其他帖子中的任何答案都对我有所帮助。我只是在仓库的根目录中运行了此命令:

echo ref: refs/heads/master >.git/HEAD

此后,我能够执行git branchgit commit和所有其他git命令。

我希望这可以帮助某人!

答案 4 :(得分:0)

蓝屏死机事件发生后,我遇到了这个问题-因此类似于Sudip Bhandari所说。

  • 我查看了.git/refs/heads/<mybranch>,发现该条目已损坏(难以辨认)。该文件应该包含HEAD分支的完整提交ID。
  • 我克隆了一个新的存储库,并从新的结帐副本中复制了.git/refs/heads/<mybranch>到已损坏的存储库中(我想我可以通过从存储库或其他内容粘贴最近的commit-id来修复它)。
  • 回到原始存储库,我做了git rm -r --cached .git reset --hard的清理工作,然后发现一切又恢复了正常。

答案 5 :(得分:0)

此问题的最佳解决方案:

'致命:无法将HEAD解析为有效的引用'

  1. 在Eclipse IDE上打开项目

  2. 转到项目“团队”菜单,然后选择“切换到”,最后可以切换到 您当前选择的独立分支。

如下面的屏幕截图所示:

enter image description here

答案 6 :(得分:0)

  1. 备份您现有的 .git 文件夹。
  2. 将您的项目从 git 存储库克隆到新文件夹中。
  3. 从新项目文件夹复制 .git 并替换原来的 .git 文件夹。

答案 7 :(得分:0)

为什么 - 致命:无法将 HEAD 解析为有效引用

git 无法找出引用,如果引用头损坏,您可能会看到此问题。

假设最初您从 master 分支中检出一个功能分支,并且由于某些故障您遇到了这个问题。您可以检查头文件的 ref,它应该损坏或没有价值。理想情况下,该文件应该保留提交哈希值

cat .git/refs/heads/<my-branch>

解决方案 - 替换损坏的 ref 或 ref 值将解决问题。

转到 .git/ref/heads/ 并检查您是否已经在那里有一些分支并将提交哈希值复制到您的分支。

cat .git/refs/heads/<branch_with_commit_details> > .git/refs/heads/<my-branch>

或者您可以将源代码克隆到另一个目录中并将相同的哈希值复制到 my-branch

答案 8 :(得分:-1)

只需删除 .git/refs/heads 下的文件。对我有用