git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git history feedback

From
Patrick Steinhardt <ps@pks.im>
Date
Jun 4, 2026, 08:39 UTC
Message-ID
<aiE5w_8Oxv-I54zy@pks.im>
In-Reply-To
<87ecimhg8s.fsf@rasmusvillemoes.dk>
On Thu, Jun 04, 2026 at 10:17:07AM +0200, Rasmus Villemoes wrote:
Show 7 quoted lines
> Hi
> 
> As soon as I saw the announcement of 'git history', I knew that was
> something I was gonna use a lot. Especially the split functionality has
> always been somewhat of a hassle (at least for me) to do via an
> interactive rebase. I've played around with it a little, and it seems to
> work as it says on the tin.
Happy to hear!
Show 10 quoted lines
> So today I had occasion to put it to real use, and then I found two
> things I'd like to be able to do with it:
> 
> When a commit needs to be split into three or more commits, it is a
> little cumbersome to do iteratively, since the new commit to split
> obviously has a new sha, so one first has to figure out what that new id
> is and then do another "git history split". For higher values of "three"
> that becomes rather tedious. So it would be nice if there was an
> iterative mode, which after splitting off the first commit would
> automatically start again with the new child commit.

That's fair, and also something that was discussed when initially introducing the "split" subcommand. We don't have that mode right now, but I think it would make sense to maybe add a new option that makes us split repeatedly until all chunks have been exploded into separate commits.

Show 7 quoted lines
> If "git add -p" had an answer meaning "yes to this hunk and all
> following in this file and all remaining files as well", this could
> probably even be the default behaviour of "git history split", as it
> would just require that one extra answer to be given after the first
> commit is split off in order to keep the current behaviour. Otherwise,
> I'd also be happy to have "git history iter-split" or "git history split
> --iter" or any other spelling.

Yeah. From my perspective, having this available as an option would be the best path forward. But I'm also open to alternatives as you suggest.

Show 9 quoted lines
> The other thing I'd like is a sort of ultimate version of the above:
> What I needed in the concrete case at hand was actually to split two
> commit into n individual hunks each, then do an interactive rebase to combine
> those 2n commits to n commits (I had done changes "row-wise", but needed
> to change them to "column-wise"). For that, I would like to have had a
> completely automatic "git history atomize" that would split a commit
> into individual hunks, prefixing the commit subject with
> e.g. "[<filename> -- hunk #nn]". A subsequent 'git rebase -i' could then easily
> rearrange those and squash the related hunks.

It could easily be another option: `git history split --explode` for example, which seems to be a common term for such an operation.

Regarding the subsequent rebase: I have one more patch series cooking locally that implements `git history move` to move around commits, and I did have the plan to eventually also implement `git history squash` to squash commit A into commit B. But when handling many commits it might even be easier to use interactive rebases instead.

Well, unless we eventually maybe even get something like a graphical interface. I was playing around with a TUI interface for git-history(1) that lets you move commits around without the hassle of the command line. But that's certainly something that's still going to take a while to materialize, if it ever does.

Show 6 quoted lines
> Aside: are experimental commands eligible for teaching the completion
> logic about them? I.e., can we add a __git_history() to
> git-completion.bash? Aside from the obvious "let it know about existing
> subcommands", I'd love for "git history split <TAB>" to show the most
> recent ~20 (or something) commits in one-line format, stopping if
> there's a merge commit.

I just haven't gotten around to it yet. I'd certainly welcome the addition of command line completion.

Thanks for your feedback!
Patrick
Previous: Rasmus VillemoesNext: Kristoffer Haugsbakk
Message 2 of 3 in “git history feedback”
  1. Rasmus VillemoesJun 4, 2026
  2. Patrick SteinhardtJun 4, 2026
  3. Kristoffer HaugsbakkJun 4, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.