github / github/gh-stack

`gh stack rebase -i` - allow interactive rebasing

Open
#151 2 comments 0 reactions 0 assignees View on GitHub
feature request topic: cli - rebase
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.