I can't seem to get rid of untracked content in Git's submodules. Running git status
yields:
# On branch master # Changes not staged for commit: # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # (commit or discard the untracked or modified content in submodules) # # modified: bundle/snipmate (untracked content) # modified: bundle/surround (untracked content) # modified: bundle/trailing-whitespace (untracked content) # modified: bundle/zencoding (untracked content) # no changes added to commit (use "git add" and/or "git commit -a")
Adding the --ignore-submodules
parameter hides these messages; but I wonder if there's a way to get rid of this dirt in a more suitable, core-ish, manner.
Since the git status reports untracked content, the actual way to have a clean status would be to go into each one of those submodules and:
.gitignore
specific to each module. .git/info/exclude
, as peci1 reports in the comments.or add dirty to the submodule specification, as mentioned in ezraspectre's answer (upvoted).
git config -f .gitmodules submodule.<path>.ignore untracked
or add a global .gitignore
file (often ~/.gitignore-global
). Like for example .DS_Store
or in my case Carthage/Build
as reported by Marián Černý in the comments. See .gitginore
man page:
Patterns which a user wants Git to ignore in all situations (e.g., backup or temporary files generated by the user’s editor of choice) generally go into a file specified by
core.excludesFile
in the user’s~/.gitconfig
. Its default value is$XDG_CONFIG_HOME/git/ignore
. If$XDG_CONFIG_HOME
is either not set or empty,$HOME/.config/git/ignore
is used instead.