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

Programmatically edit the git rebase sequence?

From
MBMatthias Beyer <mail@beyermatthias.de>
Date
Jul 3, 2026, 12:02 UTC
Message-ID
<akei64goQf3nFhX4@hikari>
Hi git people,

in a recent conversation at work, the question of how to programmatically edit the git-rebase sequence came up.

Example use case:

I have a branch that touches a number of files, adds some files and removes some files. When rebasing, I want to split all commits that touched a certain subset of files, for the clearity of the history.

I look at the output of
    git log master..mybranch --oneline --diff-filter=M -- "./subdir/*.rs"

to find all commits in that subdir that only touched the files. All of these commits are to be "edit"ed.

Now I fire up `git rebase -i master` and manually(!) match the list from above `git-log` call and find the respective commits to edit them.

Is there a way I am not aware of to do that manual step programatically? Something like

    git rebase -i master --edit-commits="$(git log master..mybranch --diff-filter=M --format="%H" -- "./subdir/*.rs")"

would be convenient here, although I would understand if that is too much clutter for the already very heavy git CLI interface :-)

Maybe I am just not aware of the obvious solution - I would be happy to learn that there is already one!

Best, Matthias

Next: Michal Suchánek
Message 1 of 6 in “Programmatically edit the git rebase sequence?”
  1. Matthias BeyerJul 3, 2026
  2. Michal SuchánekJul 3, 2026
  3. brian m. carlsonJul 3, 2026
  4. Matt HunterJul 3, 2026
  5. D. Ben KnobleJul 3, 2026
  6. Johannes SchindelinJul 8, 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.