diff mbox series

[v5,6/6] doc/git-commit: add documentation for fixup=[amend|reword] options

Message ID 20210313134012.20658-7-charvi077@gmail.com (mailing list archive)
State New, archived
Headers show
Series commit: Implementation of "amend!" commit | expand

Commit Message

Charvi Mendiratta March 13, 2021, 1:40 p.m. UTC
Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Mentored-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Charvi Mendiratta <charvi077@gmail.com>
---
 Documentation/git-commit.txt | 45 +++++++++++++++++++++++++++++++-----
 Documentation/git-rebase.txt | 21 +++++++++--------
 2 files changed, 50 insertions(+), 16 deletions(-)

Comments

Eric Sunshine March 14, 2021, 1:10 a.m. UTC | #1
On Sat, Mar 13, 2021 at 8:43 AM Charvi Mendiratta <charvi077@gmail.com> wrote:
> Helped-by: Junio C Hamano <gitster@pobox.com>
> Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
> Signed-off-by: Charvi Mendiratta <charvi077@gmail.com>

It may have been more accurate to retain the Helped-by: with my name
while adding the Signed-off-by: (which I offered in case you
incorporated my significant rewrites), rather than replacing the
Helped-by: altogether. Not worth a re-roll, though.

> diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
> @@ -86,11 +86,44 @@ OPTIONS
> +--fixup=[(amend|reword):]<commit>::
> +       Create a new commit which "fixes up" `<commit>` when applied with
> +       `git rebase --autosquash`. Plain `--fixup=<commit>` creates a
> +       "fixup!" commit which changes the content of `<commit>` but leaves
> +       its log message untouched. `--fixup=amend:<commit>` is similar but
> +       creates an "amend!" commit which also replaces the log message of
> +       `<commit>` with the log message of the "amend!" commit.
> +       `--fixup=reword:<commit>` creates an "amend!" commit which
> +       replaces the log message of `<commit>` with its own log message
> +       but makes no changes to the content of `<commit>`.
> ++
> +The commit created by plain `--fixup=<commit>` has a subject
> +composed of "fixup!" followed by the subject line from <commit>,
> +and is recognized specially by `git rebase --autosquash`. The `-m`
> +option may be used to supplement the log message of the created
> +commit, but the additional commentary will be thrown away once the
> +"fixup!" commit is squashed into `<commit>` by
> +`git rebase --autosquash`.
> ++
> +The commit created by `--fixup=amend:<commit>` is similar but its
> +subject is instead prefixed with "amend!". The log message of
> +<commit> is copied into the log message of the "amend!" commit and
> +opened in an editor so it can be refined. When `git rebase
> +--autosquash` squashes the "amend!" commit into `<commit>`, the
> +log message of `<commit>` is replaced by the refined log message
> +from the "amend!" commit. It is an error for the "amend!" commit's
> +log message to be empty unless `--allow-empty-message` is
> +specified.
> ++
> +`--fixup=reword:<commit>` is shorthand for `--fixup=amend:<commit>
> +--only`. It creates an "amend!" commit with only a log message
> +(ignoring any changes staged in the index). When squashed by `git
> +rebase --autosquash`, it replaces the log message of `<commit>`
> +without making any other changes.
> ++
> +Neither "fixup!" nor "amend!" commits change authorship of
> +`<commit>` when applied by `git rebase --autosquash`.
> +See linkgit:git-rebase[1] for details.

I see that you took my entire rewrite verbatim. That's fine. My bias
is probably showing, but I do now find this documentation patch easier
to understand.

Thanks.
Charvi Mendiratta March 14, 2021, 1:57 p.m. UTC | #2
On Sun, 14 Mar 2021 at 06:40, Eric Sunshine <sunshine@sunshineco.com> wrote:
>
> On Sat, Mar 13, 2021 at 8:43 AM Charvi Mendiratta <charvi077@gmail.com> wrote:
> > Helped-by: Junio C Hamano <gitster@pobox.com>
> > Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
> > Signed-off-by: Charvi Mendiratta <charvi077@gmail.com>
>
> It may have been more accurate to retain the Helped-by: with my name
> while adding the Signed-off-by: (which I offered in case you
> incorporated my significant rewrites), rather than replacing the
> Helped-by: altogether. Not worth a re-roll, though.
>

Okay I will add that too, thanks.
diff mbox series

