How to get rid of Git submodules untracked status?
I found this blog post to work overall. By adding the ignore = dirty
option to each one of the entries in the .gitmodules
file.
[submodule "zen-coding-gedit3"]
path = zen-coding-gedit3
url = git://github.com/leafac/zen-coding-gedit3.git
ignore = dirty
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:
- add and commit the untracked contents,
- or reference the untracked contents in a
.gitignore
specific to each module. - or you can add the same ignored content to the submodule's
.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 caseCarthage/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.
You can also go to each submodule dir and act as a separated git. For example:
cd my/project/submodule
git status
... /gets the list of modified files/
git add . //to add all of them to commit into submodule
git commit -m "message to your submodule repo"
you can also update your remote submodule repo with
git submodule update
after all