`gh stack rebase -i` - allow interactive rebasing
- Dominant language
- Go
- Stars
- 1.5k
- Forks
- 70
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 7
Description
Support `-i` for rebasing stacks.
I ❤️ rebasing, and doing no-edit amends. When I do that in a branch low in the stack, the higher layers end up with "duplicate-ish" commits that conflict. The solution during a normal rebase is to drop that new duplicate. Here's an example
### Initial State
branch-a
`main -> commitA (111aaa)`
branch-b
`main -> commitA (111aaa) -> commitB (222bbb)`
### Change in `branch-a` and `git commit --amend`'d
if I go to `branch-a` and make a change using `git commit --amend` I'll end up with this:
branch-a
`main -> commitA (112aaa)`
branch-b
`main -> commitA (111aaa) -> commitB (222bbb)`
### Finally, rebasing `branch-b`
Then when `branch-b` gets rebased, it looks like this:
`main -> commitA (112aaa) -> commitA (111aaa) -> commitB (222bbb)`
Again, the solution is simply to `drop` `commitA (111aaa)`, as that's the old one.
But I can't do that with `gh stack rebase`.
Contributor guide
Research direction
Start at the `gh stack rebase` command and trace how its arguments are handled, then reproduce the stacked-branch example from the issue. The work is done when `gh stack rebase -i` launches interactive rebasing and allows the old duplicate commit to be dropped without producing the duplicate commit in the higher layer.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- git, go
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100