我使用 git 存储库来管理我的 dotfiles,而且我很难让子模块正常工作(我的大部分 .vim 都有很多外部插件)
我有一个别名 cgit 要做(不确定它是否相关)别名 cgit='GIT_DIR=/home/myuser/.config-git GIT_WORK_TREE=/home/myuser/。混蛋'"
因此,我可以使用 cgit pull 拉取存储库,但我无法获取子模块来签出/更新:
$ cgit submodule status
-9895285042a2fd5691b2f6582aa979e4d1bdffea .vim/bundle/ack
-e9267044261481fbb6717b482c2f3811eb61b409 .vim/bundle/command-t
<snip>
$ cgit submodule init
$ cgit submodule update
fatal: working tree '/home/myuser/.' already exists.
Clone of 'https://github.com/mileszs/ack.vim.git' into submodule path '.vim/bundle/ack' failed
$
我已经尝试删除该特定目录并再次尝试,但它只是炸弹。我的 .gitmodules 没有 /home/myuser/。而且我的 .config-git/config 也没有对我的主目录的任何引用,所以我很茫然。如果有帮助,我的 git 版本是 1.7.4.1
谢谢!
更新
似乎第一件事是一个奇怪的错误,其中 git submodule 不接受环境变量(尽管其他 git 命令是),但它需要传递命令行 arg。现在,克隆工作了,它只是抱怨(我手动修复了 ack 配置)
Cloning into '.vim/bundle/command-t'...
remote: Counting objects: 2659, done.
remote: Compressing objects: 100% (1089/1089), done.
remote: Total 2659 (delta 1453), reused 2524 (delta 1325)
Receiving objects: 100% (2659/2659), 447.42 KiB, done.
Resolving deltas: 100% (1453/1453), done.
fatal: Could not chdir to '../../../../../../../nfs_mounts/home/myuser/.vim/bundle/command-t': No such file or directory
如果我查看 ~/.config-git/modules/.vim/ack/config,我会看到:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
worktree = ../../../../../../../nfs_mounts/home/myuser/.vim/bundle/command-t
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://github.com/wincent/Command-T.git
[branch "master"]
remote = origin
merge = refs/heads/master
但是如果我'ls'那个工作树,它似乎就在那里。如果我删除所有 ../ ,然后再次尝试 git 它似乎可以工作