サブモジュールのパスが無視されるとgitが通知するのはなぜですか?
The following path is ignored by one of your .gitignore files:
multi/vim/.vim/bundle/powerline
Use -f if you really want to add it.
これが私がしていることです:
$ git subaddvim git://github.com/Lokaltog/vim-powerline.git powerline
The following path is ignored by one of your .gitignore files:
multi/vim/.vim/bundle/powerline
Use -f if you really want to add it.
$ git help subaddvim
`git subaddvim' is aliased to `!f(){ [ $# -eq 2 ] && git submodule add $1 multi/vim/.vim/bundle/$2; };f'
編集:それp
はp
owerlineにあるように見えます:
$ git subaddvim git://github.com/Lokaltog/vim-powerline.git p
The following path is ignored by one of your .gitignore files:
multi/vim/.vim/bundle/p
Use -f if you really want to add it.
$ git subaddvim git://github.com/Lokaltog/vim-powerline.git owerline
Cloning into 'multi/vim/.vim/bundle/owerline'...
理由がわかりません。
編集2:サブモジュールのクローンの宛先にファイルが見つかりました:
multi/vim/.vim/bundle$ cat powerline/.git
gitdir: ../.git/modules/multi/vim/.vim/bundle/powerline
それを削除して再試行すると、別のエラーが発生します。
$ git subaddvim git://github.com/Lokaltog/vim-powerline.git powerline
fatal: Not a git repository: ../.git/modules/multi/vim/.vim/bundle/powerline
Unable to checkout submodule 'multi/vim/.vim/bundle/powerline'
たぶん、私の.gitで混乱していることがありますか?(私は昨日このリポジトリのクローンを作成し、その変更を元に戻しました。)
編集3 :(git submodule
エイリアスの代わりに)直接使用してみましたが、うまくいきました!git reset --hard
クローンの後に実行することで、(場合によっては)問題を再現できます。それは私のエイリアスがファイルを無視するgitコマンドgitと同じように機能し.git
ない(または私が理解できない何か魔法をする)ことの組み合わせのようです。そして多分私の.git/configが電力線への参照を持っていることと関係があります。
編集4:私の以前の編集は明確ではありませんでした:git submodule
直接使用は機能しましたが。常に機能するとは限りません。そもそもなぜうまくいったのかわかりません。
再現可能なケースに絞り込みました。この問題は、サブモジュールがルートディレクトリにあると想定しているgitが原因のようです。これが私のテストスクリプトです。
if [ ! -d remote ] ; then
echo
echo Setup remote test repo
mkdir remote
cd remote
git init
touch firstfile
git add firstfile
git ci -m'first'
cd -
fi
# Pick one of these lines:
submodule=multi/plugin
# OR
submodule=plugin
echo
echo Setup test repo
mkdir test
cd test
git init
touch firstfile
git add firstfile
git ci -m'first'
echo
echo submodule add
git submodule add ../remote $submodule
ls -ld $submodule/.git
cat $submodule/.git
echo
echo submodule remove
git reset --hard HEAD
ls -ld $submodule/.git
cat $submodule/.git
rm -r $submodule/
echo
echo submodule re-add
git submodule add ../remote $submodule
ls -ld $submodule/.git
cat $submodule/.git
使用submodule=multi/plugin
は失敗します:
submodule re-add
fatal: Not a git repository: ../.git/modules/multi/plugin
Unable to checkout submodule 'multi/plugin'
-rw-r--r-- 1 pydave mkgroup 37 Aug 1 10:08 multi/plugin/.git
gitdir: ../.git/modules/multi/plugin
(この後、を実行するgit submodule add
と、「次のパスは無視されます」というメッセージが表示されます。)
しかしsubmodule=plugin
成功します:
submodule re-add
-rw-r--r-- 1 pydave mkgroup 31 Aug 1 10:07 plugin/.git
gitdir: ../.git/modules/plugin
相対パスは両方ともを使用して../.git
います。これは、サブモジュールがgitプロジェクトのルートにある場合の2番目のオプションに対してのみ正しいものです。
この質問の名前を自分の問題に固有のものに変更し、元の質問を再質問しました。