git repo奇怪的问题?

时间:2011-09-04 18:35:07

标签: git git-submodules git-status

我刚刚在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'  

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

修复git-repo

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

修复子模块

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

为什么会坏掉?

答案可能是,访问权限存在问题。也许您正在与工作副本上的多个用户合作?

另一个答案可能是某种同步软件,例如 OwnCloud Dropbox Google云端硬盘或类似我的情况 BitTorrent同步即可。我的工作副本位于sync-folder中,该文件夹在工作和家中的计算机之间同步。这会导致一些权限问题。

希望它有所帮助。