Search code examples
gitversion-controlgit-submodules

How do I check out a specific version of a submodule using 'git submodule'?


How would I go about adding a Git submodule for a specific tag or commit?


Solution

  • Submodule repositories stay in a detached HEAD state pointing to a specific commit. Changing that commit simply involves checking out a different tag or commit then adding the change to the parent repository.

    $ cd submodule
    $ git checkout v2.0
    Previous HEAD position was 5c1277e... bumped version to 2.0.5
    HEAD is now at f0a0036... version 2.0
    

    git-status on the parent repository will now report a dirty tree:

    # On branch dev [...]
    #
    #   modified:   submodule (new commits)
    

    Add the submodule directory and commit to store the new pointer.