【问题标题】:Mystery git branch called 'Icon'名为“图标”的神秘 git 分支
【发布时间】:2016-04-29 06:12:20
【问题描述】:

我正在开发 OSX Yosemite。我好像有一个叫Icon的分支,当然不是我故意创建的:

$ git branch
Icon
* master

但是如果我尝试删除它却找不到分支:

$ git branch -D Icon
error: branch 'Icon' not found.

同样,我也查不出来:

$ git checkout Icon
error: pathspec 'Icon' did not match any file(s) known to git.

到底发生了什么?

【问题讨论】:

  • “git branch -a”和“git show-branch Icon”的输出是什么?
  • 看看 .git/refs/* 和 .git/packed-refs
  • 另外我会尝试用--mirror克隆回购

标签: git macos


【解决方案1】:

这不是一个分支。图标?文件是由 OS X 的 Google Drive 同步客户端自动创建的,尤其是在使用 Git 时会很痛苦。当您创建存储库(或克隆它)时,OS X 会自动放置一个图标?每个目录中的文件,包括您的 .git/branches 目录:

$ ls .git/branches/
Icon?

有关更多信息,请参阅这些相关主题:How to ignore Icon? in git https://productforums.google.com/forum/#!topic/drive/6SIZ7nhNO4w

【讨论】:

    【解决方案2】:

    检查您的回购是否处于良好状态:

    git fsck --full
    

    这将验证您的存储库的完整性。


    .git/refs/heads

    如果此命令完成后,您仍然没有看到任何问题(未报告错误),请检查本地 .git/refs/heads 中存储了哪些分支。

    Git 存储每个分支的分支信息(分支名称文件中的 SHA-1)。如果您看到一个名为 Icon 的文件,只需将其删除即可。


    .git/packed-refs

    编辑.git/packed-refs;如果您看到带有您的分支名称 (Icon) 的行,则将其删除


    尝试将本地仓库与远程仓库同步

    git fetch --all --prune
    

    这将下载新的分支数据并删除所有已删除的远程信息(分支、标签等)。


    git remote prune origin

    与上面带有--prune 标志的提取相同。也将在本地从远程删除任何已删除的数据。

    【讨论】:

    • 谢谢!当我运行git fsck --full 时,我看到很多很多这样的错误:bad sha1 file: .git/objects/d9/Icon。你有什么建议?
    • 运行这个:git gc --aggressive --prune=now
    猜你喜欢
    • 2020-11-04
    • 2019-10-15
    • 1970-01-01
    • 2016-11-27
    • 2022-01-13
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    相关资源
    最近更新 更多