Git

git add で fatal: Pathspec '/moge/hoge' is in submodule が出た時の対応

More than 3 years have passed since last update.


現象

gitのリポジトリにディレクトリごと何かを追加した際に、ディレクトリがfileとして認識されてしまっていることがある。

$git status

On branch test_branch
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

modified: .gitmodules
new file: moge/hoge ->hogeは本当はディレクトリ

このまま気づかずにaddしてしまうと、gitにファイルとして認識されてしまう。ディレクトリの中身はindexされない。

無理やりディレクトリの中身をadd しようとすると以下のようなエラーがでてしまう。

$ git add moge/hoge/*

fatal: Pathspec 'moge/hoge/file' is in submodule 'moge/hoge'


解決策

一旦 moge/hogeをgitレポジトリから省いて、再度追加してあげます。

git レポジトリのroot直下で以下実行。

git rm -rf --cached moge/moge/

git add moge/hoge