All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: Tian Yuchen <cat@malon.dev>
Cc: git@vger.kernel.org, Elijah Newren <newren@gmail.com>
Subject: Re: [PATCH 0/2] builtin/history: introduce "fixup" subcommand
Date: Thu, 23 Apr 2026 08:55:19 +0200	[thread overview]
Message-ID: <aenCV2w4qzGj5t-8@pks.im> (raw)
In-Reply-To: <d2b19306-71e9-4e17-a0c0-83309a00bd45@malon.dev>

On Thu, Apr 23, 2026 at 02:18:16AM +0800, Tian Yuchen wrote:
> Hi Patrick,
> 
> On 4/22/26 18:28, Patrick Steinhardt wrote:
> 
> > Hi,
> > 
> > this short patch series introduces a new "fixup" subcommand. This
> > command is the first one that I felt is missing in my day to day work,
> > as I end up doing fixup commits quite often.
> > 
> > The flow is rather simple: the user stages some changes, and then they
> > execute `git history fixup <commit>` to amend those changes to the given
> > commit. As with the other subcommands, dependent branches will then be
> > rebased automatically.
> > 
> > This is the first command that may result in merge conflicts. For now we
> > simply abort in such cases, but there are plans to introduce first-class
> > conflicts into Git. So once we have them, we'll also be able to handle
> > such cases more gracefully. I still think that the command is useful
> > even without that conflict handling.
> 
> Thank you for developing this feature. Godsend for lazy people like me ;)
> 
> Nevertheless, I seem to have come across what appears to be a bug. I carried
> out the following steps:
> 
> 	create a.txt -> git add -> git commit -m "base" ->
> 
> 	create b.txt -> git add -> git commit -m "feature" ->
> 
> 	create c.txt -> git add -> git commit -m "tip" ->
> 
> 	rm b.txt -> git add ->
> 
> 	git history fixup HEAD~ ->
> 
> 	git log --oneline --stat...
> 
> And the output looks like:
> 
> 	3096a65 (HEAD -> master) tip
> 	 c.txt | 1 +
> 	 1 file changed, 1 insertion(+)
> 	699f610 feature
> 	0be07e6 base
> 	 a.txt | 1 +
>  	1 file changed, 1 insertion(+)
> 
> More specifically, the output of
> 
> 	git show HEAD~
> 
> is:
> 
> 	Author: Tian Yuchen <cat@malon.dev>
> 	Date:   Thu Apr 23 01:57:17 2026 +0800
> 
>  	   feature
> 
> which is an empty commit. Is it what we expect to see? Sorry that I don't
> have enough time to look at the code in detail :P

I guess the answer is "maybe". I think it would most sense if we had the
equivalent of `--empty=(drop|keep|stop)` that we also have in
git-rebase(1).

Thanks!

Patrick

  reply	other threads:[~2026-04-23  6:55 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-22 10:28 [PATCH 0/2] builtin/history: introduce "fixup" subcommand Patrick Steinhardt
2026-04-22 10:28 ` [PATCH 1/2] builtin/history: generalize function to commit trees Patrick Steinhardt
2026-04-22 10:28 ` [PATCH 2/2] builtin/history: introduce "fixup" subcommand Patrick Steinhardt
2026-04-22 19:06   ` D. Ben Knoble
2026-04-23  6:55     ` Patrick Steinhardt
2026-04-23 21:18       ` D. Ben Knoble
2026-04-24  6:53         ` Patrick Steinhardt
2026-04-24 14:43           ` D. Ben Knoble
2026-04-22 18:18 ` [PATCH 0/2] " Tian Yuchen
2026-04-23  6:55   ` Patrick Steinhardt [this message]
2026-04-23 14:21 ` [PATCH v2 0/3] " Patrick Steinhardt
2026-04-23 14:21   ` [PATCH v2 1/3] replay: allow callers to control what happens with empty commits Patrick Steinhardt
2026-04-23 14:21   ` [PATCH v2 2/3] builtin/history: generalize function to commit trees Patrick Steinhardt
2026-04-23 14:21   ` [PATCH v2 3/3] builtin/history: introduce "fixup" subcommand Patrick Steinhardt
2026-04-27  5:53 ` [PATCH v3 0/3] " Patrick Steinhardt
2026-04-27  5:53   ` [PATCH v3 1/3] replay: allow callers to control what happens with empty commits Patrick Steinhardt
2026-05-12  4:51     ` Junio C Hamano
2026-04-27  5:53   ` [PATCH v3 2/3] builtin/history: generalize function to commit trees Patrick Steinhardt
2026-04-27  5:53   ` [PATCH v3 3/3] builtin/history: introduce "fixup" subcommand Patrick Steinhardt
2026-05-12  5:47   ` [PATCH v3 0/3] " Junio C Hamano
2026-05-12  6:41     ` Patrick Steinhardt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aenCV2w4qzGj5t-8@pks.im \
    --to=ps@pks.im \
    --cc=cat@malon.dev \
    --cc=git@vger.kernel.org \
    --cc=newren@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.