Home Explore Blog CI



git

5th chunk of `Documentation/git-submodule.adoc`
17b55a5906a5c6ac5c9e72fc71e64bbebbb7eecba3f806d30000000100000fa1
 submodules' remote URL configuration setting
	to the value specified in `.gitmodules`. It will only affect those
	submodules which already have a URL entry in .git/config (that is the
	case when they are initialized or freshly added). This is useful when
	submodule URLs change upstream and you need to update your local
	repositories accordingly.
+
`git submodule sync` synchronizes all submodules while
`git submodule sync -- A` synchronizes submodule "A" only.
+
If `--recursive` is specified, this command will recurse into the
registered submodules, and sync any nested submodules within.

absorbgitdirs::
	If a git directory of a submodule is inside the submodule,
	move the git directory of the submodule into its superproject's
	`$GIT_DIR/modules` path and then connect the git directory and
	its working directory by setting the `core.worktree` and adding
	a .git file pointing to the git directory embedded in the
	superprojects git directory.
+
A repository that was cloned independently and later added as a submodule or
old setups have the submodules git directory inside the submodule instead of
embedded into the superprojects git directory.
+
This command is recursive by default.

OPTIONS
-------
-q::
--quiet::
	Only print error messages.

--progress::
	This option is only valid for add and update commands.
	Progress status is reported on the standard error stream
	by default when it is attached to a terminal, unless -q
	is specified. This flag forces progress status even if the
	standard error stream is not directed to a terminal.

--all::
	This option is only valid for the deinit command. Unregister all
	submodules in the working tree.

-b <branch>::
--branch <branch>::
	Branch of repository to add as submodule.
	The name of the branch is recorded as `submodule.<name>.branch` in
	`.gitmodules` for `update --remote`.  A special value of `.` is used to
	indicate that the name of the branch in the submodule should be the
	same name as the current branch in the current repository.  If the
	option is not specified, it defaults to the remote 'HEAD'.

-f::
--force::
	This option is only valid for add, deinit and update commands.
	When running add, allow adding an otherwise ignored submodule path.
	When running deinit the submodule working trees will be removed even
	if they contain local changes.
	When running update (only effective with the checkout procedure),
	throw away local changes in submodules when switching to a
	different commit; and always run a checkout operation in the
	submodule, even if the commit listed in the index of the
	containing repository matches the commit checked out in the
	submodule.

--cached::
	This option is only valid for status and summary commands.  These
	commands typically use the commit found in the submodule HEAD, but
	with this option, the commit stored in the index is used instead.

--files::
	This option is only valid for the summary command. This command
	compares the commit in the index with that in the submodule HEAD
	when this option is used.

-n::
--summary-limit::
	This option is only valid for the summary command.
	Limit the summary size (number of commits shown in total).
	Giving 0 will disable the summary; a negative number means unlimited
	(the default). This limit only applies to modified submodules. The
	size is always limited to 1 for added/deleted/typechanged submodules.

--remote::
	This option is only valid for the update command.  Instead of using
	the superproject's recorded SHA-1 to update the submodule, use the
	status of the submodule's remote-tracking branch.  The remote used
	is branch's remote (`branch.<name>.remote`), defaulting to `origin`.
	The remote branch used defaults to the remote `HEAD`, but the branch
	name may be overridden by setting the `submodule.<name>.branch`
	option in either `.gitmodules` or `.git/config` (with `.git/config`
	taking precedence).
+
This works for any of the supported update procedures (`--checkout`,
`--rebase`, etc.).  The only change is

Title: Git Submodule Command Options
Summary
The provided text lists various options for Git submodule commands, including sync, absorbgitdirs, and others. These options control behavior such as recursion, quiet mode, progress reporting, and branch specification. They can be used to customize the behavior of Git submodule commands, such as updating submodules, adding or removing submodules, and summarizing submodule commits.