Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Browse files

submodule add: If --branch is given, record it in .gitmodules

This allows you to easily record a submodule.<name>.branch option in
.gitmodules when you add a new submodule.  With this patch,

  $ git submodule add -b <branch> <repository> [<path>]
  $ git config -f .gitmodules submodule.<path>.branch <branch>

reduces to

  $ git submodule add -b <branch> <repository> [<path>]

This means that future calls to

  $ git submodule update --remote ...

will get updates from the same branch that you used to initialize the
submodule, which is usually what you want.

Signed-off-by: W. Trevor King <>
Signed-off-by: Junio C Hamano <>
  • Loading branch information...
1 parent 06b1abb commit b928922727d6691a3bdc28160f93f25712c565f6 @wking wking committed with gitster
2  Documentation/git-submodule.txt
@@ -208,6 +208,8 @@ OPTIONS
Branch of repository to add as submodule.
+ The name of the branch is recorded as `submodule.<path>.branch` in
+ `.gitmodules` for `update --remote`.
@@ -417,6 +417,10 @@ Use -f if you really want to add it." >&2
git config -f .gitmodules submodule."$sm_name".path "$sm_path" &&
git config -f .gitmodules submodule."$sm_name".url "$repo" &&
+ if test -n "$branch"
+ then
+ git config -f .gitmodules submodule."$sm_name".branch "$branch"
+ fi &&
git add --force .gitmodules ||
die "$(eval_gettext "Failed to register submodule '\$sm_path'")"
1  t/
@@ -133,6 +133,7 @@ test_expect_success 'submodule add --branch' '
cd addtest &&
git submodule add -b initial "$submodurl" submod-branch &&
+ test "initial" = "$(git config -f .gitmodules submodule.submod-branch.branch)" &&
git submodule init
) &&

0 comments on commit b928922

Please sign in to comment.
Something went wrong with that request. Please try again.