Do you ignore a git submodule in your .gitignore or commit it to your repo?

I’ve added a submodule to my project in project_dir/vendor/submodule_one now each time I run git status I get modified: vendor/submodule_one (new commits).

My question is whats the best way to deal with this? Do I add the vendor/submodule_one-folder to my .gitignore as my main project shouldn’t need to know about the specifics of my submodule?

  • How do I force git NOT to prompt for credentials
  • Git: Recover failed commit's message
  • How to rebase only the commits after the latest merge?
  • Does git diff compare between index and working copy or last commit and working copy?
  • TeamCity: On successful build push to Git Repo
  • Revert back changes made by merge
  • Or when I’m changing and commiting changes to my submodule do I need to make commits in my main project also?

    Just getting started with submodules and couldn’t seem to find much info beyond setting them up.

  • devtools::install_git Over SSH
  • How to maintain shallow clone of a set of branches in git
  • Push changes to another branch in github
  • How to list all distinct extensions of tracked files in a git repository?
  • git cherry-pick merge conflict pulling in other commits?
  • Does keeping (large-ish) binary files in a Git repository affect performance for operations besides cloning?
  • One Solution collect form web for “Do you ignore a git submodule in your .gitignore or commit it to your repo?”

    No, you don’t need to add your submodule to your .gitignore: what the parent will see from your submodule is a gitlink (a special entry, mode 160000).

    That means: any change directly made in a submodule needs to be followed by a commit in the parent directory.
    That way, the parent directory will record the right commit for the state of the submodule: That commit is the “gitlink” mentioned above;

    You can read more about that policy in “git submodule update (true nature of submodules)”.
    The main idea behind submodules is a component-based approach, where you reference other repos at specific commits. But if you change anything in those submodules, you need to update those references in the parent repo as well.


    Note that with Git 2.13 (Q2 2017), while not ignoring the gitlink, you can still ignore the submodule with:

    git config submodule.<name>.active false
    

    See more at “Ignore new commits for git submodule”.

    Git Baby is a git and github fan, let's start git clone.