5

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

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'  
4

3 回答 3

3

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

于 2011-09-07T11:27:16.477 回答
1

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

于 2012-01-06T23:46:00.327 回答
0

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

修复 git-repo

正如乔丹所说:进入你的根目录并运行git init. 然后再试git status一次。

修复子模块

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

为什么它坏了?

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

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

希望能帮助到你。

于 2014-04-06T08:02:10.473 回答