Patch

diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index 17150fa7ea..3c69f461c9 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -9,7 +9,7 @@  SYNOPSIS
 --------
 [verse]
 'git commit' [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]
-	   [--dry-run] [(-c | -C | --fixup | --squash) <commit>]
+	   [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|reword):]<commit>)]
 	   [-F <file> | -m <msg>] [--reset-author] [--allow-empty]
 	   [--allow-empty-message] [--no-verify] [-e] [--author=<author>]
 	   [--date=<date>] [--cleanup=<mode>] [--[no-]status]
@@ -86,11 +86,44 @@  OPTIONS
 	Like '-C', but with `-c` the editor is invoked, so that
 	the user can further edit the commit message.
 
---fixup=<commit>::
-	Construct a commit message for use with `rebase --autosquash`.
-	The commit message will be the subject line from the specified
-	commit with a prefix of "fixup! ".  See linkgit:git-rebase[1]
-	for details.
+--fixup=[(amend|reword):]<commit>::
+	Create a new commit which "fixes up" `<commit>` when applied with
+	`git rebase --autosquash`. Plain `--fixup=<commit>` creates a
+	"fixup!" commit which changes the content of `<commit>` but leaves
+	its log message untouched. `--fixup=amend:<commit>` is similar but
+	creates an "amend!" commit which also replaces the log message of
+	`<commit>` with the log message of the "amend!" commit.
+	`--fixup=reword:<commit>` creates an "amend!" commit which
+	replaces the log message of `<commit>` with its own log message
+	but makes no changes to the content of `<commit>`.
++
+The commit created by plain `--fixup=<commit>` has a subject
+composed of "fixup!" followed by the subject line from <commit>,
+and is recognized specially by `git rebase --autosquash`. The `-m`
+option may be used to supplement the log message of the created
+commit, but the additional commentary will be thrown away once the
+"fixup!" commit is squashed into `<commit>` by
+`git rebase --autosquash`.
++
+The commit created by `--fixup=amend:<commit>` is similar but its
+subject is instead prefixed with "amend!". The log message of
+<commit> is copied into the log message of the "amend!" commit and
+opened in an editor so it can be refined. When `git rebase
+--autosquash` squashes the "amend!" commit into `<commit>`, the
+log message of `<commit>` is replaced by the refined log message
+from the "amend!" commit. It is an error for the "amend!" commit's
+log message to be empty unless `--allow-empty-message` is
+specified.
++
+`--fixup=reword:<commit>` is shorthand for `--fixup=amend:<commit>
+--only`. It creates an "amend!" commit with only a log message
+(ignoring any changes staged in the index). When squashed by `git
+rebase --autosquash`, it replaces the log message of `<commit>`
+without making any other changes.
++
+Neither "fixup!" nor "amend!" commits change authorship of
+`<commit>` when applied by `git rebase --autosquash`.
+See linkgit:git-rebase[1] for details.
 
 --squash=<commit>::
 	Construct a commit message for use with `rebase --autosquash`.
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index 8bfa5a9272..f08ae27e2a 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -593,16 +593,17 @@  See also INCOMPATIBLE OPTIONS below.
 
 --autosquash::
 --no-autosquash::
-	When the commit log message begins with "squash! ..." (or
-	"fixup! ..."), and there is already a commit in the todo list that
-	matches the same `...`, automatically modify the todo list of rebase
-	-i so that the commit marked for squashing comes right after the
-	commit to be modified, and change the action of the moved commit
-	from `pick` to `squash` (or `fixup`).  A commit matches the `...` if
-	the commit subject matches, or if the `...` refers to the commit's
-	hash. As a fall-back, partial matches of the commit subject work,
-	too.  The recommended way to create fixup/squash commits is by using
-	the `--fixup`/`--squash` options of linkgit:git-commit[1].
+	When the commit log message begins with "squash! ..." or "fixup! ..."
+	or "amend! ...", and there is already a commit in the todo list that
+	matches the same `...`, automatically modify the todo list of
+	`rebase -i`, so that the commit marked for squashing comes right after
+	the commit to be modified, and change the action of the moved commit
+	from `pick` to `squash` or `fixup` or `fixup -C` respectively. A commit
+	matches the `...` if the commit subject matches, or if the `...` refers
+	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
 configuration variable `rebase.autoSquash`, this option can be