【问题标题】:Strange problem with git repo?git repo 的奇怪问题?
【发布时间】:2011-09-04 18:35:06
【问题描述】:

我刚刚在我的 Mac 上升级到 OSX Lion,我在 git repo 上遇到了一个奇怪的问题。我的 .vim 文件受版本控制,其中有许多配置为 git 子模块的插件。升级后,我在 .vim 目录中运行了 git status 命令并得到以下信息:

fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed
fatal: git status --porcelain failed

有人知道我的问题是什么吗?我在 Google 和 SO 上搜索了上述错误消息,但没有找到任何答案。我还注意到 git 现在似乎很慢。另外,我在其他 git repos 中没有其他问题(预计会出现缓慢问题),这让我认为问题与 Lion 无关。有人对我如何修复我的 .vim 存储库有任何建议吗?提前感谢您的帮助。

这里是 drizzd 请求的一些跟踪输出:

setup: worktree: /Users/sbrown/.vim/bundle/supertab  
setup: cwd: /Users/sbrown/.vim/bundle/supertab  
setup: prefix: (null)  
trace: built-in: git 'status' '--porcelain'  
trace: run_command: 'status' '--porcelain'  
trace: exec: 'git' 'status' '--porcelain'  
setup: git_dir: .git  
setup: worktree: /Users/sbrown/.vim/bundle/surround  
setup: cwd: /Users/sbrown/.vim/bundle/surround  
setup: prefix: (null)  
trace: built-in: git 'status' '--porcelain'  
trace: run_command: 'status' '--porcelain'  
trace: exec: 'git' 'status' '--porcelain'  
setup: git_dir: .git  
setup: worktree: /Users/sbrown/.vim/bundle/tasklist  
setup: cwd: /Users/sbrown/.vim/bundle/tasklist  
setup: prefix: (null)  
trace: built-in: git 'status' '--porcelain'  
trace: run_command: 'status' '--porcelain'  
trace: exec: 'git' 'status' '--porcelain'  
setup: git_dir: .git  
setup: worktree: /Users/sbrown/.vim  
setup: cwd: /Users/sbrown/.vim  
setup: prefix: bundle/vim-colors-solarized/  
trace: built-in: git 'status' '--porcelain'  
trace: run_command: 'status' '--porcelain'  
trace: exec: 'git' 'status' '--porcelain'  

【问题讨论】:

  • 你的意思是stackoverflow.com/questions/5456683/…没有帮助?
  • 而且缓慢可能是由一些 git bash 提示配置副作用 (superuser.com/questions/31744/…)
  • 感谢您的帮助。我仍然不完全清楚。我的子模块中是否存在异常的 .git 文件?我看了看,在两三个子模块中没有看到任何这样的文件。
  • 当然,我只是参考这些问题来检查它们是否可以为您提供任何线索。
  • 嗯,我所有的子模块都有 .git 目录。 git 是否将 .git 目录放在每个子模块中,还是这是我的问题?

标签: git git-submodules git-status


【解决方案1】:

为了将来参考,我可以纠正问题的唯一方法是删除所有子模块,然后重新安装它们。

【讨论】:

  • 在这里工作。 rm 子模块,然后运行 ​​git submodule initgit submodule update
【解决方案2】:

如果它对其他人有帮助,我刚刚遇到了同样的问题,发现在项目根目录中运行 git init 可以解决它。

【讨论】:

    【解决方案3】:

    您的 git 项目(或至少一个子模块,如果有的话)已损坏。这意味着您的.git-文件夹中的某些文件已损坏或丢失。

    修复 git-repo

    正如乔丹所说:转到你的根目录并运行git init。然后再试试git status

    修复子模块

    如果这不起作用,请导航到您的子模块文件夹并再次尝试git init。返回根目录并运行git status

    为什么坏了?

    一个答案可能是访问权限存在问题。也许您正在与多个用户一起处理工作副本?

    另一个答案可能是某种同步软件,如 OwnCloudDropboxGoogle Drive 或像我的情况 BitTorrent同步。我的工作副本位于同步文件夹中,该文件夹在我的工作和家中的计算机之间同步。这会导致一些权限问题。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 2013-01-12
      • 2021-11-08
      • 2015-02-27
      • 2018-06-26
      • 2011-08-13
      相关资源
      最近更新 更多