自从我切换到 OS X 和 Vim 后,我发现使用 Git 管理我的所有“点文件”(我的所有配置文件和各种脚本)是最容易的。我已经在 repo 中设置了我的点文件,如下所示本教程,我认为将我的所有设置迁移到 Windows 分区上的 Cygwin 设置中也相当容易。
由于已经在 Github 上设置了 repo,我只需clone
'd 一下 repo,然后将所有文件移到我的主目录,使其成为我的 OS X 主目录的镜像。不幸的是,我似乎无法在 Cygwin 中进一步使用实际的 repo。
问题是我无法在 Cygwin 中将我的 dotfiles repo 与 git 一起使用。该设置与大多数普通 git repos 不同,因为工作目录和 git 目录位于不同的位置。具体来说,工作目录是$HOME
(/Users/kyle
在 OS X 上,/home/kyle
在 Cygwin 中),git repo 是$HOME/.dotfiles.git
。因此,如果我想获取 repo 的状态,例如,我将输入以下命令(当然,我将其别名为减少输入):
git --work-tree=$HOME --git-dir=$HOME/.dotfiles.git status -uno
虽然这在 OS X 上工作正常,但在 Cygwin 中却不行。无论我是否使用我的别名,或者是否替换$HOME
用手,我收到以下 git 错误:
fatal: Not a git repository: /home/Kyle/dotfiles/.git/modules/.build/git
我不明白这个错误是从哪里来的,但路径/home/Kyle/dotfiles
是我最初克隆 git repo 时的原始位置。此外,需要注意的是,repo 严重依赖于子模块。如果需要具体说明,则相关 repo可以在 GitHub 上找到。我在 Cygwin 中运行的设置 repo 的命令可以也可以在自述文件中找到。
答案1
我找到了问题所在。如果你有一个带有子模块的 git repo,然后移动 repo 的内容,那么事情就会开始变得糟糕。
基本上,您应该尝试运行git submodule init
and/or git submodule update
。否则,您将收到问题中提到的神秘错误。