バックグラウンド
Linux で Git 1.8.1.1 を使用します。リポジトリは次のようになります。
master
book
サブモジュールは次のように作成されました。
$ cd /path/to/master
$ git submodule add https://user@bitbucket.org/user/repo.git book
サブモジュールはbook
きれいです:
$ cd /path/to/master/book/
$ git status
# On branch master
nothing to commit, working directory clean
問題
一方、マスターは、本のサブモジュールに「新しいコミット」があることを示しています。
$ cd /path/to/master/
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: book (new commits)
#
no changes added to commit (use "git add" and/or "git commit -a")
マスターもクリーンになるように、Git はサブモジュール ディレクトリを完全に無視する必要があります。
$ cd /path/to/master/
$ git status
# On branch master
nothing to commit, working directory clean
試行 #1 の失敗 - ダーティ
master/.gitmodules
この回答によると、ファイル内には次のものがあります。
[submodule "book"]
path = book
url = https://user@bitbucket.org/user/repo.git
ignore = dirty
失敗した試行 #2 - 追跡されていない
この回答master/.gitmodules
に従って、次のように変更されました。
[submodule "book"]
path = book
url = https://user@bitbucket.org/user/repo.git
ignore = untracked
失敗 #3 - showUntrackedFiles
この回答master/.git/config
に従って、次のように編集されました。
[status]
showUntrackedFiles = no
失敗 #4 - 無視
book ディレクトリをマスター無視ファイルに追加しました。
$ cd /path/to/master/
$ echo book > .gitignore
失敗 #5 - クローン
次のように book ディレクトリを master に追加しました。
$ cd /path/to/master/
$ rm -rf book
$ git clone https://user@bitbucket.org/user/repo.git book
質問
book
サブモジュールをリポジトリの下の独自のリポジトリディレクトリに配置しmaster
ながら、サブモジュールを無視するにはどうすればよいbook
ですか? つまり、以下は表示されません。
#
# modified: book (new commits)
#
git status
マスターリポジトリで実行するときにそのメッセージを抑制する方法は?
git サブモジュールの落とし穴に関する記事は、これが不適切なサブモジュールの使用法であることを示唆していますか?