rebase: rewrite --(no-)autosquash documentation

Rewrite the description of the rebase --(no-)autosquash options to try
to make it a bit clearer. Don't use "the '...'" to refer to part of a
commit message, mention how --interactive can be used to review the
todo list, and add a bit more detail on commit --squash/amend.

Signed-off-by: Andy Koppe <andy.koppe@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Andy Koppe 2023-11-14 21:43:39 +00:00 committed by Junio C Hamano
parent 297be59456
commit cb00f524df

View File

@ -589,21 +589,27 @@ See also INCOMPATIBLE OPTIONS below.
--autosquash:: --autosquash::
--no-autosquash:: --no-autosquash::
When the commit log message begins with "squash! ..." or "fixup! ..." Automatically squash commits with specially formatted messages into
or "amend! ...", and there is already a commit in the todo list that previous commits being rebased. If a commit message starts with
matches the same `...`, automatically modify the todo list of "squash! ", "fixup! " or "amend! ", the remainder of the subject line
`rebase`, so that the commit marked for squashing comes right after is taken as a commit specifier, which matches a previous commit if it
the commit to be modified, and change the action of the moved commit matches the subject line or the hash of that commit. If no commit
from `pick` to `squash` or `fixup` or `fixup -C` respectively. A commit matches fully, matches of the specifier with the start of commit
matches the `...` if the commit subject matches, or if the `...` refers subjects are considered.
to the commit's hash. As a fall-back, partial matches of the commit
subject work, too. The recommended way to create fixup/amend/squash
commits is by using the `--fixup`, `--fixup=amend:` or `--fixup=reword:`
and `--squash` options respectively of linkgit:git-commit[1].
+ +
If the `--autosquash` option is enabled by default using the In the rebase todo list, the actions of squash, fixup and amend commits are
configuration variable `rebase.autoSquash`, this option can be changed from `pick` to `squash`, `fixup` or `fixup -C`, respectively, and they
used to override and disable this setting. are moved right after the commit they modify. The `--interactive` option can
be used to review and edit the todo list before proceeding.
+
The recommended way to create commits with squash markers is by using the
`--squash`, `--fixup`, `--fixup=amend:` or `--fixup=reword:` options of
linkgit:git-commit[1], which take the target commit as an argument and
automatically fill in the subject line of the new commit from that.
+
Settting configuration variable `rebase.autoSquash` to true enables
auto-squashing by default for interactive rebase. The `--no-autosquash`
option can be used to override that setting.
+ +
See also INCOMPATIBLE OPTIONS below. See also INCOMPATIBLE OPTIONS below.